Page 1 of 4

Eno-style generative music project

PostPosted: Thu Nov 07, 2019 6:16 am
by k brown
This thread will track the progress of a project that will produce a generative music output inspired by the '2/1' track from Brian Eno's 'Music for Airports' seminal Ambient album. Based on a SM project I roughed-in years ago, tulamide's thread about Procedural Generation (only slightly related) jogged me into fleshing this out and polishing it up.

It uses slow square LFOs to trigger simple envelopes to shape the notes; the LFO rates determine how often each note appears. The original Eno piece utilized seven physical tape loops of unrelated lengths that wold take two and half days to start repeating the pattern.

Spogg is the only one to express interest so far so maybe we'll collaborate on this one; I'll take suggestions from any one who cares to weigh in.

This is how one of seven channels looks at this point. After much reflection I think FM provides the most variety of usable timbres for this with the lightest CPU load - no filters required. Plus, it's appropriate because the DX7 was Eno's favored synth for many years. Each 'voice' would contain only three of Martin's Polynominal sine oscs. I believe a three-op configuration gives an optimal balance of timbral variety and low CPU. A single switch allows the three to be configured as a three-op stack, or a two-into-one 'branch' algo. Each Op's output can be swept to any extent by the output envelope, and feedback can be applied to either Modulator. Pink or Purple Noise can be mixed in. Each 'voice' can be stereo panned.

Two_Two Ch copy.jpg
Two_Two Ch copy.jpg (35.45 KiB) Viewed 16333 times

The algo is 'laying on it's side', with 'top' Modulator on the left, followed by the middle Modulator, then the Carrier.

Eno's original piece utilized more or less identical sounds on each loop, so I may do two versions of this, with one having a single set of operator and envelope controls to set the same sound for each of the seven 'voices'.

If CPU ends up low enough, might include a couple of FX (delay and Martin's lovely MVerb 7b).

Re: Eno-style generative music project

PostPosted: Thu Nov 07, 2019 8:57 am
by k brown
First rough assembly - CPU is about 30%, would appreciate any ideas on how get it lower.

Also, anyone know how to set his thing running and let it go on it's own without holding a key down. I've always used a quirk of VSTHost, where if one clicks on a plugin's GUI while holding down a key, the note will hold after releasing the key, only stopping when clicking a key again. Can there be a GUI panel switch that will just set this going?

One_Two copy.jpg
One_Two copy.jpg (193.44 KiB) Viewed 16328 times

One_Two.fsm
(1.31 MiB) Downloaded 991 times

Re: Eno-style generative music project

PostPosted: Thu Nov 07, 2019 12:10 pm
by Spogg
I just had a quick go with this and I love it!

FS showed me about 7% CPU while the synth was running (core i7) which I think is perfectly acceptable.

I’ve attached a module I sometimes use which turns a set note on and off. It might be useful to start your synth going.

Using my midi keyboard I got clicks when I pressed a new note. I don’t know if that’s an easy or complicated thing to put right, but I think it would be nice to have influence over the notes playing. I know that goes against the principle idea of just running forever on its own, but I think it would be a nice option, if it’s possible.

Cheers

Spogg

Re: Eno-style generative music project

PostPosted: Fri Nov 08, 2019 4:49 pm
by k brown
That's good to hear - I can probably incorporate delay and reverb then.

Just added LFO mod of either or both modulators and the ability to solo edit each voice, which 'sounds' with each key press while soloing, without having to wait for it's loop to repeat (could you have look at how I implemented this - there's probably a simpler, more elegant way to do it - it's inside the All/Solo button, with wireless connections to each EG's trigger module). Haven't updated the OP yet.

A cool trick to remember with a three-stack is, with the first modulator in Fix Fr mode set to 1-6 Hz or so, it acts as vibrato, so each voice can have it's own speed and depth of vibrato, leaving the LFO for modulating timbre at a different (global) rate and independent depths. Independent vibrato needs to be very subtle though, or it can sound like a smeary mess.

Going to try adding a random mode to panning, so that a voice will appear at a different stereo position each time it's heard. Could also be useful to add randomization to the EGs' attack rates.

Thanks for the note on/off - I'll experiment with that.

Re: Eno-style generative music project

PostPosted: Fri Nov 08, 2019 6:21 pm
by Spogg
Very exciting! :D

Speaking of randomness, what about having two feeds into the reverb? A dry and a pure reverb only. Then, when a new note sounds, it’s randomly mixed into the dry and wet inputs and the randomised dry/wet mix stays until the next note sounds. This might give the effect of varying distances from the listener, on a per-note basis.

I know what I mean anyway! :lol:

Cheers

Spogg

Re: Eno-style generative music project

PostPosted: Fri Nov 08, 2019 8:32 pm
by k brown
Well, at least I was going to have a switch to toggle 'Delay + Reverb' or 'Send / Return Reverb', which would have send and return controls for each voice, so each one could be placed a different distance away from the listener; possibly randomizable. To do that with Delay also, would require a Delay for each voice - too much CPU.

Already cooking up how do a single plugin to replicate (and experiment with variations of) 'Discreet Music' :D :ugeek:

Re: Eno-style generative music project

PostPosted: Fri Nov 08, 2019 9:50 pm
by k brown
Boy, I'm really gonna show my true colors here - my brain is boiling over tying to puzzle this out. Would giving each voice it's own wet/dry mix require a separate reverb for each? Otherwise, when several notes are sounding at once, how could each have it's own wet/dry mix with a single reverb? I'm trying to think in terms of a studio mixing board with sends and returns - in the old days with a studio having single echo chamber, couldn't they give each element of a mix it's own reverb amount? I feel like the answer lies in your last post, but :oops: :cry:

I'm trying to do this MVerb 7B, but with the poly and the mono, the packing and unpacking - aarghh! :(

I feel like such an idiot.

Here's is it's current state -
twOOne.fsm
(1.4 MiB) Downloaded 999 times

Re: Eno-style generative music project

PostPosted: Sat Nov 09, 2019 5:39 am
by guyman
Hey bro, forgive me I'm busy and haven't had time to play with it yet to enjoy your creation, but I think I can solve your reverb issue, based on your description.

Just from opening it up, I see you have 7 channel strips here, all driving different sounds, running in poly, triggered by midi.

IF THESE STRIPS ARE WHAT YOU WANT INDIVIDUAL WET/DRY CONTROLS FOR THE VERB:

Simply treat the verb like a separate master.
Keep the entire chain you have now, intact.
Run up ONE reverb module and it's controls, EXCEPT ONLY output the WET signal, and give yourself a master volume for that output. Then run 7 parallel connections (14 for stereo), one (pair) from each channel, to the one stereo input on this reverb module, BUT: Place an amp/vol. multiplier in between the channel and the verb. try a knob value to multiply it by of say 0-2 or 0-3. These 7 knobs/amps are now your sends to control how much of each sound/channels goes to the room/verb, and the verb would have it's own master vol. control. This is all running parallel around your selectors, ending with stereo outputs from the verb joining your dry signal at the combiners.
This set up I think is the most effective, and pretty much identical to the analog "room sends" description you mentioned above (which I'm accustomed to 8-) .)

Another cool thing about this, is that it would allow you to opt to hear the verb/wet signal of one of your strips, without hearing it's dry signal, adding more feature to your device. This is by turning the dry off at selector or maybe running THIS NEW SEND vol, PARALLEL to THE OUTPUT GAIN, inside your Level/pan on each channel out - instead of after like I described above.

Again I haven't even played with it yet, so I hope I'm in the ballpark and it turns out good.

If you are going for something even more complex, modular verb... use martins poly voice separator I inquired about recently. it will take each literal poly voice (literally each note played on midi) and separate it into mono streams, which can then be controlled individually, based on the order they are played. This of course ending in spaghetti string schematic hell, and probably overkill.

Much like the above directions.

Good luck and God Speed.



~ That Guy

Re: Eno-style generative music project

PostPosted: Sat Nov 09, 2019 7:18 am
by k brown
Thanks for this - I'm pretty sure I follow what you're saying; I'll give it a go, and thanks for having a look.

Re: Eno-style generative music project

PostPosted: Sat Nov 09, 2019 9:01 am
by Spogg
Yes I think guyman explained it much better than I did. :lol:

The reverb module has NO dry in its own output; it’s only the wet sound. So you direct each channel either to the output directly (bypassing the reverb) or partially to the output directly and partially to the reverb’s input.
My idea was that this mixture would be randomised for each note and the mixture would hold for its duration. The next note could sound dryer and closer or more distant for an ethereal effect.

And of course you only need one reverb module running in mono blue.

Cheers

Spogg