CHUCK RACKS Text-Based Music Programming for the Digital Audio Workstation

CHUCK RACKS Text-Based Music Programming for the Digital Audio Workstation

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 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 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 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 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 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 Applications Music composition and production Audio algorithm prototyping Computer music education Chuck Racks Text-based Music Programming for the DAW Background ChucK, miniAudicle, Audicle Chuck Racks Text-based Music Programming for the DAW Background Max for Live Community “devices” Chuck Racks Text-based Music Programming for the DAW Background Reaktor, Kontakt block flow + digital signal processing sampling + scripting Chuck Racks Text-based Music Programming for the DAW 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 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 Host Integration Tempo synchronization Audio processing MIDI Input + Output Parameter Automation Chuck Racks Text-based Music Programming for the DAW 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 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 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 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 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 MIDI Input + Ouput MIDI-controlled synthesis Algorithmic composition Algorithmic parameter mapping (e.g. control change) Chuck Racks Text-based Music Programming for the DAW MIDI Input + Ouput PluginHost.onMidi() => now; MidiMsg msg; PluginHost.recvMidi(msg); PluginHost.sendMidi(msg); Chuck Racks Text-based Music Programming for the DAW 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 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 Parameter Automation PluginParameters.getValue("name") Chuck Racks Text-based Music Programming for the DAW 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 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 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 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 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 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 Thanks! http://mtiid.calarts.edu/projects/software/chuck-racks/ https://github.com/mtiid/chuck-racks Spencer Salazar [email protected] Questions? Chuck Racks Text-based Music Programming for the DAW.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    30 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us