Showing posts with label Plug-in. Show all posts
Showing posts with label Plug-in. Show all posts

Friday, 10 July 2020

16 steps is not Old School...

The Liverpool Empire theatre - a classic rock venue in the North of England (which is kind of in the middle of the UK, curiously...). The 1970s. An impressionable teenager goes to see Tangerine Dream. Dry ice, mist curtains. LOUD! Edgar Froese does a guitar solo and maybe, almost maybe, acknowledges the headbanging crowd of long-haired, bejeaned youths. The lasers are turned on the mirrorball and the audience gets the full 'spoke effect'! Oh, and there's a lot of 8-bit sequences. Yep, that was me. It was a very different world to the one we inhabit now.

Different? Well, we have 16-step sequencers now, and so it gives me great pleasure to announce the release of MIDIdifferentTWO16, which doubles the number of steps, shuffles and skips, turning the 'Old School' 8-ness into 21st Century 16-ness. Oh, and we now have DAWs, and putting a sequencer inside a DAW is allowed. Oh yes, is it allowed! Dit dit dit dit boom tizz dit dit boom tizz dit dit... (Did you know that Zang Tumb Tumb came much earlier, as well as later, as ZTT...)

16 steps to heaven...

There's a hidden difference in this dual step sequencer from version 0.07 of the 8 bit original. It now has two rotary controls to set the lengths of the sequences. The previous version used up/down nudge buttons and looked cool. I loved it (or I lived it, as my iPhone auto-corrects it to). But then I realised (sinking stomach) that it was tricky to map what Ableton call a 'control voltage' to the Step Length, because I had used the live.tab object to implement the nudginess. Rotary controls are sometimes better!

8 steps to heaven..
And yes, I do know that Ableton's MaxForLive developer guidelines do say that devices should not be wide! But my Probably sequencer is way wider than either of these...

The Advert


Hopefully, by now, this style is starting to take on a life of its own. I've made quite a lot of versions of this infographic up to now, and there are more on the way...

Getting MIDIdifferentTWO16

You can get MIDIdifferentTWO16 here:

     https://maxforlive.com/library/device/6443/mididifferenttwo16

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 implementing MIDIdifferentTWO16 is just two step sequencers, giving an ME of 2 if you can find 16-step sequencers, or 4 if you can only find (or afford) 8-step. It all depends on how GAS affects you, I suppose. The ability to control step values and skips may vary with the specific sequencer, but if implemented, then it is just more patch cables. As I said for the 8-step version: perhaps MEs should also include some sort of measure for the number of patch cables that are required?

---

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!)









 

Wednesday, 20 May 2020

A Synthesizer Programmer looks at Spitfire Audio's BBC Symphony Orchestra Discover plug-in...

What started out as a short review of Spitfire Audio's BBC Symphony Orchestra Discover has grown somewhat. Below you will find a review, followed by how I produced an unusual demo, and then some deeper synthesis explorations. I will start with an intro...

I've programmed a few sounds for synthesizers (including the E-mu Morpheus, Vintage Keys, Yamaha DX7, SY77, SY99, TG33, FB-01, TX81z, AN200, DX200, SY200, RY30, Kawai K5, Peavey DPM3, Korg Wavestation, Roland D-50, Novation Circuit, MonoStation, and lots of virtuals: Sprike, Amazing Noises Pulsor (I also wrote the 'Alternative Manual' for the Pulsor...), and lots more for Ableton Live software instruments, plus all the ones that I can't talk about...). Sample library wise, these days I tend to make my own, using Ableton's Sampler/Simpler inside Instrument Racks, or Native Instrument's Kontakt.


So it was quite a departure when I got tempted by the advertising from Spitfire Audio for their BBC Symphony Orchestra Discover - the lowest cost option of the three versions of the BBCSO sample libraries. Previously I had dabbled with the amazing LABS samples from Spitfire Audio, as well as the astonishing Pianobook.co.uk library, but this was the first time I had actually bought a real product from them - they normally target film and tv composers, so I'm perhaps a little outside of their usual customer base (Although the BT 'Phobos' synthesizer does look very interesting!) So this 'Purchasing from Spitfire' experience was a first for me, despite having been to several 'music industry' events at Spitfire Audio's HQ in Tileyard, north of King's Cross in London, England.

It has been quite a few years since I last did a review for Sound On Sound magazine, so bear with me as I warm up for a blog post review... Here's how it went from here, plus what I did with Discover, and more...

The Purchase Experience

The first shock I got was the 'Welcome to the Family' email, which thanked me for buying a Spitfire Audio product, and giving me links to videos and other support material. (including a fascinating article from the in-house 'Composer' magazine about scoring the Lego 'Builder's Journey' mobile phone game.) It felt very much like the opening page of a synthesizer owner's manual! I also got an email which told me that my purchase was ready for download, and this was when things diverged from what usually happens - there wasn't a download link in the email! (Deliberately, of course!)

Instead you go to the Spitfire Audio web-site and download their App, which is a special download manager just for Spitfire Audio products that runs on Mac or Windows computers. (I asked Spitfire Audio Customer Support about Linux, and Luke said: 'I'm afraid Linux is not supported currently, though whether this will be supported in the future I am uncertain!') The Spitfire Audio App is small (the installed app occupies a mere 22.1 Megabytes on my SSD), and graphically straight-forward (crisp clean and minimalistic - with graphics only were it needs them: for libraries!):


As you can see on the screen-shot above, you log into the app with the same details that you used to create an account on their web-site, and the App then shows you what products you can download, and handles all the downloading, plus repairs to libraries or plug-ins, as well as downloading and maintaining the LABS freebie samples.


Here is the screen that shows the free LABS content - all the graphics is used for the content, not the User Interface. From the buttons (or lack of them) it is possible to infer that I have installed the 'Choir' and 'Frozen Strings', that I need to update the 'Amplified Cell Quartet', ad that I can install the 'Charango' (a type of guitar), the 'Drums', the 'Dulcimer', the 'Electric Piano' and the 'Hand Bells'. Did I mention that these are free? Did I mention that there are more free samples on Christian Henson's 'Pianobook.co.uk' website?

Note that this use of sample management software in the App means that you need to run the App on a computer that is connected to the Interweb (aka the Internet), so if you have a 'music' computer that is deliberately 'isolated' then you will need to connect it temporarily... Also note that there isn't any messing about with serial numbers or authorisations - all of that is handled by the App, and you don't need anything other than the App and your log-in details.


The 'My Products' page is just a little bit sparser (I would love to buy all of their libraries!), although I think that Spitfire are missing a trick by not having another tab for a Wish List, because that would be full to bursting for me - there's a particularly interesting product from BT (Brian Transeau, the 'make one loop per day' guy) which is a novel synthesizer that uses lots of carefully curated samples and a lot of processing. Almost a perfect match for my interests in every way, and I wish that I had the money!

The Spitfire Audio App is an interesting decision that says a lot about the way that Spitfire value and understand their customers. Providing a single 'sample library management tool' to people streamlines the install, update and maintenance overhead, particularly if you have lots of large sample libraries, and it must simplify the customer support as well.


When you are used to just getting a download link and downloading a zip file, then finding it, unziping it and then trying to figure out exactly where you put the expanded contents, then this was definitely different - very Professional, and very 'Supportive'. Quite a contrast to my experience with installing software from some other campanies, I can say! The downloads didn't take very long - and as you can see in the screen-shot above, the library download is under 200 MB (yes, that's an orchestra plug-in in there!), and the plug-in download is well under 200 MB as well, and the App then installed the files into the proper locations, and that was that. Possibly one of the least demanding installs I have done in quite a while!

The cog-wheel menus on the right hand side of the window are interesting - they reveal more of the 'not just a downloader' philosophy behind the App: Repair for fixing those samples that mysteriously acquire errors (Gamma particles? Aliens?, Wear-and Tear?, Just one of those things?...), Locate for when you need to find where you stored that sample library, Optimise for, well, optimising, and Reset for when repair fails and you need to download a fresh copy again. Again, I suspect that many customer support queries are probably resolved using this menu...


Opening Ableton Live, the Plug-ins part of the Browser now contained BBCSO Discover VST and AU plug-ins, and so I dropped the AU plug-in into a new track, got the usual plug-in widget in the Clip View (what I think of as the 'track strip'...), and clicked on the 'Spanner' icon to open the plug-in window...

The Plug-In

The BBCSO Discover plug-in window has a big graphic of the layout of an orchestra, which is used to select instruments, and various other controls, menus and buttons. This serves as a simple metaphor, but the white background and primary colour look also differentiates Discover from the Core (Grey) and Pro (Black) versions which don't have this graphic at all. The window is re-sizable, but some of the text is very small, especially on a very old MacBook Pro screen with not very many pixels on it! The resizing wasn't obvious at first glance, but there's a tiny button with the usual double-ended diagonal arrow symbol on it, and that minimised the window, at which point the lower right hand corner acquired a set of diagonal lines to indicate that you could drag it to re-size the window. I reported this as a potential bug, of course, and I will update this blog post with progress.


After everything so far going pretty smoothly, it was a little disappointing to see that there are two 'settings' menus in the upper right hand corner of the window... One is the 'ellipsis' three-dots that usually means something like 'more', whilst the other is the more obvious cog or gear-wheel icon.



Having the setup spread across two different menus is a little awkward, and I couldn't find out how to save settings so that my MIDI Velocity mapping preferences didn't need setting again every time I added the plug-in to a new track, but I'm sure there must be a way, and if not, then I will suggest it as a 'new feature request'.


The user interface is clean and mostly clear, and although there are some unusual icons, pop-up explanations appear in the lower left hand corner if you hover over them hesitantly with your mouse.


The large colourful graphic shows the section of an orchestra, and a click on any of the sections selects you that instrument, plus the available techniques for playing it. If you select Strings: Violins 1, then you get four techniques: 'Long', 'Spiccato', 'Pizzicato', and 'Tremolo', complete with the music score symbology (Over the whole library there are 47 techniques available). If you click on the drop-down menu at the top of the screen then you get a more detailed screen that shows a more text-oriented (and accessible) way to choose from the 33 instruments.


On the left hand side of the window there are two vertical sliders: Volume ('Expression') on the left, and 'Dynamics' on the right.


The dynamics slider controls the velocity switching layers, except that in Discover there is only one layer of sample - to get more layers you need to move to the Core or Professional versions (More money gives you more layers, techniques, microphone positions, round robins, etc. Plus there's a 'Mode Switching' feature which means that you can play MIDI files from any of the versions on any of the other versions - with mapping for where techniques, layers or microphone positions are missing...).


I didn't mention it earlier, but the Discover version is only £49, $49, or 49 Euros - and if you are willing to fill in a form and wait two weeks, then it is free. So in Discover, the Dynamics slider acts as a volume control, and in the '...' settings menu there are four options to control how dynamics is mapped to incoming MIDI velocity or the modulation wheel. Yep, this isn't a synthesizer, and so the mod wheel isn't automatically defaulted to LFO vibrato! Instead, the mod wheel (MIDI CC 1), or your favourite MIDI Controller, is used to control the dynamics. As I mentioned before, the default mapping of the least velocity sensitivity isn't my preference, but I couldn't find out how to set my preference, although I will ask Spitfire Audio's customer support. As an aside, having downloaded quite a lot of the free LABS samples, Spitfire Audio's support has always been excellent, even for free stuff!


Over to the right of the two sliders is a big rotary control (something of a feature of all Spitfire Audio user interfaces, it seems...) that controls the reverb level. Yes, this sample set was recorded at London's famous Maida Vale studios (the BBC will relocate most of the recording operations to Olympic Park in Stratford by 2023-ish) and so the samples in the Discover set do have some room ambience in them even with the control set to zero, but at 100% then you get a very nice real reverb from Studio One at Maida Vale sound studios. So you don't seem to get a completely dry 'close mic' signal in Discover,  but it sounds very usable! As always, if you want 'more' (mic positions in this case), then you should upgrade to the Core (£399, although currently on offer at £250.01 (!) until 31st May 2020) or Professional (£899, although currently on offer at £630 until 31 May 2020) versions.

After that, it's just fine detail at the top of the window, and we enter territory where pro reviewers devote paragraphs to describing each and every button and menu. I'm not going there! Suffice it to say that there seems to be plenty of control and you get a very strong impression that Discovery is just a carefully crafted 'essentials' sub-set of a much larger, more detailed product, and not an incomplete teaser. Exactly what you would expect from a company with huge experience of making orchestral (and related) sample libraries for composers! Which takes me to the next phase of this post: trying it out...

Using It

Spitfire Audio have lots of support material on their web-site, and the very first one that you are directed to post-purchase is a YouTube video where Christian Henson, one of the two founders of Spitfire Audio, shows how to turn an Erik Satie piano piece into an orchestral version. There's a lot of good advice in there about how to do orchestral arrangements 'Anyone can do it!', but I decided to ignore all of it, have some fun, and approach using Discover as if it was a synthesizer library. Here's just some of what I did wrong...

I decided that I definitely wasn't going to take a MIDI file of a classical piece and orchestrate it - even though many synthesists have done that at various times. Nor was I going to play a piano piece and then convert that. Nope. Instead I went 'old school' DAW, and started with a blank canvas and just made up a bass part. Nothing complicated, and I defer to Tantacrul for his far superior expertise in this particular area of music theory. (His YouTube channel is very good too!)


My attempt at simple and not clever or subtle was just five notes (C F A G D), evenly spread out over 10 bars. Yep, deliberately breaking the 'every 8 bars' rule with my first phrase! I used the Strings: Basses playing with the 'Long' technique because I have always had a weakness for Double Basses!


For the percussion, I avoided the 4/4, 120 bpm, four-to-the-floor bass and snare cliche, and instead went for minimalism: a single Tubular Bell hit, and again, I broke and followed convention simultaneously by having it happen at an interval of '1 bar and 1 beat' , but with a 4/4 120 bpm clock. So every 5th beat, the tubular bell hit happens, as 10 bars of bass slowly grind in the background. Not formula pop, and nowhere near the heights of Ultravox's Vienna.

A synthesizer pad was next, and here I actually followed Christian's advice about using monophonic lines per instrument. I did a descending set of four very obvious notes (C A G F) derived from the bass line, and assigned them to Strings: Violins 1, playing the 'Long' technique again.


Next I assigned an arpeggio to Strings: Celli (or Cellos) playing using the (wait for it) 'Long' technique, and yes, it is a startlingly unoriginal arpeggio in just about every way, not jazzy, no rhythmic variation, no velocity variation (more on this later) and lazily quantised. The Interweb probably already has lots of guides called something like: 'How not to create muzak in a DAW', and I just ignored every bit of potential advice I could think of...


The arpeggio is eight notes, and lasts exactly one bar. Looking back at this, then I now think that I should have made this longer or shorter than a bar, (which is bound to turn up in a 'How to do amazing things in Ableton Live!' YouTube video...) but there's always another version to be explored later! From the previous note choices, you won't be surprised to see C D F G A and B in there.


For the second pad track, I set the length at 3 bars, and broke the monophonic line rule (and several other conventions) by doing octaves, and by using the Strings: Violins 1 playing the 'Long' technique yet again. (No! No! No! Use another section!) C D and A are used here, surprising absolutely no-one!


Finally, the lead line, which (Gosh!) used Woodwinds: Flutes a3 (meaning 3 flutes at once instead of a solo flute, apparently) and which lasts 13 bars (!) that kind of only loosely follow bar divisions, and there's a sudden twiddly bit in the middle.


Rather than spend a long time hand-crafting the velocity (mapped to that 'Dynamics' slider which is a volume control in this layerless version), I cheated and used the stock/factory Velocity plug-in to add a bit of random velocity to the fixed velocities that the eagle-eyed amongst you will have spotted in the clip piano rolls.


Above you can see the simple automation applied using the Volume controller. Slow fades in and out everywhere. With this in mind, I synthesized a slow video accompaniment, and you can see the result:


Think of it as my lament for the deprecation of Quartz Composer from macOS - a wonderful technology that sadly never got the attention it deserved. (And a shout-out for Vuo, in case anyone is looking for an alternative...)

The end result highlights how well-crafted the Spitfire Audio BBCSO Discover sample library is. To me, it sounds like an orchestra playing a poorly-composed piece of music without the aid of a conductor! Which is what it is, of course! But whilst the music is bad, the sound is good, although it could be so much better with a little tweak here and there. Now when a sample library can take lazily-thrown-together muzak and make it sound good, then I'm impressed.

(This is an interesting point. Just about every demo that I've ever seen in the music business features a player with alarmingly strong musical ability showing that if you spend years learning your instrument, weeks programming, days building up muscle memory, minutes learning shortcuts, seconds memorising timings and milliseconds acquiring several other arcane expertises, then you can make the product sound truly amazing for about thee minutes! (And then people get bored and go to the next demo...) For me, I'm far, far more impressed when a product manages to make uninspired, lazy throw-away sequences of notes sound good.)

One final thing about what Spitfire Audio have done here. Yes, there are lots of orchestral sample libraries out there on the Interweb, but the ability to take music produced in a £$49 Euro (or Free) Discover version and play it using the Core or Pro versions, with much the same sound (less refined, and with some techniques missing, etc.) should enable a lot of learning, sharing, demoing and collaborations that previously might never have happened because of the problems of finding common resources. And that is both a good thing, and a potential game changer...

Explorations

I'm not known for leaving things alone. All samples are merely things to be pulled apart, twisted, tweaked, processed and then used as raw material for synthesis. And I'm afraid that the Spitfire Audio BCBSO Discover library is no exception. Having used just a few of the instruments and techniques to produce an exploratory demo, I then moved to seeing what those samples could become with a little more tweaking. Here's what I did...


My first exploration looked at the single layer limitation. The composite screen-shot above shows one way to get around this. I worked on the Strings: Violin 1 sound that was heavily over-used in the demo. At the top is the velocity fading/switching pane, splitting the 1-127 range into three slightly overlapping layers. Underneath the velocity screen-shot, the layers are shown in full so you can see them all at once. In the top layer, I added the stock/factory Saturator plug-in to add additional harmonics to reflect the higher velocity, but because of intermod distortion, this only works well with monophonic clips! (Another good reason for creating multiple monophonic lines...) The middle layer is left alone, and the lower level has a filter added to reduce the brightness - Yes, I could have used EQ, but I was raised on subtractive synthesis back in the 60s, and so I prefer a simple low-pass filter with optional resonance as a quick-and-dirty way to take the top end off and maybe add a bit of selectivity. Putting three instances of Discover inside an Instrument Rack may seem slightly unusual, but I create a lot of virtual instruments using Racks, and the results can be well worth it.

Synthesizing missing velocity layers necessarily involves only subtle changes to the sounds, so I then looked at finding some more radical changes (Which could be put into a velocity-layered virtual instrument like the one above, of course! Oops, another secret given away! My advice would be to create an Instrument Rack like the one shown above, and to play with putting different Discover instruments inside it, any maybe even going beyond orchestral sounds by layering in the odd synth sound or two...).


Changing the saturation transfer function (the blue waveshape) beyond the preset 'distortion' settings can produce more complex changes. Asymmetric transfer functions like the one above start out just adding brightness, but as you go to higher Drive settings, then the sound gets fuzzier and the variations in timbre in the 'Long' Violin 1 sound can start to break up. It stops sounding like a violin and becomes more like a guitar through an overdrive pedal, and not in a good way. What is particularly interesting here is that putting synthetic sounds through this sort of transfer function can sound very good, but for samples of real sounds then it isn't as effective - or, given the way that modern pop does all sorts of things that I always thought of a 'just plain wrong', then maybe I should write: 'isn't as effective in some contexts, but may be exactly right for some others'. The takeaway here is thus to use Saturator with care as a way to add a little bit of edge to the sound, but not to go too far. Which could actually be a pull-out quote, since it is good advice:

Use effects to add a little bit of edge to a sound, but don't go too far!

There isn't a choir section in Discover, but this doesn't mean that you can't get similar timbres from it. By using the Corpus physical modelling plug-in, you can use resonance to get some tones that can be very useful. One useful tip is to use the note indicator to set a suitable frequency for the resonance, and you will notice that this is set to just over C3 - if you set it slightly sharp or flat, then you get a nice detune effect - very reminiscent of detuning the oscillators on a subtractive analogue synthesizer.


I used the Strings: Violins 1 as the source material again - but there is nothing to stop you exploring the use of the other instruments! The 'Membrane' preset gives nice results, and just switching to the 'Tube' preset with the settings shown in the screen-shot above is a good starting point for more vocal-like tones - although there is more 'selectivity' in 'Tube' so you get 'tube'-influenced sounds when the input frequency is close to the 'Tune' value, and more of the source sample the further away you go. One very good illustration of where it doesn't work is to use the Percussion: Percussion: Timpani as the source sample for the Tube preset, and you get something which is too far away from a timpani and too much 'tube'-sound. Now when I say 'doesn't work' and follow it with 'too far away from a timpani' then that's the danger with transforming sounds - go too far and you lose the connection with the original sample, and the listener just hears an unusual, unfamiliar sound. Putting some of the original back with the 'Wet/Dry' control can restore some of the sense of the origin of the sound, but it may still sound like distortion, or you may find that getting the Wet/Dry balance right is very difficult.

Two of the staples of synthesized music are pads and stabs: thick sounds with very different envelopes, and in the case of stabs, a rather cliched vibrato. But the rich, thick sound is very useful in all sorts of circumstances, and so I investigated if a similar timbre could be obtained from the source material in Discover.


To achieve this type of sound, I used one of the often overlooked stock/factory plug-ins in Ableton Live:  'Overdrive'. As the screen-shot shows, the filter is set to cut out the lower frequencies and the Drive is full on, whilst the Tone is at just below middle. For the Strings: Basses this gives a timbre which is bright and harsh, and starts to cross over into 'synthetic'. Adding the 'Auto Filter' allows the harshness to be controlled, and below about 1 kHz, you get a thickened version of the Basses. The screen-shot shows the pizzicato 'stab' version, but when you use the 'Long' then there's a fascinating accentuation of the slight changes of tone and you get almost a loop sound instead of the smooth bass sound you might have expected. Putting this underneath a more conventional sound gave it a depth and extra thickness that was not as synthetic in sound as I expected. I must check the result of using this approach instead of the Saturator for the high velocity layer of the Instrument Rack that I showed earlier. I probably tend to think of Saturator as a more subtle effect, but in this context, maybe I need to do more A/B comparisons.

For the opposite kind of thickness: low end grumbles, I just reversed the filter curve:


This produces something which has a mixture of Double Bass growl, with a synthesized fullness - so full that you probably need to EQ it to leave room for other instruments! Once again, you can see my roots coming through here - I'm turning the orchestral sound into something that is a hybrid of real and synthetic.


Adding chorus to the Tremolo technique might seem to be a strange thing to do, and merging vibrato and tremolo ought to give a Leslie speaker effect. But the effect of the chorus accentuates some of the dense high frequency scraping sounds of the violin bow on the string, and it starts to sound rather alien. Replace the Chorus effect with a Flanger and some settings well below the usual resonant tube effect will give weird clunking and knocking sounds that are very non-violin!


Compressing the Pizzicato Violin 1 can accentuate the room ambience amazingly and remove most of the tell-tale characteristics that make a Pizzicato sound like it does. It's a bit like pitch shifting a triangle sample - any pitch other than the correct one doesn't sound like a triangle! Well here, some heavy compression gives an early reflection type of sound, which gets stronger when you layer several notes on top of each other, and with octaves and rapidly repeated notes, it sounds like there's a big echo plug-in. Repeat short notes very rapidly and you start to get nice interesting glassy textures and long reverb tails, and all of this with the Reverb set to zero! With the Reverb set higher then you can get some nice sharp metallic sounds that are well removed rom Pizzicato Strings.

I have always been a fan of repetition processes like flamming, reverse flamming, FOF and granular... So I then filled a bar with repeated short notes (just over two hundred of them...) with uneven spacing to stop it sounding too mechanistic, and tried the Pizzicato and Spiccato techniques, copied the notes to three other bars and did some pitch shifting of a few semitones per bar..


Switching to the Strings: Basses with the Pizzicato technique and transposing the whole clip downwards a few octaves produced a very nice sound indeed, although I did need to drop the Volume control in the Discover plug-in to about 50%. I also added some ping-pong echo to smear out the resulting drone-like atmosphere even further...  Oooh!


As you can see in the Compressor plug-in in the screen-shot above, this processing produces a complex output that has moved quite a way from the orchestral pizzicato Bass origin of the sound. But this hand-crafted variation on FOF (Okay, so it isn't really that because it isn't using sine wave granules!) or granular (Which often seems to be too clinical and clean) is using quite a lot of processing power, but once you sample it, then you have a hybrid sound that has elements of real and synthetic, and that's a very interesting place to be...

A selection of these explorations is available on SoundCloud (link below), but I strongly encourage you to do your own processing rather than just repeat what I have done.


What is particularly significant in all of these explorations is that the natural origin of the samples is often reflected in the way that the processing affects them. I found unexpected sonic details and quirks that I don't normally find in synthesized sounds, and this has set me along a new and unexpected path of research. Discover may turn out to be the start of something much more expansive and exploratory indeed!

Conclusion

My exploration of Spitfire Audio's BBC Symphony Orchestra Discover sample library started as a review, segued into a demo from a synthesist's viewpoint, and then went all exploratory when I started to use Discover as the sound source for deeper sound creation and synthesis. I'm pretty hooked into several aspects of this sample library, and it definitely has possibilities that far exceed its price and intended area of use. Basically, I'm impressed - far more than I thought I would be. Congratulations to Spitfire Audio for making an even more amazing/stunning product than I expected.

---

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






Wednesday, 13 May 2020

Minimalistic octave remapper plug-in in Max For Live for Ableton Live

Gregory Taylor's article for Cycling'74, where he talks about 'One Big Knob' effects plug-ins, made me think...You might have noticed that I'm not exactly a 'minimalistic' user interface person - some might say that I provide too many controls. So I'm trying an experiment...

Recently, I released MIDIchromatixN, a 128x128 MIDI note number remapper that has quite a few controls... Well, I have just released the exact opposite, a remapper with one big rotary control, and one small rotary control! It does something different with remapping, but the core code for doing the remapping is identical - the differences are all in the fine detail of the controls and what they do. Because I really wanted to boil it down to a single 'big knob', but failed, I have called it MIDIchromatixONE, in an attempt to distract you from the two controls.

MIDIchromatixONE


MIDIchromatixONE creates inversions of notes or chords in sequence clips - musical transformations of some of the notes, and not the 'invert' function where low notes become high and vice-versa. There are two controls (but you already knew that!); a big 'Map' rotary control that selects from the initial  20 presets, and a smaller 'Pitch' rotary control that 'tunes' the internal mapping to suit different input notes. Preset number 1 on the Map rotary control is a 'Thru' setting, where notes pass through unchanged, so it is more accurate to say there are 19 presets (at the moment) that do stuff other than nothing. The presets are arranged in 5 groups, based around modifying in groups of twelve notes, six notes, four notes, three notes or two notes. In each of the groups, the mapping starts out sparse and open, and gets more complex and thicker for higher numbered presets. So 'Preset 5 : Six Notes 1' is simple, whilst 'Preset 8 : Six Notes 4' is complex. The best thing to do is to put some notes from a clip through it, and listen to the presets.

The Pitch control shifts the internal mapping by up to +/- 24 semitones. This doesn't mean that it pitch shifts the output, it means that the way that the remapping is done can be shifted by 2 octaves up or down. I did wonder if I should call it 'Tune' instead of 'Pitch', but the word 'Tune' sounded too vague - this is one of the 'not fully nailed down yet' bits of the design, so it may still change in the future. Again, the best way to see what it does is to put some notes through it and to listen. Kind of what you might do with a plug-in with just 'One Big Knob', really.

Note really a control, the '!' button is a 'Panic' button that attempts to clear up any hanging notes, and also sends an 'All Notes Of' MIDI Controller message. I did think about restricting the Map button to changes only when the Ableton Live transport was stopped, but discovered that using an LFO to change the presets was rather cool, so I didn't put any limits on it - which means that if you change the Map button whilst a chord is held, then you may get held notes... Take care!

Inside

Inside MIDIchromatixONE, there are lots of lookup tables, kind of 'hand crafted' by myself, using assistance from a variety of tools that I wrote in Max For Live. (Which may or may not be a good thing - there's certainly quite a lot of 'tool artefact' in most of the presets... This might end up in a blog post one day - how do you avoid your tools affecting what you do?) I used source note clips from monophonic 'synth' sequences and polyphonic orchestral arrangements, and deliberately went for a range of effects, rather than just choosing the most complex ones - kind of how you would create presets for a real device...


The screenshot above shows part of the development environment for MIDIchromatixONE, where I'm using my 'Huge Noter' tool devices to show the input and output notes. Eagle-eyed viewers will also spot that I'm still in my 'Muted Impure' phase...


And above you can see just one or two of the simple tools that I use to assist me... Normally, you never get to see what happens behind the scenes... One programmer that I know told me that his tool-to-release ratio was about 100:1, so he wrote one hundred times as much code for the tools that he wrote to enable him to write the one final device that he then released.

Sometimes tools and utilities DO get released - examples from me on MaxForLive.com include the following:

- Aud Colours (inspired by Adam Neely @adamneelybass)
- Huge Noter (big display of notes, as used in this blog post!)
- DLS Helper N (Explore MIDI DLS...)
- MIDI cc tool (MIDI Continuous Controller message analysis...)
- MIDI cc  (simulation of a MIDI Continuous Controller...)
- Wavetable Creator ('512 sample' wavetables are increasingly becoming 'retro', these days...)

Regular readers may have spotted that one of these is closely related to my 'should be famous' M4L device which still has zero downloads!

Demo

There's a demo on SoundCloud here. It starts off with 16 bars of plain source material, then fades out and is followed after a pause of one second, by the same material processed by MIDIchromatixONE with a slow LFO running gradually through all of the presets - even the 'Thru'. There's also a bit of probability-based note pruning and some added random velocity from my MIDIprobNV plug-in. they sound gratifyingly different, at least to my ears. The material is not quite in 'Lamb of God' territory... and it isn't done using the Spitfire Audio BBC Symphony Orchestra Discover! Instead it uses an edited version of one of my 'mrOrchestra' Instrument Racks, and so exploits some of the articulation capabilities very nicely. (which is based on 'Quick_Arranger', which is still available...) I really should do another blog post about the 'Quick_Arranger' Instrument Racks...

In Use

MIDIchromatixONE doesn't do anything other than a few note transpositions, which sounds easy and trivial until you look at all of those lookup tables. My advice would be to start with Preset 1: Thru to create your clip, and then to audition the presets and find one that you like the sound of. There's a tiny bit of influence from the MiniMoog front panel design for waveshape selection, because the presets tend to get more complex and thicker as you go to the higher values. This doesn't mean that Preset number 20 is the best, of course! Don't forget to explore fine-tuning things with the 'Pitch' control, and remember that the effect it has depends on the source material, so don't expect huge changes!

One important thing to remember is that MIDIchromatixONE is not your standard effect plug-in. It is perfectly possible that many of the presets will have little or no effect on most of the MIDI Notes that you pass through it. Conversely, it can change notes in ways that would take quite a lot of manual editing time. Finally, the presets are my first pass through creating ways of using the underlying transposition engine - I intend to make more presets (probably less than 107 more!) for a future update when I have time, and these might use the tools less and be be done with more manual editing of the tables - I did worry that the tools were doing too much of the driving...

A final thought: the presets so far are very tame: chromatic and very constrained inversions. If you look at MIDIchromatixN, then there's lots more power lurking in the underlying engine... In the 107 available preset slots that are left (can you figure out why?) then there is space for more 'challenging' presets, but would people like something that would produce discordant outputs? For a while I have been considering releasing some of the 'broken' abandoned devices that don't, and in many instances, can't work properly, or whose output is imperfect in some way. Maybe MIDIchromatixOOPS will get released one day...

Getting MIDIchromatixONE_mr

You can get MIDIchromatixONE_mr here:

     https://maxforlive.com/library/device/6273/midichromatixone

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... and pictures may not always be the current version... but Schrodinger's cat's status is permanently uncertain...

Modular Equivalents

In terms of basic modular equivalents, then implementing MIDIchromatixONE_mr is just about as awkward as MIDIchromatixN, even though the transpositions are much simpler. The 'mapping' of the 128 MIDI notes is the problem, unfortunately, and I still haven't found a neat solution. The Make Noise 'Maths' module starts to get somewhere close, but not entirely. The Expert Sleepers 'Disting mk4' also gets close, and maybe the Quantizer can be tweaked suitably, or possibly the Waveform Animator, maybe. But I couldn't find a direct equivalent. This means, of course, that I will get a comment pointing me to a classic module that I have overlooked, or never heard of, or forgotten, or didn't know about - there are lots of modules out there. Anyway, until then, I don't have an ME for this device...

The obvious solution goes outside of a purist interpretation of 'Modular' and 'DAWless' synthesis, and takes us into 'Hybrid' territory: use a dual DC-coupled 'audio' interface to connect Ableton Live into your modular system so that you can use MIDIchromatixONE (or N).

---

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









Monday, 23 March 2020

Swapping MIDI Note Number and Velocity Value in a Max For Live plug-in for Ableton Live

When I produced the MIDI Note Filter recently, I realised that the internal processing would allow some other interesting MIDI processing functions to be carried out. One thing that I have always wanted to experiment with spans across two different topic areas: music and steganography (hiding data in other data), and it builds on my recent explorations of Note On and Off messages, as well as a recent twitter message that talked about security.

(I have also been busy producing material for Christian Henson's 'Pianobook Pianoday 2020' collaborative 'systems music' project due to be released on the 28th March 2020 as 'Music by 300 Strangers'. Search for '#pianobookpianoday2020' on YouTube to see some of the contributions... This has put me in a more experimental and explorative mode than my usual analytical one, so what follows is not my usual type of Max For Live plug-in... but this is a good thing!)



MIDIswapNVmr01 is a Max For Live plug-in that swaps the note number and the velocity value in MIDI Note On messages that pass through it, and it works with the implied Note Off messages that occur when the velocity value is zero. A button is provided that toggles between 'Swap' mode and 'Thru' mode, and the usual '!' panic button is also there to stop hanging notes (I have called it 'ANO' here because it flushes out hanging notes, but note that it does not send a MIDI 'All Notes Off' message - Ableton Live does that when you press 'Stop', which is why the dark blue ANO is shown by the monitor...). Yep, a minimal user interface!

One thing which I hadn't thought about until I created the MIDIfilterNOTEmr plug-in was what happens when you turn off a Max For Live plug-in using the 'Power' button in the top left hand corner. It turns out that if you turn a M4L plug-in off, then it is bypassed, so you can use the power button as a kind of secondary 'Thru' button. So I have included this in the screenshots!

Screenshots


The screenshot above shows the plug-in swapping note numbers and velocities. I have put two MIDI Monitor utilites before (on the left side) and after (on the right side) so that you can see what is happening. Looking at the very last note (just before the dark blue 'All Notes Off' ANO MIDI message), then you can see a Note On (shown as 'NON' in the Monitor utility) for E3 with a velocity of 65 goes through the plug-in and comes out as a Note On for F3 with a velocity of 64. You won't be surprised if I reveal that F3 is the note that corresponds to note number 65, so the incoming velocity of 65 has been converted to a note number (F3) as intended. The E3 incoming note is note number 64, and so this turns into the velocity of the outgoing note as 64.

Let's pause for a moment here whilst you get your head around this. The incoming note is E3 (65) with a velocity of 65. The outgoing note from the plug-in is F3 (64) with a velocity of 64. So the note number and the velocity value have been swapped.

A quick note about note offs. As I've mentioned several times recently, a MIDI Note On message with zero velocity is treated as if it is a Note Off message. So in MIDIswapNVmr01, a Note Number of 0 (C-2) turns into a velocity of zero, which means that whatever the value of the velocity of an incoming note, if the note number is zero (C-2), then the output will appear to be a Note Off message. As it happens, the 'hanging note' suppression mechanism that I use ignores Note Off messages that haven't ever had a preceding Note On, and so nothing comes out of the plug-in!


I wasn't sure how to capture 'nothing' happening, so for the screenshot above I played several C-2s and then an A-2, and then C-2 again. As you can see, the only output from the plug-in is an E6 with a velocity of 9, which is because the incoming note's A-2 is note number 9, and the incoming note's velocity of 100 maps to  E6 when it gets turned into a note number. The C-2 notes thus turn into pairs of 'Note Ons messages with zero velocity acting as Note Off messages', which are then stripped away by the hanging note protection, and so never even make it out of the plug-in.

So there's a caveat / warning / note for this plug-in:

If you input a C-2 into this plug-in, it will never get out!


The screenshot above shows the inputs and outputs in the 'Thru' mode - so the MIDI messages pass through with no changes.


And the 'Power Off' mode, where the power button in the top left hand corner is clicked to turn off the plug-in. This gives the same result as the 'Thru': the MIDI messages are not affected.

As an interesting extra, here's what happened when I tried the MIDI Monitor from the Max for Cats 'Gratis Hits' bundle pack of free Max For Live devices:


As you can see, the MIDIswapNVmr01 plug-in is disabled (powered off) and so the MIDI messages are unchanged, but the Monitor utility on the right has added an octave to each note number: C3 becomes C4, C4 becomes C5, and C5 becomes C6. I'm very used to seeing different octave numbers in MIDI software because there are various interpretations of the standard, and I tend to use whatever the software uses, which in the case of Ableton Live and Max is C3=60, so this has probably been fixed in an update, and I just don't have that update! One area that I steer well away from are any discussions about Middle C and MIDI.

Because this post has talked a lot about MIDI Note Numbers, then this seems like a good place to share two charts that I use a lot when I'm playing/programming. The first is a classic that you have probably seen in various forms before:


So the table above has notes along the top, and caves up and down, and lets you find the note number of any of the 128 MIDI notes. You can also use it in reverse - look up a number in the grid, and then read the note and octave from the two axes.

The second is more unusual...


This is a kind of 'inverted' version of the first table. It has decades (10s (tens)) on the vertical axis, and units (1s (ones)) on the horizontal axis. So to look up 65 (note F3 from earlier) you go down to the row that starts with 60, and then go across that row until you are in the column with 5 at the top. For 65 you get F 3 in the two boxes (note/octave). What is interesting about this are the patterns that you get when you take the usual '2 and 3' pattern of accidentals that you see on a normal music keyboard and wrap it around decimal numbers. The columns have either 3 and 3, or 2 and 4 patterns of notes, and the diagonals have more patterns: 3 and 4 and 2 and 3. if you are into patterns, then the last row of blocks of 2 always repeat the octave in the cell underneath, whilst blocks of 4 repeat the octave value of the cell above the first row. Block of 3 do different things depending on if they contain accidentals or not! If you are familiar with chess, then 'Knight's moves' on this table give you the cycle of fifths...

If you have ever seen one of my Tweets about cryptography, then my fascination with patterns now probably makes more sense. Music and cryptography both contain a lot of maths underneath, and so patterns are not unexpected!

Controllers and control

Swapping the note number for the velocity value renders makes it very difficult to play keyboards and MIDI controllers because the velocity value is often difficult to control with the same amount of precision as you would find on a keyboard where each key produces a specific note number. Velocity is determined by the rate at which the key is pressed down, and so is based on a time measurement. By swapping these two values, keyboards and MIDI controllers gain precise control over velocity (what used to be pitch control is now velocity control!), but lose the precision of pitch control.

Steganography


Steganography is all about hiding information in places where it is not visible. One example is in JPEG picture files, where it is possible to hide data inside them by spreading it across the whole picture in ways that are not obvious. So there might be slight and gradual changes to brightness, colours, levels of noise or other parameters, that are not visible o the human eye, but that can be detected.

In this case, MIDIswapNVmr01 increases the precision with which changes can be made to the velocity value, but the pitch becomes less precise - in fact, trying to control pitch by how quickly you press a key spreads out pitch control into a very imprecise form! In graphical form, this might be represented by the amount of blurring (as a metaphor for the spreading out of data):

So a conventional music keyboard has precise control over pitch, so the word 'Pitch' is in focus, whilst the velocity control is less precise, and so the word 'Velocity' is blurred.


What MIDIswapNVmr01 does is swap the blurring - so now the word 'Pitch' is blurred, whilst 'the word 'Velocity' is in focus.


At Synthfest UK 2019, I spoke to Paul Ward about some of the FM sounds that I had programmed anonymously for the UK DX Owners' Club (many of which are widely available in various Public Domain collections - one set of my sounds have distinctive titles like : '-=[V]=- 1', for example), where there was a high amount of velocity sensitivity built into many of them. Controlling them can be tricky for fast runs of notes, and so Paul said that he preferred to use controllers like Mod Wheels to give more precise control.


What MIDIswapNVmr01 provides is precise velocity control from a keyboard, but sacrifices pitch control. With a fixed velocity from a keyboard, then MIDIswapNVmr01 only outputs one pitch, but you have precise control over velocity - and in fact, even a 88-note keyboard is going to give you access to only part of the full 1-127 velocity range (in exactly the same ways as it only normally lets you play 88 of the 0-127 range of MIDI note numbers!).

Which is why I said right at the start that this was for experimental purposes. I'm not expecting a sudden change in workflow so that people enter pitches very precisely (as usual!) and then use MIDIswapNVmr01 to enable them to add precise velocity as well. But my thinking is that given recent developments with MPE, and with sophisticated controllers like the Roli Seaboard, Haken Continuum and Expressive E Osmose or Expressive E Touche (others are available!)  then it might make people think more about additional control other than the pitch, timing and a very imprecise velocity value that you get from a traditional music keyboard.

Real-world instruments often have a lot of ways that the timbre can be influenced in real-time, and their players know how to exploit this - so I reckon that electronic musical instruments should be controllable in multiple dimensions as well. One very interesting illustration of this is in sample libraries of sounds produced using FM synthesis - what you get are very nicely sampled 'snapshots' of specific timbres, but you lose a lot of the subtle velocity control that programmers like myself put into sounds, and so the timbral variation is missing. I always remember when the first mass-market sampled pianos came out in the 1980s (Technics et al) that they were described by many players as sounding like:

'A very good recording of a piano, but not a piano.' 

Inside

As I mentioned, this plug-in is based on the MIDI processing core of the MIDIfilterNOTEmr utility, so let's see how it works:


As usual, I have tidied my normally untidy code in the screenshot above. The right hand side is very similar to the MIDIfilterNOTEmr code, with the 'select' object switching between two values depending on the incoming value. But here the 'swap' object at the top is used to change the note number and velocity over (as well as changing their 'right=-to-left' processing order), and so the velocity value does the same switching depending on 'Note On' or 'Note Off', but now switches the note number value because that is what will end up in the middle 'velocity' input of the 'note out' object.

On the left hand side, the 'select' object is again doing switching, but this time it is actually making sure that the velocity value is stored. The velocity value that comes out of the 'swap' object contains two values, the velocity value from the incoming notes, or zeroes from the Note Off messages. So the left hand side is all about capturing the non-zero velocity value, and making sure that it is stored when the zero velocity is output by the 'swap' object. So the two grey message boxes are just two stores in series, and the trigger for the storing is produced by the 'select' object when it detects a Note On or Note Off message. Finally, that captured and stored velocity value is fed into the left hand 'Note number' input of the 'note out' object. 

This approach could be extended to longer serial chains, and might open up additional possibilities for doing more complex MIDI processing. Because some previous posts have talked about Max's sample-level lower-level programming, then the message box approach used here could be thought of as being kind of half-way between ordinary Max and Gen: MIDI-event-level, perhaps? 

Fun!

One unintentional side effect of MIDIswapNVmr01 is that it makes playing a music keyboard in the conventional way almost impossible... So if you are every visited by a highly skilled concert pianist, and they want to play one of your keyboards, then using MIDIswapNVmr (to swap the MIDI note number and the velocity value of their playing) will considerably impede them...

Alternatively, sometimes, changing a familiar constraint (like pitch control from a keyboard and changing it to being controlled by velocity) can break you out of creative road-blocks... Inverted keyboards are another way to do this, and I have produced a Max For Live plug-in that does 'proper' inverted MIDI keyboard mappings and lots more!), but just using a Scale utility over an octave can achieve a similar 'writer's block' mitigation.

Actually, combining the ideas in the previous paragraph - adding a Scale utility after MIDIswapNVmr01 so that the MIDI notes are constrained to a specific scale - is a very practical and useful way of using many of my weirder plug-ins (like my MIDI note range expander/compressor and offset utility). What the Scale utility is doing is constraining the variability from the velocity measurement, which takes us to the several variations of 'constrained randomness' in another of my plug-ins.

I'm wondering if I can find time to do a 'how to use my plug-ins in combination' tutorial...

Getting MIDIswapNVmr01

You can get MIDIswapNVmr01 here:

     https://maxforlive.com/library/device/6081/midiswapnvmr

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 implementing MIDIswapNVmr01 depends on your MIDI/keyboard interface. If that produces CV outputs for Note Number (Pitch) and Velocity, then a couple of patch cables crossed over and connected to the output (with a gate cable as well) will do this directly, giving an ME of 1! This is the lowest modular equivalent so far, if my memory serves me correctly...

Links from this post:


Roll Seaboard (Company web-site)

Haken Continuum (Company web-site)

Expressive E Osmose (Company web-site)

Expressive E Touche (Company web-site)

MIDIfilterNOTE (MaxForLive.com)

MIDIfilterNOTE (Blog post)

Christian Henson (YouTube channel)

#pianobookpianoday2020 (YouTube search)

---

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