Subject: making pitch shifter work realtime
From: janne halttunen (jhalttun_AT_pp.htv.fi)
Date: Fri Aug 15 2003 - 21:02:43 EEST
been thinking about having a player-system with pitch shifting ability. currently it can't be done with ecasound, because the effect cannot handle realtime output audiodevices. ofcourse the pitch shifting could be done with a wrapper in python. but since the effect is already present in ecasound, it would propably just be better to fix that.
earlier there was talk that this was not going to be an easy task. particularly for jack output. this is propably because jack needs a certain amount of bytes per engine iteration, and those bytes cannot be cued. so when jack needs it's 512 (or whatever) bytes, a different amount of bytes must be read, depending on the current value of the parameter of pitch shifter chainoperator.
so, the trouble is then to pass this information, if it's readily available, from the effect subsystem to the engine. nowdays ecasound uses libresample library for the pitch shifter. is there a function for querying needed amount of bytes in that? in ecaengine then the buffers need be atleast doubled or better quadrupled for insaneous speeds we're going to go with pitch shifter. few kilos of extra memory is nothing, right?
ofcourse there can be and propably are some nasty assumptions of buffersize remaining constant, and actions taken based upon those assumptions. so there would need to be separation of querying input and output buffersizes. input buffersize would be based on current chains pitch.
then there is realtime inputs, for which speed shifting is not possible. for these a message explaining the absurdity of suggested shifting would be in place.
anything else? is there a way to start fixing this?
This archive was generated by hypermail 2b28 : Fri Aug 15 2003 - 20:58:37 EEST