Showing posts with label live. Show all posts
Showing posts with label live. Show all posts

Friday, 21 August 2020

Customised Synthstrom Audible Deluge

One of my background tasks for the past few months has been researching mid-to-high-end 'grooveboxes'. Whilst the marketplace has lots of low cost (sub $500~) examples of 'single portable boxes that can create music using MIDI and samples' (aka grooveboxes, although there are much more sophisticated and complex definitions), from Teenage Engineering's Pocket Operators, OP-1/Z, the Roland MC-101, Novation's (hard to beat) Circuit, Korg's Electribe 2, Elektron's Digitone/Digitakt and Model:Cycles, Polyend's Tracker, the 1010 Music Blackbox, plus many more, the next level up is significantly more sparsely populated and much more diverse in approaches. Doubling the budget ($500-$1000 and more) can get you a much more capable device, but I wanted to know which one was best suited to my way of thinking? 

(The title of this post kind of gives away the end result, of course!)

Many years ago, I remember being greeted with a certain amount of disbelief when I expressed my opinion that the major deciding factor in choosing a DAW should be the workflow and its alignment with your own internal mental model of how to make music. It seemed that brand-name, who else used it, resolution, number of tracks, latency, bundled plug-ins and many other factors were far more important to many people. My opinion hasn't changed, although I have found that I have increasingly moved to the 'boutique' end of the market: small, independent manufacturers who tend to be musicians and technologists. As an example, my most sophisticated pedal is a Poly:Digit, which isn't exactly mainstream...

The other vitally important word in that brief definition is 'single'. When I go away from a DAW with access to external hardware synths and effects, into the 'live performance' scenario, then I'm looking for ideally one box, and probably three boxes maximum. I've played the game of having lots of equipment to set up and tear down, and like most people who have done that more than a few times, I have decided that:

Simplicity Means Less To Go Wrong! 

But back to those 'next level up' grooveboxes. So what are the main contenders? I whittled the list down to these:

- Elektron Octatrack (mk1 or mk2 (mk2 is a makeover that is probably more like a 1+))

- Roland MC-707

- ModDuo X

- Synthstrom Audible Deluge

- Akai Force

- plus a few others that were fighting for attention (MPCs!), and I even considered a few no-longer-current devices - even though trying to find second hand gear can be stressful... 

As always, your favourite is probably missing from this shortlist. Note that I deliberately rejected these whole categories:

- hardware 'sequencer-only' devices (no Squarp Pyramid or Polyend Seq or Social Entropy Engine...) 

- hardware controllers that require a DAW or computer (NI Maschine, Ableton Push...)

- modular 'sequencers plus a few modules'. (Creeping module purchases means your rig is never quite finished...)

My opinions

After months of careful research, here's my personal opinions:

- Elektron Octatrack. 

The Octatrack has been bubbling under on my GAS list for a long time. And that's probably the main issue - it has been around for so long that it may be about to be replaced, and I hate buying something which is immediately replaced by something much better for less money! 

Pros. Flexible sample playback, a song-mode sequencer (the Digitone and Digitakt lose points because of their lack of song support), and some neat processing. The eight channle scan also be used as a mixer, which is interesting. Looping support is also good. The Mark II's slider control is definitely a good reason to go for this in preference to the Mark I.

Cons. Seems to be difficult to learn. This might be the classic 'I will say it is hard to use because that makes me look good!' situation, but the YouTube video's of people using Octatracks seem to reinforce the amount of learning that is required. Is complexity what I want in a live environment? Probably not. Also, most people seem to use other gear with an Octatrack, so that's a concern. Finally, there's the nagging doubt that there's probably a Mark III in the pipeline, or maybe even a total revision.

- Roland MC-707

My first album was recorded using a TB-303, a TR-606 a Sequential Pro-One and a Casio CT-1000, and I've currently got a heavily modded TR-505, so I'm no stranger to Roland gear. The MC-707 is kind of what I reckon an Elektron Octatrack 3 might be like, although with a different workflow...

Pros. Ableton Live-style grid is a plus. Lots of immediately editable sounds without any need for a computer (probably the top feature request for the Novation Circuit 2). 

Cons. No song-mode is a major disadvantage. At the sub-$500 price-point then this is acceptable, but I've spent too long with old school drum machines to want me to be constantly controlling what is happening. No way to send MIDI CCs might also be a problem if I was going to use it with anything else... No 'Scale' mode for the buttons is weird when most of the sub-$500 group have this! Having to effectively sacrifice a track to sequence external MIDI is strange, but again, for a single box then this is not as important as it might be if I was using this as the centre-piece of a studio. 

- ModDuo X

I've been trying to buy one of these for over a year now, and it seems to be permanently out of stock, with pre-orders all being consumed in a few seconds of the site accepting them. So I've more or less given up on this one. I talked to Mod at one of the Ableton Loop events, and they seemed very confident, maybe not in a good way. Given their apparent supply chain problems, maybe my gut feeling was correct... 

- Synthstrom Audible Deluge

Definitely a 'boutique' device, this goes against the grain in all the right ways. No display - well, not a display in the conventional sense, although if you scaled up a Novation Circuit, it could well look a lot like this. An interesting design, with unusual/novel controls that make a lot of sense. 

Pros. Small, light, song-mode (plus arranger functions), Subtractive and FM synths, sample replay, and looping. Comprehensive features and a very good firmware update policy (frequent!). Seems to think the same way that I do!

Cons. Using the display as the main control means that you can spend a lot of time jumping in and out of song mode. As with the Octatrack, there seem to be a lot of shortcuts that require muscle-memory to learn. 

- Akai Force

I immediately thought of a 'DAW in a box' when I first saw this, and this is too much like a Push and Ableton Live. I would struggle to say that I was 'DAWless' if I used one of these.

The result?

I went for a Synthstrom Audible Deluge (a 'Deluge' from this point onwards). It offered the features I wanted, the size and weight and convenience, and a pretty good 'single box' solution. When it arrived, the adapter envelope had a note on it:

So I took the 'Martin :)' and turned it into a label for the top panel:

So if you ever see a 'Martin :)' where you were expecting a Deluge, then that will be me!

---

I will report on my progress with the Deluge as I get familiar with it... So far, I'm definitely enjoying it!

---

If you find my writing helpful, informative or entertaining, then please consider visiting this link:


Synthesizerwriter's StoreSynthesizerwriter's Store
 (New 'Modular thinking' designs now available!)




 



    

Saturday, 30 November 2019

Free Quad Modulated Probability MaxForLive plug-in for Ableton Live

Okay, three closely related releases in a few days is unusual, even for me, but there's a strong family bond between these three siblings:

1. MIDIprobD4 is the basic 4-channel 'set the probability of 4 drum sounds.
2. MIDIoffGRID4 adds flexible control over time delays.
And now:
3. MIDIprob+D4 allows the probability to be modulated with LFOs.



MIDIprob+D4 adds four Sync/Free LFOs (Nothing clever, just the same 'borrowed from Ableton' design that I've included in most of my old 'classic' plug-ins like Comber) - Hey, this might be a good time to revisit them...) so that the probability can be modulated instead of being fixed. This adds variability to the unpredictability, and so you may need to get familiar with using the basic 'skinny' MIDIprobD4 first, and then go for the 'full-fat' version.

The LFO in Comber...
Extrapolators have probably realised at this point that there's room in this unified scheme for:

4. MIDIoffGRID+4 and I can neither confirm nor deny that this is in development.

MIDIprob+D4's four channels make using my sophisticated 'modulation widget' difficult because of limited space. I have used it in some of my 'Hex' series of effects, and it allows easy control of modulation depth and offset in a single 2D X-Y control instead of two rotary controls.

The 'Modulation Widget' in AUDhexPPD...
MIDIprob+D4 is literally 4 LFOs added to MIDIprobD4, so the things you need to know are:

1.If you set the Probability rotary control (with the triangle) to 100%, then the LFO isn't going to be able to modulate it fully - you can pull it down to 50%, but that's all. Similarly, if the Probability rotary control is set to zero% then you won't be able to LFO modulate it above 50%. For full modulation of Probability, you need to set the rotary control to 50% - where there's a triangle to remind you. And yes, the 'modulation widget' would have made this obvious, but changing the size is tricky...

2. The 'Sync' speeds are locked to Live's transport, and most of them are very fast in comparison to the 'change the probability slowly over several bars' that you are likely to expect. But try the slower speeds (1/1, etc.) and see what happens when you are locked to a single bar, and then see what happens at shorter time intervals. They may be more useful than you think!

3. Yes, the first time you use the 'Free/Sync' toggle switch, strange things happen with the enabling of the graphics. I'm working on this...

4. Left for future additions...

As always, MIDIprob+D4 is free!

Getting MIDIprob+D4

You can get MIDIprob+D4 here:

     https://maxforlive.com/library/device/5851/midiprobplusd4

Here are the instructions for what to do with the .amxd file that you download from MaxforLive.com:

     https://synthesizerwriter.blogspot.co.uk/2017/12/where-do-i-put-downloaded-amxd.html

(In Live 10, you can also just double-click on the .amxd file, but this puts the device in the same folder as all of the factory devices...)

Oh, yes, and sometimes last-minute fixes do get added, which is why sometimes a blog post is behind the version number of MaxForLive.com...

Modular Equivalents

In terms of basic modular equivalents, then MIDIprob+D4 would probably require four LFOs, and four Random Noise Generators plus a quad MIDI Utility module to do the velocity multiplying, giving a total of about 9 ME (without all the stored memories, of course).

If you find my writing helpful, informative or entertaining, then please consider visiting this link:




Tuesday, 26 November 2019

Redundant MIDI Note On Messages Used to Set the Probability of a Drum Event

The Ableton Live piano roll display for MIDI Events is interesting, in many ways. As someone who has been using hardware sequencers since the 1970s (ARP's model 1601 Sequencer, for example, or the Roland...,), and software sequencers since the 1980s (The UMI-2B/4M on the BBC B, for example... http://www.muzines.co.uk/articles/umi-4m-midi-composition-system/3975 from September 1988, or Dr.T's on the Atari...), then I have seen and used a lot of ways of representing and controlling musical data. Ableton's piano roll is quick and easy for some tasks, but I have always liked a list-based view for adding things like program changes, or tweaking the order of 'simultaneous' events that are serialised by MIDI transmission.
(Picture from Reverb.com, where you may be lucky enough to find and purchase classic devices like this one!)

However, most seriously of all, it has always been my exposure to Intelligent Music's RealTime sequencer that has had the most profound effect on me (with John Hollis's Trackman just behind it...). RealTime was arguably one of the first sequencers that showed the road away from tape recorder emulations and towards modern DAWs (When I reviewed it, I didn't return it: I bought it! http://www.muzines.co.uk/articles/realtime-intelligent-sequencer/5624 ). And one of the killer features for me was the randomisation control - a little toggle box with a random pattern inside it that turned boring hi-hat lines into much more interesting decoration, and which sounded much less like a robot playing. Some things get under your skin and into your head, and you may have noticed that many of my MaxForLive devices (and more) have a significant bias towards using probability as a control source.


Which is where Ableton's piano roll comes in. Power users probably already know about the 'select a note, press the '0' (zero) button' shortcut that disables or enables notes (it is in the pop-up menu for the piano roll), but I've always wanted a Modifier key version (Shift-Zero, or Control-Zero, or something else, that doesn't disable a note, but sets the probability of it happening. Having 'greyed out' disabled notes is okay, but I would like more!


Now, it is possible to make a MIDI Effect Rack that extracts a single MIDI note and uses MIDI velocity processing or the Arpeggiator to provide control over the probability of a note, but it is pretty awkward, and not very elegant. All of which sounds like a cue for a simple, neat MaxForLive MIDI Effect that lets you control the probability of notes happening.


MIDIprobD4 does exactly that - for four notes simultaneously (It is a 'quad' or four-channel device...). The D indicates that its primary intended use is for drum sounds - you put it just in front of the Drum Rack. I use it to make hi-hats less robotic, to make snares unpredictable... You get the idea. If I'm bored, then I assign all four channels to kick, snare, closed and open hi-hat, and fill the Clip piano Roll with drum notes, and it produces oodles of random drum patterns. In a world currently overflowing with Black Friday deals (and what are the from/to dates for that?) then the deal is my standard one - it is FREE and will remain so (unless something extraordinary happens!).

Redundant MIDI Note Offs

MIDI has some interesting back alleys. In the classic reference specification, Complete_MIDI_96-1-3.pdf', on Page 10. In the 'Note-Off' section, it says that a Note On message with a zero velocity is roughly equivalent to a Note Off message.

( For more MIDI documentation, please visit: https://www.midi.org/specifications ) 

Now for any MIDI device that is velocity sensitive, a velocity value of 1 (one up from zero) is going to tend to be quite low in volume - maybe only fractionally just above no sound at all. The opposite value, 127, is maximum volume, of course, and so in many cases, zero and 1 sound pretty similar - one is totally quiet, the other is as quiet as it can be without not playing at all. There's one other interesting feature of drums - they are almost always velocity-sensitive. Further, on page A-4 in the 'Assignment of Note On/Off Commands' section, it says that 'Since there is no harm or negative side effect in sending redundant Note Off messages then this is the recommended practice' when talking about ensuring that Note Ons and Note Offs are always paired together, eventually.

The 'Velocity of zero is a Note Off' feature and the 'Redundant Note Offs are ok' feature are the mechanisms that I exploited to control the probability of MIDI note events in MIDIprobD4. Yes, I could have produced a complex device that keeps track of Note On messages and waits for the corresponding Note Off messages, and controls the probability of a note happening by removing the complete pair of messages, but it is far easier to just change the velocity of a Note On message to zero - which changes it to a Note Off, and redundant Note Offs are ok. So the MIDI processing is vry simple - just a multiplier for the velocity value of zero or 1. With a multiplier of 1, then the velocity of the note is unchanged: 1 x any value from 1 to 127 is the value. But with a multiplier of zero, then any value from 1 to 127 is changed to zero, which is the equivalent of a Note Off message, and it is okay to send redundant Note Off messages!



The Max code is shown above. This is inside a patcher that handles the velocity, and so outside this is more code that separates the MIDI messages into Note Number and Velocity streams, and so this is just the velocity stream processing. The yellow number box is a buffer so that the time it takes for the 'Random' object to generate a random number doesn't affect the processing time of this patcher - the previous value is available immediately from the number box. The output of the '<=' object is either zero or 1, and this drives the multiplier. The Probability control is a 0-100 rotary percentage control. I have to confess that whilst this approach follows the MIDI Specification, the actual device isn't perfect (but then, many of my devices have quirks...) and so sometimes it shows a note with a high probability that doesn't actually make any sound. I have spent quite a while trying to find out what the problem is, but haven't been able to discover the cause. Perhaps a reader of this blog may be able to enlighten me?


Anyway, MIDIprobD4 has simple controls. From left to right the first rotary control in each of the four channels is the MIDI note selector (0-127, although most drum notes are typically going to be 36-60ish), then some memory slots/squares (shift-click to save, click to recall), then an indicator blinker to show that a note event has been received, then the rotary Probability Percentage control, and finally a second indicator blinker to show that an note event has been transmitted to the output. Minimalistic, although I'm sure it could be made even smaller...

And that's it. Put MIDIprobD4 just before your Drum Rack and you have control over the probability of four of the drum sounds. Enjoy!

Links from this blog post:

UMI-2B/4M on the BBC B (from muzines.co.uk)
ARP model 1601 Sequencer from Reverb.com
RealTime sequencer review (from muzines.co.uk)
MIDI Documentation

And a special mention for a wonderful repository of music magazines from what now seems to have been a 'golden age':

Mu:zines - an amazing resource!

Getting MIDIprobD4

You can get MIDIprobD4 here:

     https://maxforlive.com/library/device/5844/midiprobd4

Here are the instructions for what to do with the .amxd file that you download from MaxforLive.com:

     https://synthesizerwriter.blogspot.co.uk/2017/12/where-do-i-put-downloaded-amxd.html

(In Live 10, you can also just double-click on the .amxd file, but this puts the device in the same folder as all of the factory devices...)

Oh, yes, and sometimes last-minute fixes do get added, which is why sometimes a blog post is behind the version number of MaxForLive.com...

Modular Equivalents

In terms of basic modular equivalents, then MIDIprobD4 would probably require four Random Noise Generators plus a quad MIDI Utility module to do the velocity multiplying, giving a total of about 5 ME (without all the stored memories, of course).

If you find my writing helpful, informative or entertaining, then please consider visiting this link:




Sunday, 27 October 2019

Different every time - changing parameters with M4L in Ableton Live

I've always worked according to the principle of 'Never the same thing twice'. Whilst most important for things like drums, I try to apply it to most sounds - although I also like flams, which kind of goes completely against the principle! Maybe 'Be inconsistent' is a better way of putting it? (Just to be consistent, I have added in the updates made to MIDIdifferentONE version 0.02 into this blog...)

In Ableton Live, there's an obvious way to control the parameters that are one major way of changing sounds on the fly: the 'Clip Envelopes'. The name is slightly misleading, because clip envelopes are just a way to draw parameter values onto the piano roll. Anyway, the clip envelopes are normally hidden by default, and you need to click on the 'E' inside a round button to open up the overlay in the piano roll pane. Selecting a device and a parameter from the two pop-up menus then lets you draw lines and curves either with a rather blocky pencil tool ('Steps') or with a 'lines and breakpoints' ('Ramps') tool. I prefer the 'lines and breakpoints' approach...



One of the 'classic' parameters that is controlled this way is filter cutoff (with an appropriate level of resonance) and I have spent quite a lot of time zooming out from a clip, setting the cutoff frequency for a bar, then clicking to get a new point and dragging it up and leftwards to get a new parameter level for the next bar, and so on. It requires quite a lot of clicking, but once it is complete, then editing each of the levels is quite quick to adjust. However, if you want to change the timing, for instance, to a change every other bar (or an arbitrary length), then it can require more clicks. There's also another non-obvious thing to consider that requires more clicks - you need to have the parameter set before the fist note on in the bar. This is why the orange clip envelope line is shown in the diagram as changing just before the first note in the next bar - if you don't do this then you hear the note start and then the filter cutoff change, which sounds like a mistake.

What this means is that you start off zoomed out, setting the parameter levels for each bar (or other interval), and then you need to zoom in to each of the ends of the bars where the parameter changes, the nudge the parameter change a little bit earlier in time. Then you zoom back out again. For me, there's a point where repeated mouse clicking gets a bit tedious, and I've never found any keyboard shortcuts for some parts of the clip envelope editing. So setting up several clip envelopes for a few parameters, and then changing the timing, starts to exceed my trigger level, and I stop and go looking for alternatives.

LFOs are the obvious alternative, and I've explored all sorts of variations of Slow Oscillators, including quite a lot of my own MaxForLive devices. The trouble with LFOs is intrinsic: they want to change, slowly; whilst for parameter changes I'm really looking for sudden changes followed by long steady fixed values. Lots of LFOs come with various 'Random' or 'S&H' (Sample and Hold') outputs that do give the stepped change, but then the values aren't under my direct control. Okay, so S&H on a filter cutoff can sound cool, especially a quarter note intervals (of which more later), but when you are controlling a build then you want to be able to set the parameter value for each bar. So LFOs are 'almost' the solution, but what would the ideal look like?

My ideal would have a LFO like 'Rate' control, followed by some way of controlling the parameter setting for each time period - from quarter bars up to every 8 bars or so. Which kind of sounds a bit like a weird step sequencer... but one that that enables each bar (or other interval) to have different parameters!

MIDIdifferentONE


MIDIdifferentONE is a deliberately 'different' step sequencer for parameter values that works a bit like an LFO, except that it is always synced to the sequence timing, and it is optimised for setting parameter values and then replaying them at various rates. Best of all, it always changes the parameter value just before the end of the bar, so you don't get the note followed by the parameter change!

It turns out that the requirement for something to happen 'just before' something else is one of those programming tasks that keeps cropping up again and again in electronic music, and I've struggled many times with getting it to work correctly. So this time, I was determined to spend some time solving the problem, and then some time showing how I came up with my solution. As always with these things, there's probably a much better, cleverer, shorter and neater way to do it, but I will leave that to other programmers!

LFO timing and step sequencer design is all standard 'home territory' for MaxForLive, but the requirements for the timing of the parameter change are more interesting - we need the parameter to change 'just before' the end of the bar (or some other interval). 'Just before' might be loosely defined as something like 'after the last beat, and as late before the end of the bar as we can manage without the parameter change happening in the next bar'. I decided to simplify 'as late as' to mean ' the last 16th note tick before the end of the bar, which is probably going to work with most situations - although if you put very short notes right at the very end of a bar then MIDIdifferentONE might start to change the parameter to the value for the next bar as your last note of the bar plays...


For 16th note quantisation, Live's transport outputs bars as numbers, beats as the numbers 1 to 4, and 'ticks' as the numbers 0, 120, 240 an 360. If you don't quantise the timing, then you get tick numbers like 205.74 and the processing is more complex. For MIDIdiffrentONE, making sure that the parameter changed before the end of the bar was the most important thing, so I kept things simple and applied quantisation, but only to the timing for these parameter changes! So MIDIdifferentONE will not affect the quantisation of any other timing in your music.

The definition of 'after the last beat and when the last tick happens' translates to beat=4 and tick=360, so all that is needed is a bit of Boolean logic in MaxForLive... Now the easiest way to do this kind of goes against the 'visual programming' metaphor that MaxForLive uses, and uses the 'if' object and requires some typing! Suddenly MaxForLive is going a little bit 'programmer'y! What you type in the Max object is something like 'If ($i1=4 and $i2=360) then 1 else 0', which means that when input 1 is equal to 4 (beats) and input 2 is equal to 360 (ticks) then output a '1', otherwise output a '0' (zero). Yep, that's a traditional text programming 'if statement' inside a MaxForLive object. Some of you may need to sit down at this point...

That covers how to make something happen at the end of every bar - whenever the beat=4 and tick=360. Other times like every other bar or every quarter bar just require slightly different 'if' statements and additional processing. I hid the end result inside a patcher box to keep things neat and tidy:


So you can see the 'metro' object that provides timing from the master clock source, a 'transport' object that outputs bars, beats and 'ticks' into those three number boxes, and then the 'before_mr' object that contains all of those hidden-away 'if' statements. The 'switch' object selects the desired timing, and after a special 'counter' object, you can see the top of the 'step sequencer' object.

Inside the 'before_mr' patcher? I'm not one to hide stuff away, so here goes:


If you look across the lower part of the patch, then you should find the 'every bar' output, (fourth from the left) and above that a blink object, some tidying up, and then an object with 'if $i1==4 && $12==360 then 1 else 0' inside it. This is the 'just before the end of the bar' requirement turned into an 'if statement' using MaxForLive terminology - so '&&' means 'AND', and '==' means 'is equal to'. You might like to try and work out how the other outputs are generated as well.

There's a trap with this 'just before' approach, and it happens in the very first step. As always, you should consider the 'edge effects', and this is one case where I didn't think enough about the initial step. The 'before_mr' patcher outputs a 'bang' event just before the end of the set time period: from every 8th bar to every quarter beat. So what happens in the first step? If we take the middle case of 'every bar' then the 'bang' event will not happen until just before the end of that first bar. This means that until that happens the counter is in the 'reset' case, which is a count of zero, so the step sequencer stays on whatever step it was before we started Live's transport running. Only when it gets to just before the end of the bar will a bang event occur, and the counter will increment, and step 1 will begin - almost a whole bar late! What actually need to happen is that the counter needs to be set to step 1 at the beginning of the bar, not just before the end. This can be achieved by using a 'timepoint 1 1 0' object, which produces a bang event when Live's transport starts running, and if this resets the counter, then step 1 starts correctly. This means that the first step is slightly less than a bar long in this case...

That's what is happening inside, now let's look at outside.

Using MIDIdifferentONE



The plug-in has has three sections, and from left to right, these control the setup, the step sequencer, and the value output and mapping. On the left hand side, the top shows the beat indicator and count, where the blinker can also be clicked on to reset the sequencer. Underneath that, the pop-up menu allows selection of the step sequencer rate: from every 8th bar, down to every quarter note (slow to fast, with the fast setting being the 'classic' S&H filter modulation effect). The cluster of thirteen buttons are used to fill the step sequencer, and the 'Random' button generates a different pattern each time. The 'Scramble' button jumbles the sequence of the values, and below it is an 'Undo' button that will restore the last edit you made - it isn't very sophisticated and there's only one level at the moment.

The middle section is the step sequencer. Every fourth step is highlighted in white instead of light purple, and the bar at the top can be used to set the length and looping points. The default is 16 steps from 1 to 16, but you can vary it to anything to 2 steps from 1 to 2, to 16 steps from 1 to 6, and back to 2 steps from 15 to 16. When you stop Live, then the step sequencer area can be edited 'live' using the mouse - just hover the mouse near the top of one of the step 'circles' in the middle 'step' section,  and that value will be displayed. Click and you can change the value of the step. If you move the mouse across the step sequencer area then you can 'draw' in the values very quickly. - the background of each step will go grab as the mouse selects that step...

So the workflow for setting the controlled parameter is now very simple: Stop Live playing, and then you can set the step values as you want with the mouse and they will be saved. Note: If you select one of the preset patterns, then you will lose your edits!

The right hand side shows the output value for each step, as well as a vertical bar indicator. The 'Normal'/'Invert' switch inverts the value, so high values become low and vice-verse. The 'Offset' and 'Depth' controls allow the value to be adjusted to suit the target parameter. Finally, the 'Unmap' button undoes any pre-existing mapping of the value to a parameter inside Live, and the 'Map' button allows you to mp the value to any available parameter inside Live.


Here is the 'classic' LFO S&H filter mod setting, except that it repeats, the steps can be edited, and it can be slowed down to as slow as once every 8 bars. This example is set for every other bar, and so the end effect sounds like a different setting (or different preset) every 2 bars. And switching to quarter beat cliche is just a single pop-up menu selection, whereas you would need to edit the timing of every value in a clip envelope.


Here's the output remapped to an instance of Analog inside Live, where the controlled parameter is the octave for Oscillator 1. The Offset control is set so that the centre position is no stave transposition, whilst the depth is set so that the oscillator goes up and down by one octave. LFO modulation of the octave control with an 'S&H' type of waveform would not give you any way to edit the waveform, but MIDIdifferentONE lets you set when the octave transposition happens.


Something that you may not have tried before is to change the filter type. Doing this every half beat is quite extreme, and the sound of a filter jumping from his-pass to band-pass to low-pass quickly is unusual. Remember that unlike an LFO doing Random or S&H waveforms, you can edit every step of the sequencer, so you can get exactly the results you want for each step.

ONE?

After a long run of 'hex' MaxForLive plug-ins, you might not be surprised by the 'ONE' suffix to the name of this device. I can neither confirm nor deny the future existence of any multi-channel versions of this utility...

Getting MIDIdifferentONE

You can get MIDIdifferentONE on  https://www.maxforlive.com/library/device/5805/mididifferentone-mr

Here are the instructions for what to do with the .amxd file that you download from MaxforLive.com:

     https://synthesizerwriter.blogspot.co.uk/2017/12/where-do-i-put-downloaded-amxd.html

(In Live 10, you can also just double-click on the .amxd file, but this puts the device in the same folder as all of the factory devices...)

Oh, yes, and sometimes last-minute fixes do get added, which is why sometimes the blog post is behind the version number of MaxForLive.com...

Modular Equivalents

In terms of basic modular equivalents, then MIDIdifferentONE 0v01 would probably require an LFO plus a step sequencer, and a Utility module to do the scaling, giving a total of about 3 ME (without all the stored patterns, of course).

And here's a link to click on if you find my writing informative:

Sunday, 1 July 2018

An 'Extreme' Multiplying LFO for MaxforLive


LFOLFO is an experimental 'Multiplying' LFO. It is based on the idea that being able to switch the range of an LFO can be used to generate a number of interesting audio effects, and so the design is optimised to enable easy control of the Rate and Multiply controls. The prototype was produced as a response to a question posed by Russell Alderton on the 'Max For Live Users' Group on Facebook, and it has undergone extensive development since then.

The Rate (Frequency) of the LFO can be modulated via two controls: Rate and Multiply. The Rate control is a conventional frequency control, whilst the Multiply control has four modes that provide several ways to affect the frequency. A multiply value of 'x 1.' produces an output frequency as shown on the Rate control, whilst a multiply value of 'x 0.5' produces an output frequency of half the value shown on the Rate control, and a multiply value of 'x 2.' produces an output frequency of twice the value shown on the Rate control.

The Rate and Multiply controls both have their own dedicated Sub LFOs, which can be used to modulate them, and this is shown graphically in a display underneath the controls. The LFO output waveform is shown as a backdrop to the whole MaxForLive device, thus providing a 'history' of recent changes to the waveform.

Each Sub LFO has multiple output waveforms, and the waveform selection of Sub2 can be controlled by Sub1. The output waveform of the LFO itself can be selected using a vertical selector, or via two modulation modes: one that counts the number of cycles that have been output, and a second mode that uses a third Sub LFO (Sub3). Both modulation modes use a probability grid that can provide sophisticated control over the sequencing of output waveforms.

The output waveform can be further processed by three controls: Smooth, S&H and Decimate (which do what their titles suggest). Finally, Offset and Depth controls. plus an Invert button allow fine tuning of the range of effect on the controlled parameter - which is selected using the 'Map' button.

Sync

Conventional Digital Audio Workstation (DAW) LFOs are either free-running, or synched to the DAW transport. LFOLFO provides a different type of sync that is intended to explore an alternative approach. A selection from a number of timing sources can be used to reset the LFO waveform, and this provides an 'Event Sync' that gives a number of interesting ways working with musical events instead of being rigidly locked to a timebase.

The UI from left to right

LFOLFO has a lot of controls that it uses to provide a wide range of advanced functionality. The settings above are a good starting point for learning - they are a kind of 'Neutral' setting. From left to right, the controls are:

Storage

LFOLFO provides 9 'memories' that can be used to store and recall the state of all the controls. To store a setting, hold down the SHIFT key and click on one of the 9 boxes. Grey boxes are empty. Purple boxes contain a saved setting. The white box is the currently selected setting. If you over-write a box then the previous contents cannot be recovered - this is colloquially known as a 'face-palm' error.

Event Sync

The large selection box enables the selection of 'events' that can be used to reset the LFO output phase. The reset phase is set using the 'Phase' retry control that is underneath the selection box. The top selection is '=Not-Synched=' and this is the Free-Running mode. The next selection options are for MIDI Notes in the track clip:

- AnyNote resets the phase for any MIDI Note.
- AnyChange resets the phase for any new MIDI Note. Any repeated notes are ignored.
- Note0 only resets the phase for Note 0, the lowest MIDI Note. This note is not used very often...
- Note0Velo1 only resets the phase for a Note 0 MIDI Note with a Velocity of 1. A velocity value of 1 is very quiet.

The next selection options use the Sub LFOs. Sub1, Sub2 or Sub3 can be used to reset the phase of the LFO, as well as a special reset that uses Sub3 and the waveform cycle Count (shown on the far right hand side).

The reset happens as soon as the event is processed by the device, and the value can be set using he 'Phase' control. If the event frequency is less than the 'Rate' then one or more cycles of the output waveform will be output. If the event frequency is higher than the 'Rate' then cycles will not be completed because the reset will happen before the cycle can complete.

Sub1

The first sub LFO can be used to modulate the 'Rate' control. The 'Sub1' rotary control affects the rate of the Sub LFO, whilst the 'Depth' rotary control affects the amount of modulation. The selector box sets the output waveform. When Sub1 is used to modulate the 'Rate' control then a graphical display behind the rotary control will show the modulation.

The Sub1 LFO can also be used to control the output waveform of the Sub2 LFO. If the frequency of Sub1 is greater than Sub2, then Sub2 will output incomplete cycles of its waveform. The selection of the output waveform is in sequence, from top to bottom, and then repeats. No other waveform sequences are available in this version... The button has two settings: 'Off' has no effect on the Sub2 output waveform, whereas 'Mod' will repeatedly sequence through the four waveforms.

Sub1's modulation of the 'Rate' control can be used for a number of effects. Using a Sine waveform produces traditional smooth 'up and down' variation in the frequency of the LFO. The triangle waveform gives a more abrupt change of direction and gives a more synthetic effect. The two sawtooth waveforms are particularly good when Event Sync is used, because they can produce a number of 'rise' or 'drop' effects, where the frequency of the LFO rises or falls linearly. Note that one of the advantages of using Event Sync is that when the frequency of the events is less than the LFO 'Rate', then several cycles of the output waveform will be produced, whereas if the event frequency is greater than the 'Rate', then less than cycle of the waveform will be produced. So by adding MIDI Note events into the track clip, very precise control of the LFO output can be obtained. 

Sub2

The second sub LFO can be used to modulate the 'Multiply' control. The 'Sub2' rotary control affects the rate of the Sub LFO, whilst the 'Depth' rotary control affects the amount of modulation. The selector box sets the output waveform. When Sub2 is used to modulate the 'Multiply' control then a graphical display behind the rotary control will show the modulation.

There are four modulation modes for the Multiply rotary control, selected using the horizontal selector box on the lower edge of the device:

- Linear is a conventional modulation where the modulation increases linearly.
- Power increases the modulation in powers of 2.
- PowerHalf increases the modulation in quantised half powers of 2.
- PowerQnt increases the modulation in quantised powers of 2 (0.25, 0.5, 1, 2, 4 8, 16...)

Rate

The Rate road control is the main control of the frequency of the LFO. The output frequency is shown in Hertz. The modulation is shown graphically underneath the control.

Multiply

The Multiply control is a secondary control for the frequency of the LFO. It is rather like a 'range' control, but it can be modulated, and the rate and character of the jumps in LFO frequency can be controlled via the waveforms and the Sub1-Sub2 modulation button. Careful use of the Multiply control is the key to making the most of the functionality provided by a Multiplying LFO. Yes, you can use LFOLFO to vary a parameter with slow, smooth up and down changes, but this does not exploit the device to its full potential.

Try increasing the Multiply rotary control in each of these modes to see the effect on the 'Multiply' value. The 'PowerQnt' mode is specifically designed to change the rate in powers of 2: x .125, x .25, x .5, x 1, x 2, x 4, x 8, x16...

Vertical bar

The vertical bar shows the LFO output at the current time, and is not a control.

Waveform

The large selector box in the centre of the device serves two purposes, dependent on the mode set by the 'Waveform Mode' selector on the right - which has three modes: Select, which allows direct control of the LFO's output waveform via the selector box; plus Count and Mod3, which both use the grid in the middle of the device to choose waveforms, and the selector box then becomes an indication of which waveform is currently being output. In the Select mode, the grid, plus the Columns, Sub3 and Count rotary controls all do nothing. In the Count mode, the Columns and Count controls set the number of columns in the grid, and the number of cycles of waveform output that need to happen before the waveform changes (controlled by the cursor moving across the grid). In the Mod3 mode, then the Columns and Mod3 rotary controls are active, setting the number of columns and the rate at which the cursor moves across the grid.

The Grid

The grid is only active in Count and Mod3 modes, and allows the sequencing of waveforms to be specified. White squares indicate which waveform will be output when the cursor is in each column, an the vertical Waveform selector box shows which waveform is currently being output. If more than one square in a vertical column in the grid is white, then the output is randomly chosen from the white squares. So if there are two white squares in a vertical column, then the corresponding waveform will be chosen 50% of the time, on average. If there are three white squares, then each waveform will be output 33% of the time, on average. In the example shown above, there is just one white square in each of the two active columns, and so the corresponding waveform is chosen 100% of the time. This means that in Count or Mod3 modes, the first waveform to be output will be the Saw Down, followed by the Saw Up.

If you draw a line of white squares from the top left hand corner of the grid to the lower right hand corner, then each waveform will be played in sequence, just as in version 04. If you draw the opposite line, then the sequence will be reversed. The grid allows you to specify any sequence of waveforms, plus it allows probabilistic control over waveforms, which allows long complex waveform outputs. In summary, LFOLFO provides humungous power for creating output waveforms!

Once the waveform has been controlled using one of the three modes, then further processing can be carried out on it. This happens in the darker vertical box containing the 'Smooth', 'S&H' and 'Decimate' rotary controls. 

Smooth

The Smooth rotary control is a low pass filter that removes the sharp edges in the output waveform, but it also reduces the amplitude - so you may need to use the 'Depth' control to increase the size of the LFO output waveform. Remember that the 'Depth' control affects the output amplitude of the LFO waveform before the Smooth control.

S&H

The S&H rotary control adjusts the rate at which the LFO outputs its waveform. This has the interesting side effect of slowing down the scrolling speed of the background waveform display - but it does not change the rate or frequency of the LFO!

Decimate

The Decimate rotary control adjusts the resolution of the LFO output waveform. In the '0' position, then the LFO waveform is smooth, whilst increasing decimation values makes the output increasingly jagged until at '2.0' then there are only two values (maximum and minimum). You can still use the Smooth and S&H controls on a decimated waveform, so these three controls should be seen as a flexible way of adjusting the output waveform to your specific requirements.

Once the final waveform has been set, then the final section (on the right) does the mapping of the LFO waveform to the parameter that is going to be controlled by the LFO.

'Normal' or 'Invert' button

This button controls how the parameter is controlled by the LFO output. 'Normal' is the same as the vertical bar, whilst 'Invert' is turned upside down, so that high values of the vertical bar give low parameter values.

Offset

The Offset rotary control adjusts the output of the LFO. Normally this will be left in the default '0' position, but some parameters and other settings may require it to be changed. The output waveform display that forms the background to the device is the key to using the Offset control - you should adjust the offset so that the waveform is not clipped at the top of the bottom. (although you can use this as a deliberate effect if you wish)

Depth

The Depth rotary control adjusts the size of the LFO output (which is why it is the right-most control!), and 100% is at the middle position, so you can deliberately output larger values that will be clipped. The Depth and Offset controls will often be used together to get the exact parameter changes that are required. 

Unmap and Map

The Unmap button is only available when a parameter has been mapped using the Map control. The Map button is easy to use - just click on it and then select the parameter that you want the LFO to control. A good starting point is filter cut-off frequency in the 'Auto Filter' device. When you have correctly mapped a parameter then the name of the parameter will replace the 'Map' text in the button, and the 'Unmap' button will become available. If you click on the 'Unmap' button then the mapping to that parameter will be lost - and the only way to remap it is to carry out the mapping process again.

Getting LFOLFO

You can download LFOLFO 0v06 for free from MaxForLive.com.

Here are the instructions for what to do with the .amxd file that you download from MaxforLive.com:

https://synthesizerwriter.blogspot.co.uk/2017/12/where-do-i-put-downloaded-amxd.html

Modular Equivalents

In terms of modular equivalents, then reproducing this functionality in my modulars took anything from 10 to 14 separate 'basic' modules, with lots of patch chords (and some limitations and compromises), so I would rate this version as being about 12 ME.



Buy me a coffeeBuy me a coffee




Sunday, 3 December 2017

Complex timing generator for Max For Live and Ableton Live

The first presentation at Loop 2017 was Andrey Smirnov's wonderful talk and demo of Leon Theremin's 'Rhythmicon', ending with a superb live performance piece. It was an inspiring opener to a wonderful event, and it got me thinking...

Probably GENerator

If you've been following my 'Probably' series of MaxForLive devices, then you may have noticed that they have gradually been influenced more and more by modular synthesisers. ProbablyLFO could easily have some radical graphics, a name suggesting 'West Coast' influences, and be a hardware module in a rack, except that it is only in software in Ableton Live at the moment. Producing hardware is a time-consuming process, and I'm still considering what my next device will be...

But, as we have just passed through one annual winter 'holiday' event, and with another looming, this seemed like a good time to release yet another unusual giveaway, and with the 'Rhythmicon' still tucked away at the back of my mind, I wondered what I could do that was exploratory rather than just a dull copy... And, trust me, some of my previous M4L giveaways at this time of year have been useful, but just a little bland. 

The result is ProbablyGEN, (GEN is short for Generator, not Max's 'gen'!), and it is a three channel (after dFreez_mr, I've temporarily given up on trying to squeeze four channels in!) asynchronous / synchronous note generator. Each channel has a choice of free-running (async) or synchronous (divided from Live's transport), a probabilistic 'velocity' grid (with a special variation on the previous user interface specially for this type of application), length control per grid, direction controls (forwards, backwards, scanner), and completely straight-forward (gasp!) MIDI Note output selection. So you get three note polyphony (or use the 'Chord' MIDI plug-in) which is ideal for simple drum sounds, or simple three-part monophonic music.


The screenshot above shows three synchronised channels, all running at 1:1 (i.e., the same as Live's transport), and all playing 16 column grids (more on this in a moment). The far right hand side shows the MIDI Notes which are being generated, which is a giveaway for what this is doing: 36 is Kick, 38 is Snare, and 42 is Closed Hi-Hat. I did consider calling this ProbablyD, or ProbablyDrum, but then I realised that you could use it for other purposes than just drums, and so I went for the generic name of 'GENerator'.

The 'Columns' setting and the direction buttons on the right might need some explanation. Why is the middle channel 'Columns' control set to 17 instead of 16? Actually, this is a consequence of it running back and forth in a 'scanner' type pattern - the little '+' is there to remind you that when you choose the 'scanner' direction then you need to increment the 'Columns' control by 1 (or not, as you prefer!). So, actually, all of these channels have 16 columns in the active part of the grid - but there's more later on this... 

With these settings, from the lowest channel upwards: the bass drum is playing four 'on the beat' hits, with the final column (or the 16) exploiting the new UI twist that I have added: the upper white cell is indeed a '66' velocity. but the lower white cell is a '0' velocity on the black row, which doesn't mean 'zero velocity' (that would be a Note Off...), but means 'don't play this note. Now because the probability grid takes multiple instances of white cells in a vertical column as providing choices for that event, this means that there are two things that can happen here: a kick drum played at a velocity of 66, or no kick drum, and with each having the same probability - so the kick drum will play about half of the time. When you listen to this, then you hear that 'the drummer' keeps putting in extra little appoggiatura ('pick-ups') at random, just before the main beat at the start of the bar. So here we have a software emulation of an impatient foot...

The middle 'snare' channel is scanning back and forth, and so we get a single snare (at 33,66 or 99 velocity) or a cluster of 2 or 3 snares on alternate repeats. Again, the 'zero' bar is used to make that middle snare in the cluster happen about half of the time.

The 'hi-hat' channel has 'on the beat' hits, with off-beats at half probability using the 'zero' row again, and a cluster of 'sometimes' at the end of the bar, followed by an end of bar tick that always happens.

A rhythm less ordinary... 


The screenshot above shows a slightly more unusual setup. This time, the bass is as before, whilst the snare is playing slower, at 0.889:1 to Live's transport, and the active part of the grid is only 15 columns long (wide?). The hi-hat is now faster, at 1.333:1, and there are 22 columns in the active part of the grid. In this example, I have deliberately chosen the values of Divide and Column so that the lengths are the same duration in time, but this does reveal an interesting side-effect. It is quite difficult to change the Divide control and the Columns control at the same time, and so you will find that the timing gets out of alignment, as you can see by the three vertical cursor lines not being aligned in a vertical line. There are two ways to fix this: stop Live's transport and restart it; or hit the 'In' button in the top left hand corner, just underneath the 'start' light circle. This forces a reset of the internal counters, but doesn't sync it back to the bar or beat of Live's transport, which can be a useful effect. Either way, you get to control the channel timing alignment as you want.

The hi-hat is also busier in this last few columns, with 25% and 33% probabilities from the page of the 'zero' row. But you've probably not got the time to concentrate too much on this, with all of the timing complexity that this setup gives. Each of the channels is outputting notes in its own synced time, but the timing isn't the 'four-to-the-floor' many ears are used to hearing. Nope, this could perhaps be interpreted as being simultaneously an emulation in software of the best AND/OR the worst software drummer in the world...

This is only scratching the surface of the timing options that ProbablyGEN gives you - the 'Divide' range is deliberately set wide, so you can go fast and very slow (try increasing Live's tempo too!). And if you use the 'Free' button, then the tempo of that channel is completely independent of Live's transport, and so is totally asynchronous. For hi-hats, this can sound pretty cool! (This is also where tempo-aligned echo can be useful to explore...) But hey, that's enough presents given away in one blog article!

Notes

If you replace a drum kit with a synthesiser, then ProbablyGEN becomes a three channel monophonic step sequencer with potentially independent timing of the three channels (or any degree of sync that you want). As I said earlier, this is the sort of thing that many people associate with modular synthesiser racks, and not a laptop running Ableton Live.

By using the 'Chord' MIDI effect plug-in, then one, two or all of these notes can be expanded into chords. Depending on how you set this up, it can be described with words like 'jazzy', or 'obtuse'... (and if you've ever listened to the 'ChromatixT' demos on SoundCloud, then...)

MaxForLive.com

As usual, ProbablyGEN is available for free from MaxForLive.com. Enjoy doing interesting things away from 4:4 timing as we move into 2018!

Unexpected surprises!

ProbablyGEN outputs all three notes when you first instantiate it in a track, so beware!

Did someone mention a Parappa the Rapper reference?
PaRappa_the_Rapper
5 Minutes of Parappa the Rapper Remastered Gameplay - YouTube 2mins 10 seconds

Updates:


Update: version 0.04: Asynchronous timing generator for Max For Live in ...

Update: version 0.05: Constraint-driven modification grids in asynchronous drum timing generator



Buy me a coffeeBuy me a coffee




Saturday, 31 December 2016

Why would I want to invert MIDI Velocity?

My MIDIf(x)_mr MaxForLive MIDI effect allows MIDI velocity to be inverted. 



So why would you want to do this? My best answer is in two articles published by Mode Audio: purveyors of excellent sounds for Ableton Live and many other DAWs:

The articles also contain the link to a neat M4L MIDI display utility for Velocity described here.





Tuesday, 10 November 2009

Pure Magic-netik!


I've enjoyed a full subscription to the excellent PureMagnetik website for the past year, and I have to say that it has been completely worth the money. The quality of the samples, sounds, instruments, effects and racks in the down-loadable Micropaks has been uniformly superb, and I thoroughly recommend it for anyone who uses Ableton Live, Kontakt or Logic.







So it gets my coveted 'Thoroughly Recommended' award, and would qualify for the rare and fabulous 'extra' star, if it weren't for one glitch in an otherwise faultless performance:

I had a problem with one of the 'Amp' racks in the 'Model C' (Hohner Clavinet) micropak, where I got no sound at all from it. I posted a message on the support forum (The Board) but got no replies at all, so I'm not entirely happy with the support, but then this is the first time I've needed it!

For the next year, I'm going to make some samples, sounds, etc. of my own for Live, so watch this space!



Reblog this post [with Zemanta]