Cabbage and Csound provide several ways of viewing and loading soundfiles. Cabbage provides two unique widgets for viewing sound files, while Csound provides a host of opcodes for reading files from disk, and/or those loaded to a buffer.
Viewing soundfiles in Cabbage
soundfiler widgets for viewing sound files. The
soundfiler widget is designed to quicky load audio samples.
gentable on the other hand is used to
display data from a function table. It renders slower, but features more options on how to display the function table. As soundfiler is built specifically for displaying audio files, the rest of this text will deal with its
To view a sound file add a
soundfiler widget to your instrument. It uses a
file() identifier to set the audio file to display.
soundfiler bounds(10, 10, 300, 200), file("../samples/test.wav")
To read this file in Csound we can use the
instr 1 a1, a2 diskin2 "../samples/test.wav", 1, 0, 1 outs a1, a2 endin
If you would like to dynamically load a sound file you can use a
filebutton widget. You will also need to add an indentifier channel to your
soundfiler widget. The following code will let the user browse
for a file when they hit the filebutton1 button.
instr 1 gSfilepath chnget "filebutton1" kFileChanged changed gSfilepath if kFileChanged == 1 then ; if user has requested a new file... event "i", "LoadSoundFile", 0, 0 ; call instrument to update sample storage function table endif
instr 1 assigns a file name to the
gSfilepath variable. The
LoadSoundFile instrument reads this variable and loads the audio file to the soundfiler using an identifier channel named
The code might look like this.
instr LoadSoundFile ; load sound file if filevalid(gSfilepath) == 1 then Smessage sprintfk "file(\"%s\")", gSfilepath ; print sound file to viewer chnset Smessage, "soundfiler1" endif endin