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

chuck racks
SMART_READER_LITE
LIVE PREVIEW

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


slide-1
SLIDE 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

slide-2
SLIDE 2

Chuck Racks

Text-based Music Programming for the DAW

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

slide-3
SLIDE 3

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

slide-4
SLIDE 4

Chuck Racks

Text-based Music Programming for the DAW

Motivation

DAWs offer distinctive compositional and sonic features
 Computer music programming languages

  • ffer sonic/compositional possibilities

not available in DAWs


slide-5
SLIDE 5

Chuck Racks

Text-based Music Programming for the DAW

Motivation

DAWs offer distinctive compositional and sonic features
 Computer music programming languages

  • ffer sonic/compositional possibilities

not available in DAWs
 (algorithm, process, sound design)

slide-6
SLIDE 6

Chuck Racks

Text-based Music Programming for the DAW

Motivation

DAWs offer distinctive compositional and sonic features
 (timeline, graphical notation, 
 audio tracking, plugin ecosystem) Computer music programming languages

  • ffer sonic/compositional possibilities

not available in DAWs
 (algorithm, process, sound design)

slide-7
SLIDE 7

Chuck Racks

Text-based Music Programming for the DAW

Applications

Music composition and production Audio algorithm prototyping Computer music education

slide-8
SLIDE 8

Chuck Racks

Text-based Music Programming for the DAW

Background

ChucK, miniAudicle, Audicle

slide-9
SLIDE 9

Chuck Racks

Text-based Music Programming for the DAW

Background

Max for Live Community
 “devices”

slide-10
SLIDE 10

Chuck Racks

Text-based Music Programming for the DAW

Background

Reaktor, Kontakt block flow + digital signal processing sampling + scripting

slide-11
SLIDE 11

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");

slide-12
SLIDE 12

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

slide-13
SLIDE 13

Chuck Racks

Text-based Music Programming for the DAW

Host Integration

Tempo synchronization Audio processing MIDI Input + Output Parameter Automation

slide-14
SLIDE 14

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

slide-15
SLIDE 15

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...

slide-16
SLIDE 16

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

slide-17
SLIDE 17

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

slide-18
SLIDE 18

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

slide-19
SLIDE 19

Chuck Racks

Text-based Music Programming for the DAW

MIDI Input + Ouput

MIDI-controlled synthesis Algorithmic composition Algorithmic parameter mapping
 (e.g. control change)

slide-20
SLIDE 20

Chuck Racks

Text-based Music Programming for the DAW

MIDI Input + Ouput

PluginHost.onMidi() => now; MidiMsg msg; PluginHost.recvMidi(msg); PluginHost.sendMidi(msg);

slide-21
SLIDE 21

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

slide-22
SLIDE 22

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!

slide-23
SLIDE 23

Chuck Racks

Text-based Music Programming for the DAW

Parameter Automation

PluginParameters.getValue("name")

slide-24
SLIDE 24

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)

slide-25
SLIDE 25

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; } } }

slide-26
SLIDE 26

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; }

slide-27
SLIDE 27

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; }

slide-28
SLIDE 28

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

slide-29
SLIDE 29

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

slide-30
SLIDE 30

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
 ssalazar@calarts.edu Questions?