2017-04-13 19:25 GMT-03:00 JTG III jordanthomasgibbonsiii@gmail.com:
Chant was the program that implemented Fof synthesis, both developed at IRCAM in the late 70's/early 80's or thereabouts. I haven't used SC in a long time, and now I'm unsure about those ugens. Also, a quick search for anything on the "filter version" of FOF didn't seem to bring anything up, but there's an article in this anthology of early eighties Computer Music Journal articles that I have at home which at least mentions it, I think. I can check when I get home, or you can find it on Sci-Hub.
"Formlet", the "FOF-like filter", is just a resonant filter with an attack/decay envelope. I was able to replicate it. Though I get the idea that the fof-filter thingy is based on a bank of such filters, huh? "Formant", on the other hand, is described as an "oscillator", it "generates a set of harmonics around a formant frequency at a given fundamental frequency", has parameters for fundamental frequency, formant frequency and bandwidth of the formant frequency.
I'm really curious on how to implement it as a pd patch ;) - but I don't think I've seen anything like it in the Pd world.
cheers
BTW, here's an excerpt from Formant's code, found in here https://github.com/supercollider/supercollider/blob/772bdd6946a7253390ba0b1b23eb3adc0acb97ea/server/plugins/OscUGens.cpp#L2451 from line 2451
LOOP1(inNumSamples, if (phase3 < onecyc13) { ZXP(out) = (*(float*)((char*)sine + (((phase3 + tqcyc13) >> xlobits) & xlomask13)) + 1.f) * *(float*)((char*)sine + ((phase2 >> xlobits) & xlomask13)); phase3 += formfreq; } else { ZXP(out) = 0.f; } phase1 += freq1; phase2 += freq2; if (phase1 > onecyc13) { phase1 -= onecyc13; phase2 = phase1 * freq2 / freq1; phase3 = phase1 * freq3 / freq1; } );
2017-04-13 21:15 GMT-03:00 Alexandre Torres Porres porres@gmail.com:
2017-04-13 19:25 GMT-03:00 JTG III jordanthomasgibbonsiii@gmail.com:
Chant was the program that implemented Fof synthesis, both developed at IRCAM in the late 70's/early 80's or thereabouts. I haven't used SC in a long time, and now I'm unsure about those ugens. Also, a quick search for anything on the "filter version" of FOF didn't seem to bring anything up, but there's an article in this anthology of early eighties Computer Music Journal articles that I have at home which at least mentions it, I think. I can check when I get home, or you can find it on Sci-Hub.
"Formlet", the "FOF-like filter", is just a resonant filter with an attack/decay envelope. I was able to replicate it. Though I get the idea that the fof-filter thingy is based on a bank of such filters, huh? "Formant", on the other hand, is described as an "oscillator", it "generates a set of harmonics around a formant frequency at a given fundamental frequency", has parameters for fundamental frequency, formant frequency and bandwidth of the formant frequency.
I'm really curious on how to implement it as a pd patch ;) - but I don't think I've seen anything like it in the Pd world.
cheers
checking Csound's fof opcode, formant really seems like a version of it
2017-04-14 1:55 GMT-03:00 Alexandre Torres Porres porres@gmail.com:
BTW, here's an excerpt from Formant's code, found in here https://github.com/supercollider/supercollider/blob/772bdd6946a7253390ba0b1b23eb3adc0acb97ea/server/plugins/OscUGens.cpp#L2451 from line 2451
LOOP1(inNumSamples, if (phase3 < onecyc13) { ZXP(out) = (*(float*)((char*)sine + (((phase3 + tqcyc13) >> xlobits) & xlomask13)) + 1.f) * *(float*)((char*)sine + ((phase2 >> xlobits) & xlomask13)); phase3 += formfreq; } else { ZXP(out) = 0.f; } phase1 += freq1; phase2 += freq2; if (phase1 > onecyc13) { phase1 -= onecyc13; phase2 = phase1 * freq2 / freq1; phase3 = phase1 * freq3 / freq1; } );
2017-04-13 21:15 GMT-03:00 Alexandre Torres Porres porres@gmail.com:
2017-04-13 19:25 GMT-03:00 JTG III jordanthomasgibbonsiii@gmail.com:
Chant was the program that implemented Fof synthesis, both developed at IRCAM in the late 70's/early 80's or thereabouts. I haven't used SC in a long time, and now I'm unsure about those ugens. Also, a quick search for anything on the "filter version" of FOF didn't seem to bring anything up, but there's an article in this anthology of early eighties Computer Music Journal articles that I have at home which at least mentions it, I think. I can check when I get home, or you can find it on Sci-Hub.
"Formlet", the "FOF-like filter", is just a resonant filter with an attack/decay envelope. I was able to replicate it. Though I get the idea that the fof-filter thingy is based on a bank of such filters, huh? "Formant", on the other hand, is described as an "oscillator", it "generates a set of harmonics around a formant frequency at a given fundamental frequency", has parameters for fundamental frequency, formant frequency and bandwidth of the formant frequency.
I'm really curious on how to implement it as a pd patch ;) - but I don't think I've seen anything like it in the Pd world.
cheers
well, seems like it's related to paf :)
check F13.paf.control.pd and you see the same parameters
so it seems Pd used to have this kind of oscillator natively, as part of the extra objects (the paf~ external), but it was removed because of the IRCAM patent. Since that patent expired, paf~ could be brought back to vanilla's extra, and I have requested that before. I was considering making a clone of Formant from SC, but now it really just makes more sense to reinforce the idea of bringing the paf code back to business.
2017-04-14 16:23 GMT-03:00 Alexandre Torres Porres porres@gmail.com:
checking Csound's fof opcode, formant really seems like a version of it
2017-04-14 1:55 GMT-03:00 Alexandre Torres Porres porres@gmail.com:
BTW, here's an excerpt from Formant's code, found in here https://github.com/supercollider/supercollider/blob/772bdd6946a7253390ba0b1b23eb3adc0acb97ea/server/plugins/OscUGens.cpp#L2451 from line 2451
LOOP1(inNumSamples, if (phase3 < onecyc13) { ZXP(out) = (*(float*)((char*)sine + (((phase3 + tqcyc13) >> xlobits) & xlomask13)) + 1.f) * *(float*)((char*)sine + ((phase2 >> xlobits) & xlomask13)); phase3 += formfreq; } else { ZXP(out) = 0.f; } phase1 += freq1; phase2 += freq2; if (phase1 > onecyc13) { phase1 -= onecyc13; phase2 = phase1 * freq2 / freq1; phase3 = phase1 * freq3 / freq1; } );
2017-04-13 21:15 GMT-03:00 Alexandre Torres Porres porres@gmail.com:
2017-04-13 19:25 GMT-03:00 JTG III jordanthomasgibbonsiii@gmail.com:
Chant was the program that implemented Fof synthesis, both developed at IRCAM in the late 70's/early 80's or thereabouts. I haven't used SC in a long time, and now I'm unsure about those ugens. Also, a quick search for anything on the "filter version" of FOF didn't seem to bring anything up, but there's an article in this anthology of early eighties Computer Music Journal articles that I have at home which at least mentions it, I think. I can check when I get home, or you can find it on Sci-Hub.
"Formlet", the "FOF-like filter", is just a resonant filter with an attack/decay envelope. I was able to replicate it. Though I get the idea that the fof-filter thingy is based on a bank of such filters, huh? "Formant", on the other hand, is described as an "oscillator", it "generates a set of harmonics around a formant frequency at a given fundamental frequency", has parameters for fundamental frequency, formant frequency and bandwidth of the formant frequency.
I'm really curious on how to implement it as a pd patch ;) - but I don't think I've seen anything like it in the Pd world.
cheers