chuck racks
play

Chuck Racks Chuck Racks is an audio plugin for working with the - PowerPoint PPT Presentation

CHUCK RACKS Text-based Music Programming for the Digital Audio Workstation Jordan Hochenbaum Spencer Salazar Rodrigo Sena California Institute of the Arts Valencia, CA ICMC 2017 | Shanghai, China Chuck Racks Chuck Racks is an audio


  1. CHUCK RACKS 
 Text-based Music Programming for the Digital Audio Workstation Jordan Hochenbaum Spencer Salazar Rodrigo Sena California Institute of the Arts Valencia, CA ICMC 2017 | Shanghai, China

  2. Chuck Racks Chuck Racks is an audio plugin for working with the ChucK programming language Bridges the world of the DAW with the world of text-based music programming Highlights: 
 Host tempo synchronization 
 Audio processing + synthesis 
 MIDI input + output 
 Parameter automation Chuck Racks Text-based Music Programming for the DAW

  3. Motivation Digital audio workstation software has greatly expanded access to computer music technology, 
 with concomitant limitations Chuck Racks Text-based Music Programming for the DAW

  4. Motivation Computer music programming languages offer sonic/compositional possibilities not available in DAWs 
 DAWs offer distinctive compositional and sonic features 
 Chuck Racks Text-based Music Programming for the DAW

  5. Motivation Computer music programming languages offer sonic/compositional possibilities not available in DAWs 
 (algorithm, process, sound design) DAWs offer distinctive compositional and sonic features 
 Chuck Racks Text-based Music Programming for the DAW

  6. Motivation Computer music programming languages offer sonic/compositional possibilities not available in DAWs 
 (algorithm, process, sound design) DAWs offer distinctive compositional and sonic features 
 (timeline, graphical notation, 
 audio tracking, plugin ecosystem) Chuck Racks Text-based Music Programming for the DAW

  7. Applications Music composition and production Audio algorithm prototyping Computer music education Chuck Racks Text-based Music Programming for the DAW

  8. Background ChucK, miniAudicle, Audicle Chuck Racks Text-based Music Programming for the DAW

  9. Background Max for Live Community 
 “devices” Chuck Racks Text-based Music Programming for the DAW

  10. Background Reaktor, Kontakt block flow + digital signal processing sampling + scripting Chuck Racks Text-based Music Programming for the DAW

  11. Background ixi lang, Gibber, Sonic Pi textual/visual paradigms 
 for symbolic music representation d = Drums("xoxo"); Chuck Racks Text-based Music Programming for the DAW

  12. Chuck Racks •VST/AudioUnit plugin •Embedded full ChucK compiler and virtual machine •Host integration features exposed to ChucK in PluginHost and PluginParameter API Chuck Racks Text-based Music Programming for the DAW

  13. Host Integration Tempo synchronization Audio processing MIDI Input + Output Parameter Automation Chuck Racks Text-based Music Programming for the DAW

  14. Tempo Synchronization Chuck Racks automatically syncs with host tempo and transport state Chuck Event system Reacts to changes in transport state and tempo Chuck Racks Text-based Music Programming for the DAW

  15. Tempo Synchronization PluginHost.getTempo(); PluginHost.bar() => now; PluginHost.half() => now; PluginHost.quarter() => now; PluginHost.eighth() => now; PluginHost.sixteenth() => now; PluginHost.isPlaying(); PluginHost.posInBeat(); PluginHost.posInBar(); // etc... Chuck Racks Text-based Music Programming for the DAW

  16. Audio Processing ChucK dac and adc unit generators Synthesis, analysis, and audio processing programs 
 function with no changes Chuck Racks Text-based Music Programming for the DAW

  17. Audio Processing Processes synthesized or pre-recorded audio from host Can be further processed by other plugins 
 (compression, EQ, effects, etc.) Can be executed live or bounced to a recording Chuck Racks Text-based Music Programming for the DAW

  18. MIDI Input + Ouput Process MIDI from the host 
 MIDI sequence, input device, generator, etc. Generate and send MIDI back to the host Chuck Racks Text-based Music Programming for the DAW

  19. MIDI Input + Ouput MIDI-controlled synthesis Algorithmic composition Algorithmic parameter mapping 
 (e.g. control change) Chuck Racks Text-based Music Programming for the DAW

  20. MIDI Input + Ouput PluginHost.onMidi() => now; MidiMsg msg; PluginHost.recvMidi(msg); PluginHost.sendMidi(msg); Chuck Racks Text-based Music Programming for the DAW

  21. Parameter Automation •Arbitrary user-created parameters •Mapped to musical parameters within code •Controlled by host facilities: 
 knobs, MIDI controls, automation Chuck Racks Text-based Music Programming for the DAW

  22. Parameter Automation •Graphical control of musical parameters over time •Not typically available in 
 text-based music programming! Chuck Racks Text-based Music Programming for the DAW

  23. Parameter Automation PluginParameters.getValue("name") Chuck Racks Text-based Music Programming for the DAW

  24. Technical Details JUCE-based plugin architecure 
 multiple frameworks/platforms 
 (VST, AU, RTAS, AAX, etc., 
 Mac, Windows, Linux) libchuck embeddable ChucK engine 
 (limited to single instance) Chuck Racks Text-based Music Programming for the DAW

  25. Example: Synthesizer TriOsc s => ADSR adsr => dac; MidiMsg msg; while(true) { PluginHost.onMidi() => now; while(PluginHost.recvMidi(msg)) { if(midi.data1 == 144) { midi.data2 => Std.mtof => s.freq; 1 => adsr.keyOn; } else if(msg.data2 == 128) { 1 => adsr.keyOff; } } } Chuck Racks Text-based Music Programming for the DAW

  26. Example: Audio Effect adc => Gain g => dac; SinOsc s => g; 3 => g.op; // multiply while(true) { Math.sin(now/second*0.15*2*pi)*4000 => s.freq; 5::ms => now; } Chuck Racks Text-based Music Programming for the DAW

  27. Example: Audio Effect with Param adc => Gain g => dac; SinOsc s => g; 3 => g.op; // multiply while(true) { PluginParameters.getValue("freq")*4000 => s.freq; 5::ms => now; } Chuck Racks Text-based Music Programming for the DAW

  28. Discussion and Future Work Graphical/timeline representations in 
 text-based music programming are interesting Musical practices of hybrid DAW/programming? Community building and packaging Chuck Racks Text-based Music Programming for the DAW

  29. Conclusion Chuck Racks is an audio plugin for working with the ChucK programming language Bridges the world of the DAW with the world of text-based music programming Host tempo synchronization 
 Audio processing + synthesis 
 MIDI input + output 
 Parameter automation Chuck Racks Text-based Music Programming for the DAW

  30. Thanks! http://mtiid.calarts.edu/projects/software/chuck-racks/ 
 https://github.com/mtiid/chuck-racks Spencer Salazar 
 ssalazar@calarts.edu Questions? Chuck Racks Text-based Music Programming for the DAW

Recommend


More recommend