Skip to content

Instantly share code, notes, and snippets.

@brylie
Created January 13, 2024 14:56
Show Gist options
  • Save brylie/59350edafa3957886967ff8dad4e7ba3 to your computer and use it in GitHub Desktop.
Save brylie/59350edafa3957886967ff8dad4e7ba3 to your computer and use it in GitHub Desktop.
Code with Brylie - e46
(...) [MUSIC] Hello and welcome to an open source live code hangouts.
(...)
Today, we're going to try something a little bit different. We're putting the Jerry Life project on hold while we have internal discussions.
(...)
And I thought since it's a Friday, I'll just do something more recreational, sort of fun and exploratory.
(...)
So in my spare time, I like to do a little bit of music production and(...) really interested in synthesis, modular synthesis or audio synthesis.
(...)
And there's this really excellent project called VCV Rack. It's open source and it's a Euro Rack modular environment simulator, I think they call it.
(...)
What does all that mean? Well, basically you have modules that are small objects that have
(...)
different knobs and parameters and they essentially will make sound or modify sound in some way or control other modules. Those are the main elements you have, signal generators, signal modifiers and modulation sources which are things that will sort of turn the knob for you automatically.
(...)
And there's some really excellent and prominent creators in the VCV Rack community and VCV Rack itself is open source and there's a free version and a pro version in this stream.(...) And generally if I continue working with this series, I will use mostly the open source.
(...)
Plugins, I have the VCV Rack pro for a few features, but here's what it looks like in action. You can see some of the modules don't actually generate or modify the sound, but well, they modify it and that they can convert it to visual form.
(...)
Everything's dynamic here and the whole thing sort of sends a signal all around and eventually to your speakers or headphones.
(...)
And it's just really interesting, creative and sometimes these contraptions take a life of their own, basically. That would be what we would call the generative audio.
(...)
So I've been using the VCV Rack for a while to make music, but I'd like to get into
(...)
the code a bit and see how some of these modules are made. There are over 3000 modules that you can download and almost 3000 of them are free to use.
(...)
And over 2000 of them are open source and you can download them, you can use them and you can see how they work and there's whole collections of them.(...) Serg XT is one of the premier open source collections for modular synthesis.
(...)
And yeah, as you explore, you'll find your own favorites.
(...)
I certainly have a few of my favorites. One I recommend checking out is bog audio.
(...)
Also, Befico. Befico make these in both the hardware form and the software and all their modules are open source. So these are emulating actual physical devices in software form. It's called a, these are called hardware clones and the whole VCV Rack project is emulating a hardware kind of paradigm for creating music.
(...)
And this has a long history going back to the fifties and sixties and a couple of major prominent branches of this family of synthesis, audio synthesis pioneered by
(...)
Bob Moog and Bukla.(...) I can't remember Bukla's first name.
(...)
Bog audio. Here we go.
(...)
So these date back.
(...)
Don Bukla was the pioneer of a modular synthesis rig and is designed primarily for creating
(...)
sound effects and other, I think you could sequence songs and sounds with it as well. I haven't really ever worked with the particular particulars of Bukla, but it's the same paradigm as the Euro Rack, which came around in the 1990s. You essentially have modules that are all respond, have one or more responsibilities and they can patch into one another. All this originated even in radio communications and I think even cryptography and things. The foundations are mathematics.
(...)
If you want to go deeper into that and some of the old analog circuitry that was used in wartime communications and in Moog. Whoops.
(...)
Moog.
(...)
Moog music, which no longer is owned.(...) It's been acquired recently, but here's the one of the pioneering Moog synthesizers, again, the same idea of modules that have a particular function, multiple functions sometimes, and they can patch into one another.
(...)
There's some, I don't know, differences. I don't know if they're subtle or significant between the Bukla and Moog approach enough that they were coined the East Coast and West Coast approaches.
(...)
But I think there's recently a convergence of the paradigms and Euro Rack is just a different format. What they essentially are is a kind of scientific testing rigs and panels and with embedded electronics in the Euro Rack paradigm. They have different sizes,(...) the measurements.
(...)
Systems aren't necessarily compatible with one another because they would use different, for example, jacks or the module sizes would be different.
(...)
The Euro Rack has kind of come all around as a middle ground between them.
(...)
You can see this is using, I think, the quarter inch jacks.(...) And I'll just take a look here at Euro Rack. And you can build your own Euro Rack modules and you essentially buy a rack here, hence the name Euro Rack, and it has a bunch of mount points here for screws and you put modules in there at a certain height.
(...)
And people like to share their grids.
(...)
Let's see, and there's a lot of places you can buy them.
(...)
I'm not super interested in the hardware aspect. It's a bit expensive for me and I don't have a lot of space. I'm kind of trying to dematerialize, but I'm really interested in being able to explore this paradigm.(...) And I have a lot of favorite software, Euro Rack modules. BOG Audio is a great collection of over 100 open source modules. Basically, it's a full Euro Rack toolkit, almost everything you could need from just one. The VCV Rack itself, the core modules,(...) there's 50 open source modules in the VCV Rack core. So even just here, you can already start exploring and creating.
(...)
It's very good. I would say if you and I agreed with a friend of mine who is kind of collaborating with me on these endeavors,(...) sonic explorations, that we would start with the VCV core,(...) BOG Audio,(...) and Befico. The reason is we're, one idea we're kicking around is making a hardware rack for some experimental stuff. And we're thinking that these Befico modules would be good to get. And if we can already experiment them within the digital form, we'll be a little bit ahead of the game without having to spend the money up front. We can start building our prototype. So that's pretty cool.
(...)
Not all of the Befico models have been ported to VCV Rack, but I really appreciate that they do that. And I can see how it can be a draw to when you start to consider a hardware rack, you would already be familiar with these. They would be almost a no brainer to buy those.
(...)
I'll just mention one more that I pointed out earlier.
(...)
I've already forgotten the name, sorry. Surge XT.
(...)
46 modules here. So if I were to go for one bonus collection, in addition to Befico and BOG Audio, it would be this surge.
(...)
These are all software components, but there's a surge XT.
(...)
Plug-in, there it was. It's a VST, plug-ins are VST and AU. It's what we would call just a software synthesizer. It's already wired, everything's already wired together in this case.
(...)
So you don't have to think about the wiring, you just sort of start designing your sounds.
(...)
It's very powerful, comes with a lot of presets. So if you're just looking for a synthesizer and you're not so interested in the modular part or C++ code, well, this is a great place to start.
(...)
And the surge folks are just, I guess, great fans of synthesis in general and decided it would be awesome to break this out into vcv-rock components. I'm really grateful they did because I've been having great fun with it on the vcv library. So this is something I'm very excited about and enjoy a lot. And so the goal today is just to learn a bit about what goes into developing one of these plug-ins and can I make one? I have a few ideas that are kicking around.
(...)
There's, like I mentioned, there's a thousand modules in the library. So, you know,(...) maybe my modules aren't so important to add, but it's one, it's a learning experience. And two, I might have some ideas that are a bit unique and can be different differentiated from these other plug-ins, as well as the open source ones I can borrow from code, I can adapt it. So let's take a look. So what I need to do is check out.
(...)
I've got an empty director here and I'm using this book.
(...)
Developing virtual synthesizers with vcv-rock. It's really good. And Focal Press, I'll link to it.
(...)
And basically,(...) it's open source. All of the code in the book is open source.
(...)
So that's a really good thing for me because I'm like pretty big into open source and big into audio synthesis as well.
(...)
So I, you know, what about the book probably otherwise is because it's really cool. But it's on a Ralph List.
(...)
I got they had, well, I bought this one on.
(...)
I don't remember actually where I bought it, but I don't think I ordered from Ralph Ledge because the shipping is weird or something. I honestly can't remember where I bought it. But then I realized I found out like a month or so later, they had a copy at my library, of course. And then I found out that I had a copy of my library. And then I found out that I had a copy of my library. And I was like, oh, like a month or so later, they had a copy at my library, of course, which I should object first. But nonetheless, this is a great book. This is written for vcv-rock one.
(...)
But the recent released vcv-rock two, or maybe it's been a little over a year now, but this sort of recent.
(...)
Has some backwards compatibility. So what we learn in this book applies to the code that I'm going to write for vcv-rock two.
(...)
So I have like a book stand here. But basically, I need to skip one thing that this book does is puts the theory in the front part and then the practice in the back.
(...)
I'm of the opinion that practice should come first. Theory could come later. Once you've got a little bit of practice, the theory will start to make sense. But until you need the theory, don't put that in your way because there's layers and layers and layers and layers and layers and layers and layers and layers of theory you can just bog yourself down with. This book did manage to get enough theory in within 90 pages. So roughly half of the book was the theory part. I honestly,(...) oh, actually less than that.
(...)
Because chapter three introduces the basics of vcv-rock and it starts at page 74. You know, not a lot of theory, but I'm just not good at math. And I know you need math for layers of DSP.
(...)
But I also think that these libraries have such great abstractions that I can learn. I can just create an oscillator by saying, hey, I need a sine wave or a square wave. And there's abstractions that are going to support me without myself having to have knowledge of trigonometry and things like that, which unfortunately I don't have. I think a lot of people are in that book. So I'll see how far I can get with it. But I can understand what a sine wave is. I understand that cosine is basically in the opposite phase of a sine wave. What do you call it? They're out of phase.(...) 90 degrees or how many degrees?
(...)
I think that's enough for me to know how to use an oscillator that I'd like a sine oscillator and it is based on some trigonomic function.
(...)
So what we're going to do, though, is install some things on Linux. I'm going to kind of run through these instructions and we're going to have to build vcv-rock from source. So on Ubuntu, I'm going to have to install some packages.
(...)
I wish I had invested in a small book stand, but we'll get by without it.
(...)
So app install. I've got git.
(...)
curl.
(...)
Let's see how many of those are typed correctly.
(...)
Alright, so there's a couple of them. Zlib.lgdev.
(...)
Maybe that's a Zlib 1G.
(...)
I think so. It's a 1G.
(...)
And then the other one was libjack, Jack2dev.
(...)
That's JackD2, Jack Damon, I guess.
(...)
So this should get us started. Some of them already installed and the rest of them I'll just add here.
(...)
Alright, so that's page number 99 in the book if you're following along at home. They've got installation instructions for Windows, Mac, and Linux. So it doesn't matter where you're coming from, you're welcome to develop vcvvrack modules. And then when we publish them, hopefully I can build for those other platforms from Linux. I don't know. But usually the vcvvrack modules I've seen support all platforms. I've not encountered any that only work on Windows or Mac or something.(...) I've noticed that a few of the modules that are popular haven't been compiled for AMD64. So there are some issues on like newer Macs, but only like a few. I haven't encountered that much in the wild. Nonetheless, we're running Linux here. I've got the thing compiled.
(...)
Sorry, the installation is complete of the dependencies.(...) Now we're going to compile.
(...)
We're going to build vcv from sources.
(...)
So first thing we're going to do is just clone it.
(...)
I will invest in a book holder. So here we go to clone.(...) I'm going to use, oh gosh.
(...)
This lasts me for my password all the time.
(...)
If I do that...
(...)
And HTTPS is disabled.
(...)
Let me just try it. Let me just try it.
(...)
Just cloning it.
(...)
Well, that in, I'm not really committing directly to the vcv repository.
(...)
So I don't have to worry too much.
(...)
All right, now we're just going to open this directory.
(...)
Second hard drive code audio vcv book dog.
(...)
I got the wrong one.
(...)
Dog got it. Dog nog it.
(...)
Oh, woah. That foot code is under the vcv rack core. Wow.
(...)
Nice.(...) So basically we just need to find rack right here, pinned repository.
(...)
Same thing. I guess it's good that I cloned the book code anyway, but first we're going to build rack. And I guess I don't have to go...
(...)
I can just cd into rack.(...) And now...
(...)
It looks like rack has some sub modules like dependencies other C++ libraries, something like that. So we're going to pull those in.
(...)
View dependencies.
(...)
This is an interesting thing. The rack user interface is based on SVG. I suppose I can just bring up a rack real quick while we're waiting for this. I haven't configured my audio or anything like that, but here's my default rack patch.
(...)
These are just third-party modules except for this one, which says vcv and this one. What mentioned bog audio is like my favorite. This is count modular.
(...)
Really good stuff.
(...)
Count modular.
(...)
Bog audio. Really good stuff.
(...)
Impromptu is also really good. This is the best clock. My favorite clock. So it's got the base BPM clock and then you have these ratio clocks where you can multiply or divide the clock based on pretty arbitrary values, which gets you into like polymeters and even just doing different drum rhythms.
(...)
Typically, like a high high would be like,(...) drum kick my back, boom, boom, boom, boom, tick, tick, tick, tick, tick, tick, tick, tick, tick, tick, tick, tick, tick, tick, tick, and then we got down here is mind meld mix master. This is my favorite mixer and I'm using their eight channel one by default with a graphical EQ and it's also eight channels. You can swap through them a lot more than eight actually is up to 16 and it's got auxiliary and some group stuff because there's a mind map meld mix master big, bigger one that has 16 channels and this is the expanders so you can have a couple of sends here. It's really good. This is my base rack. I start off with this and then I can record directly from that fade in and out recordings and this module just creates a list of everything that is in my patch. So when I upload it to Git and yeah, mainly GitHub,(...) you know, attribution is all there.
(...)
VCV rack also keeps itself up to date. The library modules you install and the core VCV, you just kind of like say, okay, download and it'll handle that for you.
(...)
Very cool. Looks like Bethco has had a new release and then yeah, you just reload it. But let's get back to the code. It looks like all of our sub dependencies have downloaded and so now we're just going to make a dip.
(...)
It's going to build something. All right, we're building.
(...)
So I'll just make this a little bit bigger so we can see what's going on. I don't know what's going on, but we'll at least see the progress.
(...)
So that's a great sign that the book, the installation instructions so far have been up to date. All the dependencies, they were still available in the Ubuntu, the APT repository. The book was published in 2020, so it's relatively recent.
(...)
I think VCV rack two came out in 2022, something like that.
(...)
So yeah, it's about it. I'm not used to working much with C++(...) and it'll be a learning journey, compiling and everything.
(...)
But I guess what we're going to do is just make a hello world module that looks like this.
(...)
Also known as a blank. Blank is just when you have a gap in your patch and you want to fill it with something that looks nice, you can put a blank there.
(...)
There's a gap between modules.
(...)
The library, there's a lot of blanks. I'll show you some examples for tags. There are tag, blank.
(...)
Yeah, some of the blanks are just like logo blanks of the, you know, venom is this, this collection of modules and the venom blank is the module.
(...)
C side modular, they're actually good. I recommend this collection.
(...)
You know, some kind of retro looking things.
(...)
This is actually a text editor you can put in there and leave yourself notes or leave notes for the other people who are opening up here.(...) Patch this vertical separator. I think it's resizable so you can just put any arbitrary size there.
(...)
You can see some of them are just nice graphics. Usually they're logos though,(...) or accents,(...) accent colors.
(...)
Sometimes they're just fun.
(...)
There's an ADSR envelope.
(...)
This is a cool one. I think it,(...) I'm not sure how it works, but shebang modules are fun and it looks like this might be an animated one. This light one also is animated.
(...)
Here's a good one.(...) The rack modules are plugged together with cables. So these cable colors can be meaningful. Not everybody uses cable colors for semantic reasons. Some people just randomly patch and every time you put a new cable, every time you place a cable on a VC bracket, chooses a random color from a subset of colors.
(...)
You can also specify what color you'd like to be.
(...)
So this module might even have a shortcut key where I could say I want red cable.
(...)
I use a coloring standard, so to speak, created by Omri Cohen.
(...)
It says basically red is audio frequency signal.(...) Stuff you can hear.
(...)
Blue is for stuff coming from clocks or that are driving the, driving this kind of heartbeat. Blue triggers also and gates. Those are sort of the heartbeats of how things open and holding like the circulation and the heart opening and vessels opening.
(...)
Yellow is a special one that controls the pitch to make, you could say musical sounds, but it doesn't have to be musical. It'll just change the pitch.
(...)
Or it's called control voltage.
(...)
But this can also be green, can also be used to send control voltage. So they call it CV or volt per octave, sorry. So every volt that increases, you get a one octave jump, which maps really nicely.(...) It's easy to think about.(...) And I think two of the innovations of I guess, Moog and maybe Boogla, but particularly Moog uses the,(...) one is the modularity and the patching paradigm.(...) But Bob Moog particularly, I think, invented this volt per octave approach. I don't think Boogla uses a volt per octave.
(...)
And the volt per octave I think is one of the probably most user friendly innovations introduced by Moogla. Here's some blanks. These are Count Module as you can see.
(...)
And some other static ones. Maybe these are animated, I don't know.
(...)
A lot of different blanks.
(...)
So you can style your rack as well.
(...)
Generally, there's not a lot of categories of types of modules.(...) And there's definitely some overlap. But arpeggiators help you define series of notes or volt per octave values. Or you can put in three volt per octave signals and it will switch between those.
(...)
Attenuation is taking a signal and making it smaller.
(...)
Making it, we already looked at blanks.(...) Chorus is an audio effect that I think takes a sound and either detunes it or offsets it, phase offsets it. So it sounds a little thicker.
(...)
Clock generators are the heartbeat of the system.
(...)
And clock modulators will take that heartbeat and change it.(...) Multiplier divide for example.
(...)
Compressor is a way of keeping your volume levels in a more narrow range so they don't jump. I have a really big dynamic range. You can kind of push down on the peaks. But sometimes you can push up on the quiets. So it's like upward compression or downward compression.
(...)
Usually downward compression is what's important. Controllers, I don't know. There's probably just different buttons and stuff.
(...)
Yeah, kind of like interfaces. X and Y drag pad and some sliders and things.
(...)
Piano color choosers, interesting.
(...)
Different ways of...
(...)
I think it's human interfaces.(...) Delay is an audio effect that takes a signal and delays it by a number... Is that time or number of samples?
(...)
Digital I think are things that are dealing with a Boolean.(...) I'm not sure exactly what digital category means generally.
(...)
There's a tracker plug-in. If you're interested in tracker music, you can write tracker music sequences in the modular environment using this Bizet tracker.
(...)
I never got into tracker style notation. It's...(...) I get it. I sort of understand how it works in the columns. It just doesn't seem natural to me. Some people really do amazing work with that.
(...)
Distortion, pushing the sound to the levels beyond clipping or where the wave starts to fold.
(...)
They got dedicated drum plug-ins.
(...)
I guess these are dual multipurpose things. I don't know what dual generally means.
(...)
Dynamics involves the loudness of the sound. There's just myriad effects.
(...)
Envelope followers are things that can detect the level of the sound and give you a signal of how loud it was and then you can use that signal to do things.
(...)
Digital generators will make basically a line that can be used to control things like the volume. The ADSR was an example of an envelope that we saw under the blanks.
(...)
It's a particular type. It's a very common type of envelope.
(...)
Envelopes are just essentially lines but they usually start and end at zero.
(...)
So all of the values and they may be maxed out at one. So it's like zero to one. So the same, go from the minimal signal to the max. It's basically multiplying the signal by zero to one over some set amount of time.
(...)
And then go from the maximum signal down to a hold frequency, a hold level over some amount of time.
(...)
And hold that. And it looks like there's some slew on this hole that's going down but normally this is flat.
(...)
And then when I release the thing, there's a downward back to zero. So when I let off the key in this case,(...) they mentioned key off. It should return to the quiet but when you hit like a piano key or something, it doesn't immediately go to quiet. So we have this fall off.
(...)
Yeah, I could have done this compiling off stream but hey, I thought, you know, why not? Let's just take a look at the process.
(...)
I don't know what to expect. But you can see there's lots of function,(...) lots of categories.
(...)
I've been doing streaming of VCB Rack on another channel because I mainly focus on open source on this Twitch channel and on this YouTube channel. But it would be nice to just combine the two. I don't know how interested in modular synthesis people are. So I mainly just focus on the coding part. But now at least they're converging a bit if I start coding modular synthesis.
(...)
Because then I could really go into depth on what some of these do and show how they work.
(...)
And I didn't prepare but I could have been doing some. While we're waiting for this compiling, for example,(...) I can.
(...)
I'll do this in another stream but basically work with VCB Rack while we're waiting on slower things to happen.
(...)
I think we're almost compiled now.
(...)
It's just checking everything.
(...)
Good to go. Now that was just the dependencies.
(...)
Now I need to compile Rack. Now perhaps the dependencies would take longer to compile. But now we're just going to run make. This will make a Rack.
(...)
Error.
(...)
Blendish.
(...)
C.(...) That's what I was afraid of. I'm always a bit apprehensive about compiling stuff.
(...)
Yeah, and I didn't see anything.
(...)
Spin by. Heck, I don't know, there's a log.
(...)
So I'll mention this is one thing. It's slightly concerning about VCB Rack. It's open source.(...) But if you notice, there's no issues.
(...)
They've disabled the public issues,(...) which is still the code is open and open source license legit.
(...)
Andrew Belt is the core developer and they decided to close the issues, disable them.
(...)
I don't know the exact reasons. I think there might have been some hostilities or people having higher expectations or whatever. But yeah, we can't really track what the priorities are.
(...)
Yeah, and I did this.
(...)
Simple fix. Linux linkers are very order dependent these days in the makefile.
(...)
That needs to be that. All right.
(...)
Excellent.
(...)
Standalone target.
(...)
Standalone sources. This thing, wow.(...) And that was in 2021 that was repaired.
(...)
Why is not in the makefile? Let's find it.
(...)
Okay.
(...)
So standalone target is standalone sources,(...) standalone objects.
(...)
Oh,(...) they did fix that.
(...)
Issue tracker would be nice.
(...)
Build files cannot be regenerated correctly.
(...)
Linked by target artsy audio.
(...)
The following variables using this project they are set to not found. Please set them or make sure they are set and tested correctly in the CMakefiles.
(...)
So this could be a hint.
(...)
That CMake couldn't find pulse lib.
(...)
So there we are. So there's a suggestion.
(...)
So the book I believe omitted this dependency.
(...)
Let's see if we can find something there.
(...)
Alright, I'll tell you what.
(...)
While we're doing that let's have some fun.(...) BCB Rack.
(...)
Plugging in.
(...)
Got my headphones on.
(...)
Yeah, if it doesn't work, heck.
(...)
The trouble sheet is offline but you get the point.
(...)
In order to develop BCB Rack you have to build it from source. And then your development modules will be linked against the source. Then we'll be good to go.
(...)
See they mention all of this and that would be cool.
(...)
If there was just like a "Hey,(...) copy and paste this."
(...)
I don't know how to get all those installed.
(...)
But at least they're listed.
(...)
I hope I got everything now.
(...)
Pfft. Alright, cool.
(...)
So clone it again.(...) Go ahead.
(...)
CD Rack.
(...)
And then I think I think at that point it was just make depth. Make depth, right? No, no, git.
(...)
You know like a little bash script would be good here. Git module update.
(...)
Recursive.
(...)
And then you can do it in it.
(...)
Well, I think you can do it here.
(...)
Boom. Pulling everybody in. So a lot of the dependencies are there that were mentioned in the read me. But I have to be able to compile them and some of them I think didn't compile.
(...)
Now there was probably a build.log or something that I could have looked in for errors. To see which one of these couldn't build.
(...)
There might be like a read me.
(...)
I like the development side. I don't know if there is one. Support manual.
(...)
Part of the way I got the BCB Pro is that I could do some support.(...) But I think development. So just getting a started guide would be great.
(...)
But they jump straight into coding. That's fine, that's fine. I'm not complaining.
(...)
So we did that. Now we'll just make depth again.
(...)
And go take a nap.
(...)
Actually it's getting close to bedtime.
(...)
Okay, but hey, let's see. Can I get some audio into this stream from the CV?
(...)
So here let me just check my headphones first.
(...)
We'll put in a little bit of square waves.
(...)
What is that? That's not a square wave. It's a saw. Saw tooth wave.
(...)
Whoop, that worked. Okay, good.
(...)
It was like an electric shock. I'll just turn that down for a minute.(...) And then...
(...)
So we got something there and I'm going to put it here. And then I think I'll just add my desktop audio sound source.
(...)
Audio output capture.
(...)
It's going to be buzzy.
(...)
But at least I hope you hear something.
(...)
The problem could be that I'm on also, not pulse.
(...)
Problem is when I switch to pulse, everything goes to...
(...)
Linux audio is a bit of a frustration.
(...)
Yeah, it doesn't look like it's going to work.(...) The other option is to just do a window capture.
(...)
It didn't work. So the final option I'll choose, and it might be that I would need to restart OBS. But if I go to audio and I say my desktop audio and I enable that to analog stereo, I hit apply.
(...)
Do we get anything?
(...)
Okay, and then what if I now restart VCB rack? Just this is an experiment while we're waiting for it to compile. So if it doesn't work, it doesn't work. Now, it doesn't look like I'm going to get anything.
(...)
Not with also.
(...)
Pulse has severe issues. I don't know what's going on there.
(...)
And Jack is not running, nor is my... This is just such a mess. Why do I have to juggle three of them and none of them really work half the time for certain things? It's just such a frustration. That's why I really tried for many years to make music with open source stuff on Linux. It just was too much of stress and not enough creativity involved, unfortunately,(...) for me.
(...)
So I've been much more productive on other computers.
(...)
At least I have a rack here running and just making output in my speakers and figuring out if I can stream it will be another question.
(...)
But I might be able to plug in.
(...)
Switch to my built-in audio stereo.
(...)
Audio ]
(...)
OK. There we have some audio. So, I just had to switch to my desktop, my built-in one, and...
(...)
It was stuttering, so what I did is I just increased my block size. It should increase its latency, but it shouldn't affect us since I'm not recording. I decreased the sample rate,(...) so my computer can kind of, hopefully not create too many blocks. So now we have this sound here as a saw wave.
(...)
So it doesn't sound very musical right now, but we can make it kind of musical. That's what I usually try to do, is not to do too much noise, but have a balance between noise and the musicality. So for example,(...) we can get a sequencer. I'll make a little melody here just to show you how the sequencing works.
(...)
A sequence is just a series. It's like a memory. It's a stored memory.
(...)
The built-in one, I'll just start with that. This one's built into VCD Rack, and each of these knobs represents a value. They're all set to zero right now, and it's got an internal clock. You can see that's kind of like the heartbeat.
(...)
And basically, I like to use blue for clock, and now we'll set the clock here, but this is 120s are usually pretty fast, so I'll go a little bit slower.
(...)
And if I put this back into the speaker,(...) this is set to a pitch right now, C4, and I can turn this knob to change that.(...) What we typically want to do is not want to play this knob over and over.
(...)
I'm not sure how loud that is.(...) So essentially what I can do is set some values. I'll randomize the values so just all the knobs got turned there, and I'll put this yellow cable into this volt per octave.
(...)
And the range of these is so big you could hear that the octaves were all over the place.
(...)
So let me go to one of my favorite sequencers, but nonetheless, you could hear that it was changing.
(...)
And I'll go towards a more musical sequencer. So this one does a couple of things. One is it allows me to specify piano notes. So these are five notes called the pentatonic scale. And the other thing is then all the buttons that are within a couple of octaves, so between three and five.
(...)
So those aren't so like, and I can change octave range. So it's plus or minus one octave from middle C. I'll just randomize all these knobs. Also let me set the pattern length, but now I can take this clock and I can just start the heartbeat here.(...) So then what we'll see is this light above here. Every time that heartbeats, the light moves. These are just stored memory locations that we just have the knob that we can twiddle.
(...)
And then each row has an output called CV, meaning control voltage. But in this case, I'm using control the pitch of the oscillator, the modern VCO.(...) Again it's going to sound a little bit harsh, but at least it will sound more musical this time.
(...)
And I'll get a little bit more musical after that red is for audio.
(...)
So now we have a basic melody.
(...)
But if you notice how the volume isn't changing it, what we can do here is put an envelope in to get even more natural sounding. So that's done through what's called an attenuator or a VCA,(...) voltage controlled amplifier, which is actually an attenuator. This takes a signal in and modifies it. And you might already recognize this because this slider is also an attenuator.
(...)
What happens is that this slider can go above zero, so it can actually amplify the sound.(...) But here I can do the same thing, turn it down.
(...)
Now the key is, and the power that comes from these modular systems is the control voltage, the CV. I mentioned that control voltage and volt per octave are the two most amazing aspects of modular synthesis, and particularly the east coast style pioneered by Bob Moe.
(...)
Control voltage lets me turn knob, modify something in the system automatically using other sources.(...) And what we're going to do is just put an envelope source here, envelope generator. Let me thank you for just a moment. Yes,(...) we will use, it's kind of hard to see, so let me just zoom in a bit bigger.
(...)
We use what's called an attack and decay by my favorite bog audio.
(...)
So every time this clock goes,(...) it creates like a pulse that I can use to trigger. Boom, this AD envelope, you can see, boom, boom, it's triggered each time. You can see there's also a little delay between this attack and decay because this attack goes through a full cycle that lasts 0.2 seconds and then the decay starts. So what I do then is I use this envelope which is a formal modulation and I plug it in like that. I patch these in.
(...)
So now it's starting to get a little more musical to where I feel comfortable turning it up back to zero.
(...)
In fact, it looks like the desktop audio is kind of quiet compared to my voice.
(...)
So you can see it just repeats.
(...)
But let's try for some kind of counterpoint. So I just selected those and I copied them. This is something you can't do obviously in hardware.
(...)
All of this and this has four rows and I mentioned this clock has multiple time signatures.
(...)
So what I can do is set this second row to go at the same time signature right now which multiplied by one which is identity and the length is only set to one. So it's actually not going anywhere but let's maybe set the length to three.
(...)
And I'll turn off stack for now just for a moment to make this more apparent what it's doing.
(...)
So now I have control of the voltage which I can put in the volt per octave just like we did before.(...) Then the output signal goes into our VCA and the envelope is triggered by the same clock. So actually that was the wrong clock.(...) Same clock is on the row. It can be. This is all optional. It's like totally a creative endeavor. Everything you do opens up more possibilities it feels like.
(...)
So now I'll put the audio out from this one to the mixer and we'll see here what it does.
(...)
So we can see.
(...)
We can hear that there's a counterpoint.
(...)
Oops. I messed up that. And my envelope is on. Sorry. So that's the end of the video. I hope that you enjoyed this video. I hope you enjoyed it. I'll see you next time.
(...)
[music] And for example, I don't know if this will come through if I can pan them a little bit.
(...)
And both of these are now tuned to absolute basically. So it will be sort of like moving voices together.
(...)
That means even though we only have three voices, all of them are relative to what's going on here.
(...)
So it gives us a little more variation in the right here.
(...)
Let's go ahead and stack one more voicing and I'll show you another trick.
(...)
These two voices are in different ears but in the same range which is kind of nice.
(...)
But I have it. I think it's an utility. It's called the octave. And we can shift a voice. So I'm just going to... Oops. But I'm going to go up. And we'll take this third one.
(...)
And both of these are in the same key signature by the way. So maybe I can change that already.
(...)
Interesting.
(...)
I'll come back to this a bit but it's kind of a nice phasing signal but if I go slower you'll make more sense.
(...)
Perhaps.
(...)
Alright, so now our next clock is multiplied by four. Let's check this out. This is a bit fast but we'll go ahead and trigger our envelope. I'll just wire up the envelope first.
(...)
And eventually I'm going to probably have to tweak these.(...) But here it is.
(...)
The envelope should be really fast now. I can't have such a long time because this is triggering so much faster.
(...)
And then four times clock can power this. This is an eight length sequence.(...) And I can run the CV out to the little proctave in.
(...)
And then I can go into the envelope, the little VCA.(...) And now we have one that's moving kind of faster.
(...)
And to this eight it sort of comes in.
(...)
Sort of phasing in with this other one. We're going to make it seven for example.
(...)
It'll be slightly out of phasing.
(...)
Or I can make them all around.(...) But what I wanted to do is take this fast note and usually faster things can live at a higher altitude.
(...)
They move faster.
(...)
I think they're like birds and things.
(...)
So it should be cool.
(...)
Now a couple things we can do. One,(...) the voices don't have to sing every note. They can kind of skip some notes.
(...)
So there's a plugin called Bernoulli Gate.
(...)
Chances is a good one. Both Bernoulli Gate and Chances are good.
(...)
There's a very little switch from Venom as well. So I recommend this Calmodula set. It's really good. And the musical instruments, there's an audible instrument that has a few plugins.
(...)
What we'll do is take this Bernoulli Gate,(...) Chances, and since it kind of explains itself a little bit better.
(...)
And it takes an input signal. So we'll take this clock coming in and we'll put it out so it goes back to the trigger.
(...)
But what it does is say, okay 100% of the time it'll go to Gate A.
(...)
0% of the time Gate B.
(...)
So now we're basically at the same thing before, but it can decrease the probability of the voice sounding.
(...)
50%.
(...)
So we open up some space. We're going to fill that space in a minute. We haven't gotten to the effects processing.
(...)
But for example,(...) same thing. We take this trigger,(...) set the probability to 100 and then we'll back it off a bit.
(...)
What tune is? [music] Maybe 50% there.
(...)
One time duplicate it.
(...)
And it defaults to 50 so we'll leave it there.
(...)
[music] Two things we can do now. Add some effects and add some modulation.
(...)
I think it would be most apparent if I... [music]
(...)
Add the modulation first.
(...)
Okay. So since we've cleared this search, we'll show you a little bit of modulation that is a homotour. A common one called a low frequency oscillator.(...) And there's several of these there.
(...)
Nice to use. Notice that a lot of the modules are for generative sound.
(...)
I'm going to go a little bit smaller this, but you get the picture there. Now we can see them a little bit better.
(...)
So there's some modules that are driven by months, hours, days, weeks, very long.
(...)
Some of them are driven by the clock.
(...)
So if I feed this...
(...)
...prog clock and you'll start to see it spinning. So every...(...) depending on the multiplication division,(...) you can have a signal that changes over time.
(...)
I'll show you real quick what that looks like visually. Whoops.
(...)
Visually.
(...)
On a scope... just a bunch of scopes, visual... Let's take a, for example, sine wave trigonometry.
(...)
Here we go.
(...)
I can see a sine wave and start to understand... whoa. Sine waves are pretty cool.
(...)
It's going a little bit faster. All this is doing is kind of zooming it in. It's not changing the speed or anything like that. It's just making it so we can watch it. So I can use this signal, though, green for modulation to control something on this VCO. This has what's called a modulation matrix, so you can't really see it. But now you can. This blue button, I toggle it on above this mod 1 and I can say, "What do I want to modulate?" Let's modulate the width between this low value and this high value using this input signal.
(...)
And so we'll see it in here some movement there.
(...)
It's the same principle with this.(...) I would just do a different division.
(...)
We can use the sine wave again.
(...)
We're going to mod matrix and mod of saw and mod of pulse, but opposite direction there is the blues on the right, positives on the right,(...) negatives on the left. This one I inverted it.
(...)
And heck, maybe let's do some more pulse here. And I can use both of these in conjunction, actually.
(...)
A complex modulation.
(...)
See how they enter or land it.(...) So we have a little bit of shifting timbre. It's all based on wave folding and sounds good.
(...)
It's got a lot of harmonic content.
(...)
Now that we have a little bit more space, though.
(...)
Let's fill it with a delay.
(...)
I'll leave these main ones plugged in from now, but for each of these I'm going to output to a delay the left channel.
(...)
I'm going to clock the delay so it's musical so that it constrains and adheres to the musical clock. And I'll put them...
(...)
Already we're a lot fuller.
(...)
And we're half no delay.
(...)
Sounds good though. Turn the feedback down a little bit. And offset. I'll put this one on the whole note, or the quarter note, but...
(...)
I'm not sure what the word really is. I don't want to put this one in as I...
(...)
Triplet or dotted.
(...)
Usually dotted.
(...)
Let's repeat that twice. And one thing I realize is I... I took the output from the wrong place.
(...)
There we go. I took the output from before the VCA, so where it was a constant tone and it was really filling the space.
(...)
So I need to take it post-VCA, so from the VCA in other words.
(...)
To the left input.
(...)
And I have stereo outwards. This one's not on the grid yet, so let's put that on the same grid.
(...)
See the change from seconds to the grid notes.
(...)
So watch when I take this to the clock here and I let go. And so I have one second right now.(...) Since this one's pretty quick, let's do an experiment here.
(...)
With like quarter note dotted.
(...)
Just to hear what it sounds like.
(...)
I like red for audio out.
(...)
And rather than repeating it in the same ear, it's going to cross. It's going to ping pong.
(...)
[music] [music] [music] [music] [music] [music] [music] [music] [music] [music] [music] [music]
(...)
So now we have these dancing melodies. I haven't even done much percussive percussion. But even if I switch to take off the stacking.
(...)
[music] [music] [music] [music] [music] It becomes more regular, but still a lot of randomness because of the chance we've introduced. One thing we can do to smooth out the whole signal and give it a sense of space is reverb.(...) The colon says reverb is live.
(...)
And one of my favorite, two of my favorite reverb I guess is just the surge. Which is actually two, but this plateau. And we're going to use this plateau on the auxiliary send. So how this works is,(...) send goes out to the input of the plugin.
(...)
From left and right channel. And then the plugin returns it. From the plugin output to the return value. Left return. Right return.
(...)
Now this is designed to that.
(...)
It will enhance the sound. So we don't need the actual original sound. We just want the wet sound. But due to the nature of this plateau, I'm not going to put the wet level at 100 because it kind of gets a little bit runaway.
(...)
So then now that we've got this wired up, we can actually use it. So we've got A,(...) B,(...) C,(...) and then we'll call this A delay, A-D,(...) B delay,(...) C delay. When I give these names, then it makes it easier for me to kind of see what I'm editing here. So we guys see the line. And then I can take the red auxiliary send. There's red, orange, blue, and purple. And I can slowly feed it in.
(...)
Really big space.
(...)
Small space.
(...)
Make the space small.(...) Then open up the delay again.
(...)
To where I can small really.
(...)
But the reverb is just intense almost.
(...)
Pure reverb there.
(...)
Medium sized room.
(...)
You can hear the room get big right there.
(...)
Sometimes you get a lot of high, so it's a good look at the high.
(...)
And then we'll cut out the low.
(...)
And put it on the relative to be good value, but you've got to just explore the sound there.
(...)
And then we want to make it a minor.
(...)
Ah, minor.
(...)
More suspended.
(...)
[music]
(...)
Make it a whole time.
(...)
[music]
(...)
Change the tonality around a bit.
(...)
In and out of balance, I guess. Harmonic balance.(...) Have some dissonance.
(...)
[music] And this is why we consider generative music, mainly due to the introduction of chants. [music] [music] But it might be nice to have a little bit of a rhythm.
(...)
So here's an idea. What an awesome... The sequence here is just a nice drum rhythm.
(...)
[music] Kick-a-ball.
(...)
For example,(...) with this multiplied by four clock, I can run directly in.
(...)
And I will use it as a trigger for our bass drum, and I will put the output.
(...)
Sorry,(...) not multiplied by four, but that's interesting.
(...)
[music]
(...)
And for a simple one, actually let's use this oscillator.
(...)
It's really relaxing.
(...)
And we use one called Palette. It has this nice set of percussive oscillators as well as tonal oscillators.
(...)
And this one can run at the four times clock. Let's just pop that in there. We'll trigger it.
(...)
Trigger input here, and I will put the output.
(...)
Mix to...
(...)
And we'll do a... It's a SVG interface, which I started to use earlier.(...) I mentioned it earlier.
(...)
There we go.(...) So it's giving me that nice choke.
(...)
[music]
(...)
Lots of modulation here.
(...)
[music]
(...)
So now we sort of get that idea.
(...)
What I want to do with the modular. So some of that was just low frequency oscillator.
(...)
It could be that they run at different frequencies, though, isn't it? I haven't really found one that's...
(...)
It's giving me different intervals, but they're at the same frequency. Unless we can do that here with quad LFO, for example.
(...)
So this goes four oscillators at controllable phase angles. So I can put a modulator here on the filter and attenuate it.
(...)
[music] So I got something like this up here. And if I can reuse this one...
(...)
So I saw two output modulating all the way down to the decay. [music] So we kind of get that.
(...)
[music]
(...)
I think we can have some chance on the hat as well, right?
(...)
It's nice, but... [music]
(...)
More often.(...) But one thing we can do is burst.
(...)
It's an idea.(...) [music]
(...)
I couldn't get this one to work. I tried this one.
(...)
I was doing something wrong.
(...)
Well, let me try it. So if I get like a... All of our clocks are busy.
(...)
But since this is a multiple of one, I'll just put it at the main clock and I can multiply this by... I got 11. So we'll drive this burst generator with a multiple of 11 clocks. See if I can get this to work. I think the external clock goes here, right? Because the labels are above. So external clock goes here.
(...)
So that means that when we get a trigger...
(...)
So more than I trigger this, every... this is another thing we needed.
(...)
Trigger.
(...)
These are all multiple. I don't want it to go all the time.
(...)
Well, one thing I do is again, with chance,(...) give it a really low chance. And this is my slowest new PM.
(...)
So it would be basically a random, a really low... Well, let's just get it up here. And we'll use this as a trigger. It's called a trigger gate and it'll trigger this.
(...)
Hmm, this didn't work out how I thought.
(...)
So I'm going to add...
(...)
(music)
(...)
We'll just essentially add a mix or a CD mixer.
(...)
Mixing six signals.
(...)
Or a CD mixer. It should be the same.(...) So basically I'll either get...
(...)
Compulses or not.
(...)
Zero.
(...)
There we go. We start to mix it up a bit.
(...)
Just add a little flamethrower to it. I don't know if it'll sound good.
(...)
More subtle.
(...)
The thing I haven't really used is filters. These are all just kind of doing their own thing.
(...)
So I'm going to rate the mixer I can add with a filter.
(...)
There's a little bit of this up over here.
(...)
It's either surge or bob out of your eye. They're both so good.
(...)
Let's do a little bit of both.
(...)
I'm not an emotioner. This one also,(...) post-loser.
(...)
Let's check it out.
(...)
(music) This could come up a little bit higher. I think it'll be quiet.
(...)
(music)
(...)
I'll do it for a second.
(...)
Let's do this. One I haven't introduced is Walk.
(...)
This is a low frequency oscillator, but it uses Brownian noise, I think, so that it's always connected but moving randomly. At every moment it makes a decision about which direction to walk.(...) It's more like a foraging animal. So it's kind of cool. I get X and Y. So you get Cartesian coordinate systems. You get two outputs. So I can use this to drive, for example, the CV. I can see it makes me walk.
(...)
Filter up and down,(...) facing the value. So let's make it move a little bit faster.
(...)
The other one I can use for something else.
(...)
I don't know what, but sometimes I like a little bit of modulation.
(...)
This is a bit dangerous, but on the delay. See what works.(...) Why not?
(...)
I didn't quite work today.(...) Let's take it off the way.
(...)
[music]
(...)
Pretty cool stuff.
(...)
So now we have these extras. We've got kick.
(...)
We're just giving it a drive and it's sort of a hat.
(...)
And I'll put some movement on the hat.
(...)
And maybe a bit.
(...)
Kick, but we don't need to be too muddy. [music]
(...)
Maybe we could use one of these to add a little bit of modulation. Modulation with decay.
(...)
Some kind of accent.
(...)
I had too many of them as well. So we kind of get the idea. Looks like we're compiling as well.
(...)
See, it's almost 9 p.m. I'm getting a little bit tired, but it looks like we successfully were able to compile RAC today. We made a nice little piece. And I don't know if I'll converge these two paths of open source development and music creation into a single channel.
(...)
This is a bit of an insight into what it's like to work with PCB RAC at the very least.
(...)
[music] Very cool.(...) So yeah, it's fun stuff.
(...)
I think it feels therapeutic to me. It's very relaxing.
(...)
Yeah, so thanks for checking it out. Thanks for stopping by.
(...)
I hope in another live code session we'll be digging a bit into the C++ code for developing our own RAC modules.
(...)
Today we were able to get RAC compiled.
(...)
And now we can use a generator function to generate a hello world module.
(...)
I'll do that in another session.(...) So again, thanks for stopping by. I hope you're doing well and have a great day.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment