|
View:
New views
5 Messages
—
Rating Filter:
Alert me
|
|
|
VocodersHi all,
I am searching a vocoder plugin for SuperCollider 3. May you advise me ? Where can I find some examples to use it ? Thank you Didier Rano _______________________________________________ sc-users mailing list sc-users@... http://www.create.ucsb.edu/mailman/listinfo/sc-users |
|
|
Re: Vocodershi
vocoder is very simple. it did it with this code: s = 0; 15.do ({arg i; x = HPF.ar(LPF.ar(y,75*(1.5**i)),50*(1.5**i)); z = HPF.ar(LPF.ar(l,75*(1.5**i)),50*(1.5**i)); z = PeakFollower.ar(z, 0.5); x = x*z; s = s+x; }); y is the audiosignal that u want to modify, and l is the audiosignal you want to analyse. they are split in 15 bands. s contains the output. greez hans > Hi all, > > I am searching a vocoder plugin for SuperCollider 3. May you advise me ? > Where can I find some examples to use it ? > > Thank you > > Didier Rano > _______________________________________________ > sc-users mailing list > sc-users@... > http://www.create.ucsb.edu/mailman/listinfo/sc-users > _______________________________________________ sc-users mailing list sc-users@... http://www.create.ucsb.edu/mailman/listinfo/sc-users |
|
|
Re: VocodersEven easier is to use BPF instead of a LPF --> HPF pair. Then you have control over the bandwidth. I've found amplitude control to be tough -- with a narrower bandwidth, you get a cooler, more robotic sound but since you're filtering out most of the sound's energy, the amplitude winds up very low. I tried a bunch of things to adjust it automatically but nothing worked well -- so I just added an amp argument to the synthdef and set it as high as needed (sometimes 100 or more). Also you can make the code easier to read using multichannel expansion. This is my vocoder. Note that I use a function to be able to generate a new synthdef if I need to use it on a 2+ channel signal. ( var makeVocoderDef = { |numbands = 20, inChannels = 1, lowBand = 100, hiBand = 10000| SynthDef(\vocoder, { |inbus, vocbus, rq = 0.07, amp = 1| var sig, centerFreqs, splitFilt, bandamps; var sig2, inSplit; // analysis phase sig = In.ar(vocbus, 1); centerFreqs = Array.geom(numbands, lowBand, (hiBand / lowBand) ** (numbands-1).reciprocal); splitFilt = BPF.ar(sig, centerFreqs, rq); bandamps = Amplitude.ar(splitFilt); // resynthesis phase sig2 = In.ar(inbus, inChannels); inSplit = sig2.asArray.collect({ |channel| BPF.ar(channel, centerFreqs, rq, bandamps) }); Mix.ar(inSplit.flop) * amp }); }; makeVocoderDef.value.send(s); ) hjh On Jan 13, 2007, at 2:41 PM, hans wrote:
: H. James Harkins : http://www.dewdrop-world.net .::!:.:.......:.::........:..!.::.::...:..:...:.:.:.:..: "Come said the Muse, Sing me a song no poet has yet chanted, Sing me the universal." -- Whitman _______________________________________________ sc-users mailing list sc-users@... http://www.create.ucsb.edu/mailman/listinfo/sc-users |
|
|
Re: Vocodersisn't there a Vocoder ugen (Vocoder.ar) in the Wesleyan distro?
you can specify how many bands there are as one of the bands S
|
|
|
Re: VocodersIn my lib (which is in the Wesleyan build) there is a Vocoder class
(that I think was originally put together by me, Wyatt Fletcher and Don Craig in SC2), as well as a Vocode class similar to what James Harkins posted earlier... Josh On Jan 15, 2007, at 2:06 AM, boonier wrote: > > isn't there a Vocoder ugen (Vocoder.ar) in the Wesleyan distro? > > you can specify how many bands there are as one of the bands > > S > > > James Harkins-2 wrote: >> >> Even easier is to use BPF instead of a LPF --> HPF pair. Then you >> have control over the bandwidth. >> >> I've found amplitude control to be tough -- with a narrower >> bandwidth, you get a cooler, more robotic sound but since you're >> filtering out most of the sound's energy, the amplitude winds up very >> low. I tried a bunch of things to adjust it automatically but nothing >> worked well -- so I just added an amp argument to the synthdef and >> set it as high as needed (sometimes 100 or more). >> >> Also you can make the code easier to read using multichannel >> expansion. >> >> This is my vocoder. Note that I use a function to be able to generate >> a new synthdef if I need to use it on a 2+ channel signal. >> >> ( >> var makeVocoderDef = { |numbands = 20, inChannels = 1, lowBand = 100, >> hiBand = 10000| >> SynthDef(\vocoder, { |inbus, vocbus, rq = 0.07, amp = 1| >> var sig, centerFreqs, splitFilt, bandamps; >> var sig2, inSplit; >> // analysis phase >> sig = In.ar(vocbus, 1); >> centerFreqs = Array.geom(numbands, lowBand, (hiBand / lowBand) ** >> (numbands-1).reciprocal); >> splitFilt = BPF.ar(sig, centerFreqs, rq); >> bandamps = Amplitude.ar(splitFilt); >> >> // resynthesis phase >> sig2 = In.ar(inbus, inChannels); >> inSplit = sig2.asArray.collect({ |channel| BPF.ar(channel, >> centerFreqs, rq, bandamps) }); >> Mix.ar(inSplit.flop) * amp >> }); >> }; >> >> makeVocoderDef.value.send(s); >> ) >> >> hjh >> >> On Jan 13, 2007, at 2:41 PM, hans wrote: >> >>> hi >>> >>> vocoder is very simple. it did it with this code: >>> >>> >>> >>> s = 0; >>> >>> 15.do ({arg i; >>> x = HPF.ar(LPF.ar(y,75*(1.5**i)),50*(1.5**i)); >>> z = HPF.ar(LPF.ar(l,75*(1.5**i)),50*(1.5**i)); >>> z = PeakFollower.ar(z, 0.5); >>> x = x*z; >>> s = s+x; }); >>> >>> >>> y is the audiosignal that u want to modify, and l is the >>> audiosignal you >>> want to analyse. they are split in 15 bands. s contains the output. >>> >>> greez hans >> >> >> : H. James Harkins >> : jamshark70@... >> : http://www.dewdrop-world.net >> .::!:.:.......:.::........:..!.::.::...:..:...:.:.:.:..: >> >> "Come said the Muse, >> Sing me a song no poet has yet chanted, >> Sing me the universal." -- Whitman >> >> >> _______________________________________________ >> sc-users mailing list >> sc-users@... >> http://www.create.ucsb.edu/mailman/listinfo/sc-users >> >> > > -- > View this message in context: http://www.nabble.com/Vocoders- > tf2972262.html#a8369161 > Sent from the Supercollider - User mailing list archive at Nabble.com. > > _______________________________________________ > sc-users mailing list > sc-users@... > http://www.create.ucsb.edu/mailman/listinfo/sc-users ****************************************** Joshua D. Parmenter http://www.realizedsound.net/josh/ “Every composer – at all times and in all cases – gives his own interpretation of how modern society is structured: whether actively or passively, consciously or unconsciously, he makes choices in this regard. He may be conservative or he may subject himself to continual renewal; or he may strive for a revolutionary, historical or social palingenesis." - Luigi Nono _______________________________________________ sc-users mailing list sc-users@... http://www.create.ucsb.edu/mailman/listinfo/sc-users |
| Free embeddable forum powered by Nabble | Forum Help |