Jagernot: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
| Line 42: | Line 42: | ||
</pre> | </pre> | ||
Revision as of 18:51, 18 May 2010
Livecoding with din
din has an integrated Tcl / Tk interpreter for livecoding sound and gui. Tcl/Tk is a convenient choice for livecoding in din because din commands have the form:
command_name arg1 arg2 ... argN
which is the same as a Tcl/Tk command.
an example:
# code snippets we will execute to change different sound parameters in din.
set code1 {set_bpm fm $v; set_bpm gate-l $v; set_bpm gate-r $v} ;# changes FM bpm and gater L and gater R bpm.
set code2 {key $v} ;# changes key of din. $v is value in Hz.
set code3 {set_delay all feedback [expr $v/100.0]} ;# changes feedback of L and R delay lines
# set_bpm, key and set_delay are built-in din commands.
# make a Tk based slider
package require Tk;
scale .s ;# slider is called scale in Tk.
grid .s
# slider will now show up in a window
# slider handler
proc slide {code v} {
eval $code ;# evaluate code snippet when you move the slider knob.
}
# change FM bpm and gater L and R bpm.
set code $code1
.s configure -from 0 -to 240 -command {slide $code}
# change key of din
set code $code2
.s configure -from 261 -to [expr 4*261] ;# slider range from middle C to 2 octaves above middle-C
# change feedback on all delays
set code $code3
.s configure -from 0 -to 100 ;# slider range from 0 to 100