A few days ago, a surprising video started floating around the internal Cycling ’74 Slack channels. Instead of kittens or surfers, this one featured a screen, some electronic gear and a bunch of wires, all nestled in some snow-like cotton. Oh, and a crazy sound – along with an invocation that says “Chat to change the sound!”
It only took a few moments to see what was going on here: this YouTube video was a live stream featuring a hybrid Max + modular system burbling through a delay, tweaked and driven by the messages typed into the chat stream. It was an cool site, and we had to learn more. Luckily, a well-placed sticker pointed to this being a Perfect Circuit effort, so we dropped in to find out more about this project.
We spun up to Burbank learn more about what they are working on – and, of course, to play with some synthesizers. We stopped to check out the latest offerings on the synth tables (drool) before being escorted upstairs to the Perfect Circuit office, where we could see their operation at work. We’d never seen so many boxes of modular gear in one place! Perfect Circuit is a hub of activity in the LA modular scene; while we were in the office, Baseck happened to roll through to do some demos with a new Meng Qi cracklebox. It is an amazing place to visit. Once in the office, we were introduced to Harry Gibbons and Ryan Gaston, who were more than happy to recount the process of putting together the live stream setup.
The Build Story
The guys had seen a few examples of generative modular live streams around (Bastl had a great one last year) and they had already been considering putting together something similar. Ryan had just upgraded to Max 8 and was itching to try out some of the new features, and thought it would be cool to connect his existing Expert Sleepers modular system and Max workflow with some NodeJS. Since Perfect Circuit had just become a Max reseller, it seemed a great opportunity to show off some modules alongside Max. Harry had done some Node programming before for the Perfect Circuit website, so he felt comfortable diving in to get connected to YouTube.
The biggest technical hurdle Harry encountered was managing the OAuth handshake through Google's API, but he pointed to online example code online as the key to getting it to work. Once node.script was outputting YouTube comments, he handed it off to Ryan, who built the main Max patch. He parsed comments using a chain of regexp objects and other logic processes to control a matrix of CV I/O values. The emphasis was really getting something going that worked on live stream – and that would also sound good.
What It Took
The rig is pretty simple, but took advantage of Max 8, the Expert Sleepers modules and a few great modular pieces, and lives under a shelf in their supply closet.
The stack included the following major pieces:
The YouTube Live Stream – A GoPro connected through a Roland video mixer combined sound and video into a Mac Pro. The on-screen monitor shows the Max patch UI, featuring with incoming messages and the generated CV matrix. The modular responds to the text of each YouTube comment almost instantly.
The node.script Max Object – Node for Max is running a simple routine that connects (via OAuth) to Google's Youtube API, then sends the most recent comments to the Max object’s outlet. A lot of the connectivity was borrowed from online examples, and most of the text processing is left to the Max patch.
Expert Sleepers Modules – These modules provide the connection between Max and the modular rack. In this setup, they are reading in CV as well as outputting generated CV to the modules. Inside of Max, the work is primarily managing floating-point values.
Strymon Magneto and a Make Noise 0-coast – These 2 devices are making all the noise in this setup, with the 0-coast also providing some CV into the matrix of voltages. And a glorious sound it is!
The Public Response
The feedback from viewers has been very interesting. People are interacting with the stream 24/7, and you will often see people responding to the sound they are hearing – which immediately changes the sound they are hearing!
Ryan commented that he was surprised at how many people in the chat spent time trying to figure out their pseudo-code system through trial and error. The current iteration is a nice mix of randomness and logic, so it's hard to really interact with it in a predictable way. In their next iteration, they may attempt to build on this interest, and develop a more discoverable language – or even add in some Easter eggs responding to specific text strings.
Overall, Harry and Ryan feel like they found a surprising way of showcasing some of their favorite modules, and are looking forward to their next run at this. And we are excited to see Node for Max get such an interesting demo – and are thankful for getting to see behind the curtain of this cool installation.