|
From: Kees v. V. <kee...@gm...> - 2010-01-13 08:40:22
|
Hi, I've joined the mailing list because of topic http://ardour.org/node/3016 concerning Ardour export with Jamin as an insert on the master bus, which (on all Ubuntu versions I've tried: Hardy, Jaunty and Karmic) causes Jamin to abort mostly at the very end of the export. I have no problem with running Jamin as an insert in 'normal' mode. When debugging I found that the condition upon a Jack ringbuffer write of io_queue() in io.c, causes Jamin to panic and abort() when the number of bytes to write does not correspond to the bytes written. I am not familiar with audio programming, so I maybe completely off track, but I wondered why Jamin doesn't do a retry. For normal operation (as I gather from the comment before the abort()) that would probably not be a good idea, but when Ardour exports it goes into freewheeling mode, and I gather that in that case 'different rules' apply, i.e. Jack tries to run as fast as it can, but it waits for children to complete their task, if I'm phrasing that correctly. I fiddled around with retrying to write the remaining bytes to the ring buffer (in freewheeling mode), and from the several times I've tried it, it seems to work properly, i.e. Jamin does not abort and eventually succeeds in writing all the bytes to the ring buffer, without (to me) audible effects in the export. I've attached the io.c diff to the latest CVS tree. From the Ardour forum I was told that I could get away with it, but I was solving the problem by the wrong means, which very well may be true. This problem seems to have been around for quite some time, and keeps being reported. Would be nice to get that fixed. Could any of you comment or help me in the right direction ? Regards, Kees |