Wednesday, July 18, 2012
Tapestrea is another software tool for learning about frequencies, filters, synthesis, composition and reads ChucK scripts. The reason I find this so useful is it gives visual context to signal processing. This 5 minute demo video gives a quick tour through the software features. For example, a pre-recorded .wav file is played and the frequencies appear in the spectrogram display. The "separate" button creates individual files for each frequency in the .wav file, dividing the files into stable foreground sinusoidal frequencies, bursts or transient events, and background/noise (stochastic events). Extraction of a frequency is done easily by clicking and dragging a window across the segment you want. Sliders make it easy to stretch, loop, synthesize, etc. and give visual/manual control to processing new sounds. However, the Lion roars on this one because though Tapestrea incorporates ChucK programming features, the software does not run on a Mac OSX Lion operating system. Windows, Linux or Mac OSX is necessary. I emailed Princeton and received this confirmation by email.
Monday, July 2, 2012
Granular Synthesis Part 2
I'm making this a new post because the comments section acts up when I try to post there...
Jan pointed out that the use of MIDI devices is, in a sense, deprecated in ChucK. So I'm currently researching and playing with LiSa to do granular synthesis.
The nice thing about LiSa is that you can hook up anything that is a sound source - like an oscillator or SndBuf - and use that to make the grains. In addition, you can mathematically synthesize grains. This allows much more freedom in synthesis techniques than a MIDI controller.
There are several LiSa example files in the examples/special folder. For some reason, however, a few of the files aren't working for me at the moment... But for those that do work, the sound is very unique...
This thread (also where I got the "garbage" MP3 and the "DigitalTape" code) has to do with granular synthesis. I will post any other threads I find in a comment.
-Julia
There is a good description starting from the May 14 post and down between two users explaining creating code from scratch or using LiSa. Kassen explains it well.
Jan pointed out that the use of MIDI devices is, in a sense, deprecated in ChucK. So I'm currently researching and playing with LiSa to do granular synthesis.
The nice thing about LiSa is that you can hook up anything that is a sound source - like an oscillator or SndBuf - and use that to make the grains. In addition, you can mathematically synthesize grains. This allows much more freedom in synthesis techniques than a MIDI controller.
There are several LiSa example files in the examples/special folder. For some reason, however, a few of the files aren't working for me at the moment... But for those that do work, the sound is very unique...
This thread (also where I got the "garbage" MP3 and the "DigitalTape" code) has to do with granular synthesis. I will post any other threads I find in a comment.
-Julia
Using ChucK for Granular Synthesis
http://electro-music.com/forum/viewtopic.php?t=14196There is a good description starting from the May 14 post and down between two users explaining creating code from scratch or using LiSa. Kassen explains it well.
Friday, June 29, 2012
Granular Synthesis With ChucK
I found this wiki page on MultiGrain Granular Synthesis with ChucK. It includes code, however the example audio files aren't working on my computer right now:
https://ccrma.stanford.edu/wiki/MultiGrain_Granular_Synthesis_in_Chuck
This might be a good place to start exploring with Granular Synthesis in ChucK. It seems to me that we could very easily add to/alter the code to manipulate the synthesis.
Judy, let me know what you think, and if this is on the right track...
-Julia
https://ccrma.stanford.edu/wiki/MultiGrain_Granular_Synthesis_in_Chuck
This might be a good place to start exploring with Granular Synthesis in ChucK. It seems to me that we could very easily add to/alter the code to manipulate the synthesis.
Judy, let me know what you think, and if this is on the right track...
-Julia
Thursday, June 28, 2012
ICAD June 2012 ChucK Workshop
SonifyingInChucKICAD2012.pdf
This is the printout from the ChucK Workshop held recently with Perry Cook. ICAD was held in Atlanta on June 18-21, 2012.
Foundations of On-The-Fly Programming in the ChucK Programming Language
This paper written by Rebecca Fiebrink, Ge Wang, Perry Cook 2008.
ABSTRACT excerpt:
"We present three case studies of applying learning in real-time to performance tasks in ChucK, and we propose that fusing learning abilities with ChucK's real-time, on-the-fly aesthetic suggests exciting new ways of using and interacting with learning algorithms in live computer music performance."
More papers at http://smirk.cs.princeton.edu/
This is the printout from the ChucK Workshop held recently with Perry Cook. ICAD was held in Atlanta on June 18-21, 2012.
Foundations of On-The-Fly Programming in the ChucK Programming Language
This paper written by Rebecca Fiebrink, Ge Wang, Perry Cook 2008.
ABSTRACT excerpt:
"We present three case studies of applying learning in real-time to performance tasks in ChucK, and we propose that fusing learning abilities with ChucK's real-time, on-the-fly aesthetic suggests exciting new ways of using and interacting with learning algorithms in live computer music performance."
More papers at http://smirk.cs.princeton.edu/
Wednesday, June 27, 2012
EXERCISE - On the Fly
I uploaded a PDF of an "evolving" exercise I created for On The Fly Synchronization project using the example files OTF_01 to _07.ck files in the examples directory.
Click here to see a PDF of the On-The-Fly Exercise
Click here to see a PDF of the On-The-Fly Exercise
A mapping to the keyboard tutorial
// not a full "lab" per se but it does have the possibility to be developed into one. This is based on my experience working with the KIns.
To get ChucK working with the keyboard, there are a few essential things to include in your code:
1.
// keyboard
To get ChucK working with the keyboard, there are a few essential things to include in your code:
1.
// keyboard
HidIn kb;
// hid message
HidMsg msg;
In the above code, "Hid" stands for "Human Interface (possibly also input?) Device." AKA a device that you use to interact with your computer, like the keyboard. The first line defines the variable that will represent the HID, and the second defines the variable that will hold the information we receive from the HID.
2.
// If the keyboard is not available, just exit the program right away
if( !kb.openKeyboard( 0 ) ) me.exit();
//Otherwise, assuming the program didn't exit on the last line, keep going
<<< "Ready?", "" >>>;
These lines are not critical, but helpful to include in a file, especially for debugging purposes. Obviously you can change them around to suit your tastes, such as only printing out a message if the keyboard *doesn't* open instead of if it does.
3.
// wait for event
kb => now;
The above lines go inside the event loop, which is the (usually infinite) loop that makes the program run. They'll probably be the first thing inside the loop, unless your program has a reason for them not to be. Basically they pause the loop until the HID has a message to send.
4.
kb.recv( msg )
When this function returns true, a key is being held down. It's probably best used in a while loop or if statement, such as while( kb.recv( msg ) ){....} That will execute the body of the loop as long as a key is being held down.
5. msg.which
The value of this variable contains an int that corresponds to the key that's being held down. Operators like ==, >, <, != can be used to work with it to assign different actions to different keys.
These are the most important things to understand when working with keyboard input. Using them, you can construct an array of values of the keys on your keyboard that correspond to meaningful values. For example, to make a program that plays notes when the keyboard is pressed, you could make an array in which the index of the array is the frequency of the note, and the data that corresponds to any given index is the key mapping integer.
How can we find out the key mapping integers if we don't know them or have a reference though? An easy, if tedious, way to do it is to simply print out msg.which whenever a keypress event is received. You can then write your own table by going through each key on your keyboard.
Oscillators, Harmonics and Wavelength Resource
Oscillators, Harmonics and Wavelength Explained Simply
The Synth School website is now closed and "under construction" but this video survived on YouTube. It's a very basic and clear explanation with great animations to show how to create saw and square waves from the original sine wave. Video: 10 minutes.
Subscribe to:
Posts (Atom)

