Final Project: CodySynth | 220A

Cody Hergenroeder

Milestone 1 - milestone1.ck

For this milestone, I decided to focus my effort on a continuation of my final project from 220b, the granulator. I love playing around with granulation because some of my favorite music features this soundscape technique. After messing around with the granulator using some of my favorite song samples, I had the idea of giving the granulator a pattern sequencer functionality. I think this is the direction I will go for my final project.

Milestone 2 - milestone2.ck //

I began losing interest in my last idea as I realized I would be performing the arduous and useless task of creating a lesser version of a toy that is already perfectly fun for me in Ableton.
I realized that ChucK held within it the power to create what's made me interested in computer music all along: modular synthesizers. So I set out to re-create the freedom of modular synthesis as seen in the software VCV Rack, but with the unique features found in ChucK. This is CodySynth, in ChucK. I created it starting from the polyfony.ck ChucK example combined with fm2.ck. I am using CodySynth on my JD-XA which feels hilarious; I'm basically using this behemoth of a synth as an exo-skeleton--solely for its knobs and keyboard--so that I can design my own synth without boundaries.
Here are a mere fraction of the parameters we can change:

  1. OSC 1 FREQ (MIDI)
  2. OSC 2 FREQ (knob) (modulates osc 1)
  3. OSC 1 GAIN (knob)
  4. OSC 2 GAIN (knob)
  5. FEEDBACK GAIN (knob) (osc 1 => osc 1)
  6. AMP GAIN (knob)
  7. REVERB (knob)

Final: CodySynth - final.ck

What is CodySynth? It's an n-phonic quasi-modular synth with LiSa-furnished looping*, quasi-functional arpeggiation*, a self-playing mode*, and a wealth of modulating or self-modulating or entirely non-modulating parameters to play with.

* not shown in video due to time constraints.

PLEASE WATCH MY VIDEO

I have put it here again so that you will watch it, but it is smaller which makes you laugh at the tiny video and makes you want to watch it.

The CodySynth represents the most fun I've had with ChucK yet! I achieved a lot of versatility in the sound by changing OSC1 and OSC2 to different oscs, but had to do so manually in the code each time, as I'm not yet sure how to do so dynamically. It was definitely a sonic journey building this, and I hope that in the future I can continue to build more features into it. In particular, I'd love to make it even more "modular", allowing you to plug anything into anything else with imaginary patch cables; universal chuck=ing on the fly for sonically unlimited combinations.

CODYSYNTH OWNER'S MANUAL:
Congratulations, you are now the proud owner of a brand new CodySynth! The possibilities to create are endless, if only we first start by beginning.
Step 0) Have a MIDI device connected. If the code does not run, edit the first line of code to select the right MIDI device. Most knobs probably won't work for you (I turned on MIDI Ctrl mode on my synth), but you can still get a small taste with the arrow key menu.
Step 1) Play your first MIDI note or turn the osc1 pitch knob.
Step 2) Play with other knobs. Osc2 is a great place to start. Turn on the gain of Osc2 in order to hear pitch modulation.
Step 3) Use the up/down/left/right arrow keys to browse the menu! Try out MEGAMODE, change the CVs, and Have Fun!
Step 4) Get loopy with Lisa the loop pedal, and build a song together! You'll probably have to edit deep in my code to get it triggered by your preferred MIDI signals. Good luck...
FEATURES:
-PITCH ENV knob that, upon happy accident, is actually a GUITAR DISTORTION pedal!
-MEGAMODE: A self-playing arpeggiator. Note speed is synced to LFO! Has Swing control & separate "arp speed" knob for extra increments of arpeggiation.
-Bypass the filter entirely.
-Use CVs (Control Voltages) to amplify or reduce various modulations!

Parameter List:

  1. OSC 1 FREQ (with CV)
  2. OSC 1 FINE FREQ
  3. OSC 1 PULSE WIDTH (with CV)
  4. OSC 1 GAIN (with CV [called tremolo])
  5. OSC 1 Pulse-Width (with CV [called Pulse-Width Modulation])
  6. OSC 1 FEEDBACK (osc1 -> osc1)
  7. OSC 1 ADSR Sliders
  8. OSC 2 FREQ
  9. OSC 1 FINE FREQ
  10. OSC 2 GAIN
  11. OSC 2 Pulse-Width (with CV)
  12. OSC1 => OSC2 Freq Mod CV
  13. LFO FREQ <--- use me to control the speed of LFO modulations!
  14. AMP GAIN <--- turn me DOWN if you hear clipping!
  15. FILTER GAIN
  16. FILTER CUTOFF (with CV)
  17. FILTER RESONANCE (with CV)
  18. REVERB
  19. DELAY
  20. DELAY TIME
  21. DELAY FEEDBACK
  22. Noise Gain (with CV)
  23. Noise ADSR Sliders
  24. "Pitch Envelope" Depth (as heard in the video)
  25. "Pitch Envelope" ADSR (without S,R)
  26. Arpeggiation Speed
  27. "MEGA" SWING for self-playing MEGAMODE