hi,
i made a small and very limited patch that uses 32 filters to slice the sound by frequency ranges and then re-synthetize it with 32 oscillators.
it sounds quite ok but i'd like to change dynamically the number of filters ( which is now hard-coded to 32 ).
this would require a real maestria in dynamic patch creation that i'm not sure to have right now.
also, this would be a good test for dynamic creation stability.
so, i'd be pleased if someone would take the time to improve this little tool or give me hints.
the main patch is "test-banks.pd"
cheers,
yves/
this is really quite fun, but where do you get the [spigot~] object? i've been searching all over and can't find it.
-Josh
On Thu, 2002-05-23 at 14:56, Yves Degoyon wrote:
hi,
i made a small and very limited patch that uses 32 filters to slice the sound by frequency ranges and then re-synthetize it with 32 oscillators.
it sounds quite ok but i'd like to change dynamically the number of filters ( which is now hard-coded to 32 ).
this would require a real maestria in dynamic patch creation that i'm not sure to have right now.
also, this would be a good test for dynamic creation stability.
so, i'd be pleased if someone would take the time to improve this little tool or give me hints.
the main patch is "test-banks.pd"
cheers,
yves/
ooopsy !!! spigot~ is one of mines [ unreleased ] ...
i just put it on my page.. at the end ... in "Utilities" section.
sorry.
yves
Joschi wrote:
this is really quite fun, but where do you get the [spigot~] object? i've been searching all over and can't find it.
-Josh
On Thu, 2002-05-23 at 14:56, Yves Degoyon wrote:
hi,
i made a small and very limited patch that uses 32 filters to slice the sound by frequency ranges and then re-synthetize it with 32 oscillators.
it sounds quite ok but i'd like to change dynamically the number of filters ( which is now hard-coded to 32 ).
this would require a real maestria in dynamic patch creation that i'm not sure to have right now.
also, this would be a good test for dynamic creation stability.
so, i'd be pleased if someone would take the time to improve this little tool or give me hints.
the main patch is "test-banks.pd"
cheers,
yves/
thanks, i thought i was going crazy :) i also just discovered that unfortunately google likes to strip out ~'s which makes it much harder to search for "spigot~" as opposed to "spigot" :)
this is a neat kind of distortion, i would be curious to hear it with say 64 or 128 filters in the sci-fi future.
-Josh
On Thu, 2002-05-23 at 16:15, Yves Degoyon wrote:
ooopsy !!! spigot~ is one of mines [ unreleased ] ...
i just put it on my page.. at the end ... in "Utilities" section.
sorry.
yves
Joschi wrote:
this is really quite fun, but where do you get the [spigot~] object? i've been searching all over and can't find it.
-Josh
On Thu, 2002-05-23 at 14:56, Yves Degoyon wrote:
hi,
i made a small and very limited patch that uses 32 filters to slice the sound by frequency ranges and then re-synthetize it with 32 oscillators.
it sounds quite ok but i'd like to change dynamically the number of filters ( which is now hard-coded to 32 ).
this would require a real maestria in dynamic patch creation that i'm not sure to have right now.
also, this would be a good test for dynamic creation stability.
so, i'd be pleased if someone would take the time to improve this little tool or give me hints.
the main patch is "test-banks.pd"
cheers,
yves/
Joschi wrote:
this is a neat kind of distortion, i would be curious to hear it with say 64 or 128 filters in the sci-fi future.
once it will get dynamic, you'll be able to hear it but the risk is to hit the CPU's limit... so maybe you won't hear 128 at all !!
anyway, there's a long way to go before dynamic version will be made available.
cheers,
yves
Hi, Joschi hat gesagt: // Joschi wrote:
this is really quite fun, but where do you get the [spigot~] object? i've been searching all over and can't find it.
I also have made a spigot~, the principle is really easy, as shown in the attached patch, but there's room for improvement, for example with a line~ to avoid clicks. ciao,
I modified pa_mac_core.c (4/12/02 version) in portaudio (V18) to get full-duplex using USB iMic on pd.
Although one can get full-duplex using Built-in audio because it appears as one CoreAudio device, iMic, for example, is mapped to two CoreAudio devices.
Main modifications:
Start (and stop) a second IOProc when there are two different CoreAudio devices. (Even two different physical devices, I can get input from iMic and output on Built-in speakers.)
In the IOProc (actually Pa_TimeSlice) use mNumberBuffers instead of past_NumOutputChannels to determine if this is for output or input.
Note: it's tested only with iMic and pd-0.35-test23 (G4 laptop).
The diff file is provided below (patch pa_mac_core.c diff).
Ich
================================================= Ichiro Fujinaga (ich@jhu.edu) Computer Music Department Peabody Institute of the Johns Hopkins University 1 E. Mount Vernon Place, Baltimore MD USA 21202 Voice: (410) 659-8100 x1240 Fax: (410) 783-8592 http://www.peabody.jhu.edu/~ich =================================================
656c656,657
// if( past->past_NumOutputChannels > 0 ) IF if( outOutputData->mNumberBuffers > 0 )
662c663,664
// if( past->past_NumInputChannels > 0 ) IF if( inInputData->mNumberBuffers > 0 )
668a671
712c715
//printf("Num input Buffers: %d; Num output Buffers: %d.\n", inInputData->mNumberBuffers, outOutputData->mNumberBuffers);
974a978
#if 0 // checking diabled IF
987c991
#endif
1050a1055,1070
// IF start - code added if (pahsc->pahsc_AudioDeviceID != sDeviceInfos[past->past_OutputDeviceID].audioDeviceID) {
AudioDeviceID outputDeviceID = sDeviceInfos[past->past_OutputDeviceID].audioDeviceID; // Assumes output device since pahsc->pahsc_AudioDeviceID is set as inputdevice last in PaHost_OpenStream()// Associate an IO proc with the device and pass a pointer to the audio data context err = AudioDeviceAddIOProc(outputDeviceID, (AudioDeviceIOProc)appIOProc, past); if (err != noErr) goto error; // start playing sound through the device err = AudioDeviceStart(outputDeviceID, (AudioDeviceIOProc)appIOProc); if (err != noErr) goto error; }
// IF end
1085a1106,1115
if (pahsc->pahsc_AudioDeviceID != sDeviceInfos[past->past_OutputDeviceID].audioDeviceID) { // stop if second IOProc was started IF AudioDeviceID outputDeviceID = sDeviceInfos[past->past_OutputDeviceID].audioDeviceID; // FIXME - we should ask proc to stop instead of stopping abruptly err = AudioDeviceStop(outputDeviceID, (AudioDeviceIOProc)appIOProc); if (err != noErr) goto Bail; err = AudioDeviceRemoveIOProc(outputDeviceID, (AudioDeviceIOProc)appIOProc); if (err != noErr) goto Bail; }
hi yves, first thing i saw is, that there are two outlets of oscibank~ one laying on the other and only one is connected. to make it dynamically you can use messages. if you have an abstraction, that contains the filter and osc of one slice ("abstraction-slice) than you can use a messge like [;pd-test-banks.pd obj 50 50 abstraction-slice $1 $2( to create it in the patch. 50 50 is the position, $1 $2 could be arguments for eg. the ID and the frequencyband of the slice. inside the abstraction you can work with send~ receive~ catch~ and throw~. so you donŽt need any connection-chords and it is independent from the number of abstractions. when you build the abstractions there has to be the algorithm to tell the message the arguments of each abstraction. (if there are 32 filters, then the args for abstraction number 1, 2, 3, 4, ... are bla bla bla, ...) the dynamically deleting is not working with messages under windows, but iŽm shure it is working under linux (find, cut). and then, my last point, i saw that you are multiplying the osc~ with the inlet~ (which is the audio-signal of the slice). that is a kind of ring-modulation. is that what you wanted to resynthetize? maybe this helps, if it is not clear what iŽm saying please tell me i will take the time and try to express myself in better words. marius.
----- Original Message ----- From: "Yves Degoyon" ydegoyon@free.fr To: pd-list@iem.kug.ac.at Sent: Thursday, May 23, 2002 11:56 PM Subject: [PD] About dynamic patches
hi,
i made a small and very limited patch that uses 32 filters to slice the sound by frequency ranges and then re-synthetize it with 32 oscillators.
it sounds quite ok but i'd like to change dynamically the number of filters ( which is now hard-coded to 32 ).
this would require a real maestria in dynamic patch creation that i'm not sure to have right now.
also, this would be a good test for dynamic creation stability.
so, i'd be pleased if someone would take the time to improve this little tool or give me hints.
the main patch is "test-banks.pd"
cheers,
yves/
sme wrote:
hi yves, first thing i saw is, that there are two outlets of oscibank~ one laying on the other and only one is connected. to make it dynamically you can use messages.
that was a cut&paste mistake...
if you have an abstraction, that contains the filter and osc of one slice ("abstraction-slice) than you can use a messge like [;pd-test-banks.pd obj 50 50 abstraction-slice $1 $2( to create it in the patch. 50 50 is the position, $1 $2 could be arguments for eg. the ID and the frequencyband of the slice. inside the abstraction you can work with send~ receive~ catch~ and throw~. so you donŽt need any connection-chords and it is independent from the number of abstractions. when you build the abstractions there has to be the algorithm to tell the message the arguments of each abstraction. (if there are 32 filters, then the args for abstraction number 1, 2, 3, 4, ... are bla bla bla, ...) the dynamically deleting is not working with messages under windows, but iŽm shure it is working under linux (find, cut).
good start, doesn't "cut" crashes sometimes ??? ( from my memory of a former thread )
and then, my last point, i saw that you are multiplying the osc~ with the inlet~ (which is the audio-signal of the slice). that is a kind of ring-modulation. is that what you wanted to resynthetize.
no, that patch is a filter bank/oscillator bank resynthesis but the number of oscillators (32) is much too low to have a real resynthesis.
cheers,
yves