Let's explore sound and senses by building more synthesizers
Section outline
-
-
FM drone synth in Pd, corresponding to our first FM synthesizer we programmed with p5.js, called Synthesizer 3 above in section Let's build a synthesizer. Note the
[vslider]
which serves as a volume knob has range from 0 to 1. We can observe some strange (read: fun) visual artefacts with default volume values 0-127, while the oscilloscope array has range 0-1.Can you read the p5.js and Pd versions side by side, and see how the objects correspond to one another.
If you make the values the same in both programming languages, do you hear minuscule or obvious differences in their sound? Surprisingly, with this Pd program you can make the carrier and modulator frequencies as well as the modulator depth negative, < 0. Does this mean time flows backwards? What if you make the volume negative, will the universe collapse in a reverse Big Bang? Can you do this in p5.js?
-
The second program (Pd programs are called "patches"), a version of the simple FM drone this time with an ampliture envelope. Click the
⧇
object labeled trigger to produce sound. This corresponds to the Envelope FM synthesizer p5.js programmer earlier.The envelope generator is the
[line~]
object and it's parameters above it. The[1 100(
,[delay 500]
and[0 500(
objects control the envelope attack, sustain (=note length) and release times. Try changing the values to produce a short sound, a long sound, a slowly appearing sound or a slowly disappearing sound. Can you connect the envelopes not only to amplitude but also to carrier and modulator frequencies? This is next level FM synthesis DX7 already had this feature, but you could expand the delay and message objects to produce crazy envelopes with more than three segments. How about six segments? Nine? What about 99?The Prophet-5 on that track is a very nice synthesizer, but since it is analog rather than digital, it's out of the scope of this seminar.
-
This Pd program ("patch"), extending the two above. This one responds to keypresses and play notes. The functionality is implemented by the
[keyname]
object on the right, which is routed to different messages to change the carrier frequency.You could explore parametrizing the keyboard further, perhaps some keys would produce shorter, longer or louder sounds, or change the modulation parameters? We use the same word keyboard for the ⌨️ and 🎹. Could you invent an entirely new keyboard? Or could you tune the above to a familiar (or unfamiliar) musical scale, knowing that musical notes are names for certain frequencies.