Welcome to a fun ChucK + net + music phenomenon that has sprouted up here at www.electro-music.com and in the ChucK community. One day recently i thought of ChucK's native OSC (Open Sound Control) capability and imagined writing an IRC-like chat interface in the ChucK music programming language with OSC. It could not only chat, it would be easy to make it musically inclined as well so it would be perfect for community jams. Well long story short, it's here today, it's free, and it works just fine!
This article was requested by a poster on the ChucK Users mailing list and it's purpose is to introduce you to ChucKchat and netlooping so you can participate as well. First let's talk about ChucKchat itself, which is a chat and command program with musical talent as well, then we'll talk about netlooping later. It's a chat program in the sense that what you type gets sent to all the people in your friends.txt file, and everything they send does the same which includes getting back to you. It's a client-only system so no servers are required. As such it has no security features so you've got to trust the people on the other end (for now).
ChucKchat has a crude chat interface, ok good, then it also has some music generating code. It has a beep which you can beep to alert your friend or yourself if you are into self-alertness, lol, and it also has a sequencer and a note generator. The sequencer is a thing of my creation (or reinvention actually) that I call a Boolean Sequencer, or BS for short (bad acronym, very bad…). The note generator is the familiar string synthesis algorithm called Karplus Strong.
When you first run ChucKchat, it begins playing notes from the BS into the KS and then out to the speakers. To test that your localhost is set up right, type "hello world" and you should see a response like this: "les: hello world", where my user name is les. Next to test that your commands are working, type "les volume 0.0", and the music should turn off. use "les volume 1.0" to turn the music back on. See the manual (below) for a list of commands.
Now the next way cool thing about ChucKchat is that you can also control your friends' music with remote commands. To do that, you just use your friend's nickname instead of yours. So to shut off jayren's music I type "jayren volume 0.0" on my local terminal. The message goes to jayren's IP address in your friends.txt file where it is recognized, decoded, and put into action. Be careful with commands as you can break things at the moment by using silly values although most are limited by if() statements.
"Woah, woah, woah, Les - all these features are great but shouldn't you be explaining how to set things up to get started? "
Oops, yes, I got to rambling on there, here's what you need: At the end of this article are three files. The latest ChucKchat.ck source code file, the pdf manual, and the friends.txt file. Download them and read the manual, then get command line ChucK set up (this won't work with miniAudicle). Put all three files in a directory somewhere and then open up a command window and go to that directory. Edit friends.txt and put in meaningful ip addresses of your friends, then type "chuck ChucKchat.exe" and you'll hear the music.
That's enough to get you up and chatting and controlling your friend's music. Next is the netlooping. You may have your own streaming server or paid service or whatever, which is cool. If not you'll probably want to use one of electro-music.com's free public ports. The big rule there is NO COPYRIGHTED MATERIAL. That means no AC/DC, no Joan Jett, and not even any Jimi Hendrix my friend. And also none of your buddy's music if it isn't Creative Commons Licensed or otherwise free for you to use. This is important to keep the station from getting hit with huge, massive, Godzilla-sized service fees which would shut it down forever. To paraphrase the song "Godzilla", "Oh no - there goes electro!" Can't let that happen, can we?
OK, electro-music has a chatroom which is an IRC chartroom called #electro on the blitzed server. Or you can get there from the site if you register. To coordinate and be involved with the streaming, especially the electro-music public ports, you must visit the chat and hang out a bit and talk to the people there about how to set up and get going. This will involve configuring a client program such as Nicecast, Edcast, or whatever to transmit to the streaming server.
Once you're up and broadcasting, you can begin netlooping by listening to your own transmit stream and adding the received stream to the transmit stream. Be sure to adjust the receive and transmit volume controls for best layered sound effect. The next step, besides letting your stream be controlled by other ChucKchat users, is to be a part of a star or ring or buckyball or mesh or whatever configuration of netloopers you can form with your friends. You see, you can hook them up any way you want, just need enough listeners for your transmitter to form the node properly.
For example, one fun geometry is a dinner bell triangle like in the wild west. You feed music into the three triangle nodes, it cycles clockwise through three streams connected end-to-end, and then someone sums the output of all three streams to create the final sound. It sounded so totally amazing in my tests that I can't wait to try the dinner bell looper in practice.
Also note that ChucKchat.ck has a pitch shifter which can be configured to be part of the netlooping arrangement. Then you can do things like gently downshift the input stream so that three layers later it becomes a low-frequency drone chugging away in the background. There are lots of possibilities involved with using the music part of ChucKchat in this way, not just pitch shifting.
Oh yes, that reminds me. I must state clearly that ChucKchat is totally freeware. You are free to copy, distribute, modify, recode, and even make a profit from ChucKchat as long as you follow one condition which is to keep the previous authors list intact, including me, Les Hall (Inventor) as original author. Aside from that one thing, have a free-for-all with versions and variants and pluggable modules or whatever can be done with this and future versions of ChucK.
Well, that's about it… I look forward to more netlooping jam sessions using ChucKchat or whatever else people develop based on this way of jamming with ChucK. And finally, here are the three files you need: