Saturday, 27 July 2019

Several M4L variations on Random for controlling parameters in Ableton Live

I am my own worst enemy. I find it difficult to resist making comments on some Facebook posts, and I find it hard to not create MaxForLive devices when there isn't one available as part of the comment.

Which is where MIDIrandomA comes from. Andxre Andre posted in the 'Max For Live Users' group that it seemed like:

'...the max for live essentials LFO... feels like it always gets to the same values a lot'.  

 And I commented:

Random’ is a difficult topic. People have a number of expectations that do not necessarily match to a true random source. There have been published papers describing the differences between a true random source and what people perceive/expect. People seem to expect no repeated/similar values, no small differences between successive values, and no repeated similar sequences, and more... Some ‘random’ sources are actually processed so that they fit better with expectations - Apple’s iTunes playlist generation and shuffle, for example. 

And I kind of committed myself to making a less random 'random generator'...


MIDIrandomA




MIDIrandomA is the result. It isn't perfect (the repeated sequences' bit isn't included yet...), but it does provide 'constrained' random values that can have the sort of characteristics that Andxre Andre is looking for. As always with my rapid development devices, there's probably a lot that can be improved, so feel free to let me know what you think.

MIDIrandomA is a random 'control voltage'/number/value source. It has three different types of random noise, instead of the more usual single source, and so provides comprehensive control for exacting requirements.

Type A has four rotary controls, and provides detailed control over the gain, the quantisation, the smoothing (logarithmic accumulation), and the thinning (non-linear amplification).

Type B is the classical 'Random Walk' and only provides control over the maximum size of the step between one output and the next.

Type C is the opposite of B - no repeated adjacent values are allowed, and the delta size (difference between successive output values) is the minimum that is allowed.

The generation of random number values (0-127) can be triggered by a free-running LFO (Rate, =Not Synced=), or one of several MIDI note or velocity triggers, which work from notes on a piano-roll Clip in the same track.

The output can be mapped to any co-operating control in Ableton Live.

Getting MIDIrandomA 0v01

You can get MIDIrandomA on https://www.maxforlive.com/library/device/5604/midirandoma

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 MIDIrandomA 0v01 would probably require three different npise/random generators, plus some post-processing (non-linear amplifier, filter/accumulator, not sure about the repeated value removal...) to give the same sort of functionality, plus a little bit of switching to do the 'Type' selection and the sync options, giving a total of about  10 ME.

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


Thursday, 25 July 2019

Notes on troubleshooting video graphics cards on a Mac Pro 5,1

So there I was, working on something other than this blog, using an old Operating System (macOS Mavericks, because I needed to use an old utility), when suddenly my monitor went blank. Now this normally happens when I've not been active enough and the screen-saver (my own, written in Quartz Composer) kicks in. So, as usual, I just pressed the space bar and waited for the screen to re-appear. But it still looked like this:


It didn't.

So I pressed the space bar again. Nothing. The screen looked like this:



And then my monitor started reporting that my Mac Pro wasn't outputting video... I got a sinking feeling in my stomach...

After swapping the miniDisplayPort to HDMI cable, and outputting my laptop screen to the monitor, I had established that it wasn't the cable, or the monitor. Which reminds me:

The Synthesizerwriter Trouble-shooting Guide

1. Sometimes things just fail. It isn't malice, and it isn't deliberate, and anthropomorphising computers and musical devices is almost always a bad idea.

2. Check the power before anything else - this should be your zeroth task - before doing anything else. I always remember the ARP Odyssey Service Manual, where the section (9?) called 'Power Supply Considerations' had a line drawing of a bewildered technician with an opened-up (and very quiet) synthesiser on a bench, and way off to one side was a mains connector not plugged into a mains power socket. Trying to get a sound out of a synthesiser that isn't connected to power can be very difficult...

Note that the 'Check the power' also applies in reverse - if you are working on anywhere near mains voltages (like in the power supply), then you should not have the device plugged in. In fact some people go so far as to put electrical tape over the socket. One other thing related to safety when working with mains voltages is often forgotten - 'Always make sure that you can see the plug that isn't in the socket'. If you can't see the socket, then you don't know if the plug is in the socket, and you might be about to electrocute yourself. If you can see the socket, but you can't see the plug, then someone else may have plugged the device into another socket, and again, you are about to electrocute yourself. Only if you can see the device, the cable, the plug and the socket are you probably safe - although experienced engineers will also keep checking the the plug is actually connected to the device they are working on!

In the case of a monitor, check that it is powered up, particularly if it has very light-touch switches. In the past, I had a monitor that suffered from the Samsung Capacitor problem (more analysis), and so was prone to suddenly losing power (and here the display!), so this was my automatic first assumption - but see 4 below...

3. Check the cables first. There are many failure modes for cables these days. The casters on many 'home office' chairs can do nasty things to the insides of cables and not leave very obvious signs of the damage until you look really closely. Pulling on cables in various ways can stress the wires inside, and it doesn't matter how accidental the trip was, or how much you enjoyed it. Pulled cables can also affect sockets, and there's the famous 'wiggle' test for those.

4. Check with a known good source. So if a mains power socket isn't working, then check it with a mobile phone charger and see if your mobile phone charges. (A table lamp, a hairdryer, and many other pieces of electrical equipment can also be mis-used as a piece of test equipment...) If there's nothing appearing on a screen, then find another source - hence using the miniDisplayPort on my MacBook Pro laptop and seeing if the monitor displayed the mouse pointer as I moved it around. For amplifiers then a microphone can be a good source of sound, but remember the golden rule of amplifiers: 'Always start with the volume turned all the way down, and turn it up slowly, ready to quickly turn it back to off if necessary'. On a monitor, then pressing one of the 'setup' buttons will display the RDTN UI (Ridiculously Difficult To Navigate') and so confirm that the monitor is at least capable of displaying something. There again, on many monitors the 'Power' LED is so bright that many people cover it with Blu-Tak (or similar slightly sticky stuff) and then press their nail into it to create a tiny hole that lets only some light out - which creates an interesting problem when it gets pushed down and the hole goes away, leaving no visible LED.

5. Try turning it off and back on again. This works rather more often than you might imagine!

In my case, the monitor was connected to mains power, the LED mostly covered with Blu-Tack was just about visible, the cable was good, and the laptop and RDTN UI both showed things on the screen. But from the Mac Pro 5,1, all I got was the well-known piece of art often titled: 'Black Cat In A Coal Cellar'.

6. Google: 'Sudden <symptom> from <device>' and see what it says. In my case, 'Sudden loss of video from Mac Pro 5,1' quickly got me to a Mac Graphics Card Specialist retailer, where a few minutes of pop-up chat (usually in the lower left or lower right corner of the web-page) quickly confirmed my worst fears. 'Yep, sounds like video card failure. We've had quite a few of those recently.' Using web-site chat is a good approach to this type of diagnosis, because they don't hear you gasp when you realise that things are about to get deadly serious and potentially expensive, and secondly, you can't hear if they make whoops of delight and wild celebration when they realise that you are about to spend lots of money with them (or another retailer - I am not going to mention the really cynical method of mis-using a helpful chat person on an expensive site when you are planning to eventually buy it from a cheaper source that has naff customer service.

7. Write down what you do and what you find out as you go. Putting it off until later is never a good idea because human beings (and any other sentient organisms reading this blog) often have amazingly  unreliable memories. Of course, you could always write a blog post about what happened...

Back to the main story...


So the monitor was powered up, the cable was ok, the monitor displayed the screen from my laptop, turning it off and on again made no difference, and an external expert had confirmed the diagnosis. When I used to be a service engineer, this would be referred to with words like 'The Monitor Display appears to be Sub-Optimal'.

Now the Mac in question is a Mac Pro, of 2012 vintage, a '5,1' 'Twelve Core', and one of the last first generation towers before the second generation 'Cylindrical' Mac Pros appeared. Just recently, the topology has returned to the tower format with the third generation, which has been, imho, unkindly labelled as 'The Cheesegrater' by some commentators. All of the first generation Mac Pros came with a Radeon 5770 video graphics card as the default output option, although there were various other more-powerful cards available. In my case, it was a 5770 card whose GPU was now pushing up daisies somewhere on a different plane.

At moment like this, there perhaps ought to be a step number 8...

8. 'Optimise your options'. By which I mean that instead of just replacing the faulty part, you look to see if there are any alternatives and maybe engage in some future proofing rather than just maintenance. Your insurance may affect hat you do, of course. In the case of video graphics card, then a card from 2012 is very likely to have been superseded, and that means that the sources are going to be second hand, used cards, not new ones. There's a word that almost always describes what happens when you start to look at alternatives in these circumstances, and that word is often 'complicated'.

This is where an 'escalation sequence' comes in. You start at the simplest solution, and work up to more complex solutions, noting down the advantages, disadvantages, consequences and cost of each. In most cases, it goes something like:

a. Repair the broken part,
b. Replace with a used part,
c. Replace with a new part,
d. Replace with a better alternative part
e. Forget the part and replace the whole system with a new, better alternative

Sometimes the order isn't quite like this when you consider all the pros, cons, consequences and costs - and weighting them can be very awkward to decide (Applying weights to pros and cons, etc., sounds like Risk Analysis, and that is definitely a topic for a different blog!). Solution C is often the easiest logistically, and solution A can often be slow and expensive. Don't forget that replacing with an alternative can also require additional setup, changes and other side effects, so the 'Consequences' column can be very important.

In my case, repair didn't seem to be worthwhile, given the cost of second hand 5770 video graphics cards. New 5770 cards don't exist, so that removed solution C, and solution D would be good for when I need to upgrade to the Mohave version of macOS, but I'm still waiting for Ableton Live to be 'officially compatible'... This left solution B, and it looked like my best option was to gradually move forwards and wait until things forced me to Mohave. So I found a specialist 'Mac video graphics card supplier' that sold 5770s and did the usual on-line checking: they had more than 10 in stock, and there were plenty of FAQs and Installation information on their web-site. It also turned out that this supplier was a good potential source for solution D in the future, because I am sure that I will eventually need to go to Mohave (and beyond), and the Radeon RX 580 looks like a good contender, if a little pricey - and there were quite a lot of 'consequences' to consider s well.

I'm not going to distract you with some of the interesting 'consequences' aspects of changing video graphics cards, because they are so dependent on your hardware and operating system, but I would stress that filling in a escalation table in detail can be very useful when making a decision and planning your route forwards. In my case, the video card failing left me stuck in a very old OS, and without a video card, then your computer is quite tricky to use. Installing drivers, for example, for a replacement card is not easy when you don't have a display!

Links


For new purchases, then I always go for AppleCare. It has dug me out of bad places so many times now that it is an essential purchase component for me.

For generic Mac stuff, then I have been using Mac Upgrades for many years. They are knowledgable and helpful. (The URL comes up as '2nd Chance PC Ltd ' in some browsers, so don't panic!)

For specialist (and used) video graphics cards, then Mac Store UK have access to customised cards from experts like MacVidCards.com, but remember that I'm not a video professional and have only bought one card from them.

As always, suss out your sources carefully before parting with money!


Here's a link to a simple 'Escalation Table' spreadsheet...

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


  









Sunday, 7 July 2019

Programming some new presets for Sprike...

Every so often, I program some sounds for a synthesiser that I am totally unfamiliar with. It provides a break from revoicing new synths when I first get them (yes, I really do that!), and it is a good way to learn about user interfaces, how to present things so that they are easy-to-use, what needs to be in a user manual, and to learn about new and unusual synthesisers.

You can see a previous example of this activity here, from when I did some sounds for the Amazing Noises Pulsor synthesiser (a MaxForLive plug-in for Ableton Live), and I also wrote my own 'alternative' manual for it.

Sprike



In contrast, and as a break from all of the MaxForLive and Ableton Live stuff, this time I chose Cognitone's Sprike, a free additive virtual analogue synth plug-in that is derived and extended from Tunefish4 (and 3...) and which is available in VST format for 64-bit Windows, and VST and AU formats for 64-bit macOS. Linux isn't directly supported, but there is some compilation information for the earlier Tunefish4 project on github. Cognitone's flagship product is arguably the 'intelligent assistant' called Synfire, which is kind of 'one layer up' above a DAW - it allows sophisticated control over the composition or 'prototyping' of music via smart editing of harmony. Powerful and deep, it is a million mile away from the auto-accompaniment fake sheet and chord utilities that I remember from the recently MIDIfied 1980s and 90s.

Sprike looks like many other VSTs. The User Interface (UI) is divided up into the sort of panels that a real piece of hardware would have, has a global section at top-left, and a virtual keyboard along the lower edge. Quite a lot of the panels can be disabled, and they go dark blue when this happens. The right hand side has the modulation 'matrix' (8 sources, 29 destinations, and 8 modulation depth controls), plus an interesting effects 'stack', which allows up to 10 of the available effects to be placed in series (a great idea that I wish was more widely adopted in plug-ins).


Sprite uses an additive generator as its main sound source (it also does various flavours of noise!). There are quite a lot of controls, and these use additive synthesis to fill a wavetable, and then that wavetable is what produces the sound output from the generator. Trying to provide an intuitive and minimal-number-of-controls interface for additive synthesis is not easy, and Sprike's solution is pretty good - there are not that many controls, and the graphic underneath shows the spectrum on top, and the waveform underneath. A little bit of experimentation should rapidly get you up and running and making sounds, although getting fully to grips with the generator may take some time.  The two rows of buttons are for the amount of detune for what sounds like two wavetable players, and the octave switching. When I was programming Sprike, I left the octave buttons in the default '0' position, rather than produce 'bass' sounds by just transposing down by a couple of octaves...

There are four filters, and they seem to be connected in series, although you can switch them in and out (but not via the modulation matrix!). There are 2 LFOs, and 2 ADSR envelope generators, and finally seven effects: Flanger, Reverb, Delay, EQ, Chorus, Vowel Formant Filters, and Distortion. Basically, you get more panels than you would expect in a basic additive synth, and so the description of 'additive virtual analog' is a much better description - you get 'subtractive-synth'-style filtering and envelopes instead of the 'envelope per harmonic' controls that traditional additive synths give you.

For something which is free, and which Cognition describe as an experiment in writing small and efficient machine code, then I hesitate to criticise Sprike in any way, because my assembler skills stopped with the 56000 DSP from Motorola many years ago (and the 6502/8080 before that). However, whilst programming a few presets, I did find a few things that are useful pointers to things that anyone who makes a synthesiser plug-in should consider...

First, there isn't much in the way of user documentation (that I could find - I would love to be wrong!). There is a brief Tunefish user manual on github, and some additional material on the tunafish-synth.com web-site, but you do need to do a lot of iterative exploring of some of the controls to get a feel for what they do.

Secondly, the additive generator doesn't make it very obvious what the programming model is. There are controls that mention parameters like 'Harmonics', 'Drive' and Spread', but you may need to spend some time to learn how to exploit them to get the sort of raw generator sound you want. having said this, I am still impressed with the small number of controls. I have a Kawai K5 additive synth, and this has the aforementioned 'traditional' 'envelope per harmonic' approach, which is a huge number of controls!

Thirdly, the volume control defeated me. There is a global volume control at the top left, but towards the lower right corner there is another 'Volume' control which is associated with the 'Pan' control, and so my assumption was that this was the main output volume control for a preset. But it doesn't seem to work like this, and I'm not sure if it is connected to the global volume control. Anyway, it doesn't really stop you from programming sounds, it just means that sometimes you need to be aware that you may need to tweak the volume control - and tweaking synth controls is not exactly an unknown of unusual activity!



Finally, the modulation values aren't exactly intuitive. If you choose an LFO as the modulation source  (look at LFO 1 in the screenshot above) and then set it to modulate the 'Scale' control in the generator, then full modulation seems to happen when the mod matrix control is set to 70. Whilst useful for ova-modulating controls, it took me a while to figure it out, and I dislike 'magic' numbers in user interfaces - of course, having programmed MIDI editors for the Kawai K5, then I'm very familiar with 'special' 'secret' numbers, because the Kawai MIDI implementation uses them!

Presets


In the end, I produced 128 new presets for Sprike, and a quick search of the Interweb gave me the impression that there are not very many easily available, so I'm making mine available for free (as usual). There's a reasonably wide range of sounds, albeit without any octave switching (so you can decide which sounds you want to be 'bass' sounds!) and a strong bias towards synthetic and away from imitative. Use at you own risk (some of the effects stacks seem to overload sometimes...), but hopefully 'enjoy!'



Sprite has a simple drop-down menu for selecting presets, plus 'Prev' and 'Next' buttons, plus copying and pasting facilities, so it is obviously intended to be programmed! The presets themselves are just plain text files (which may not be as straight-forward as you imagine for some Operating Systems) with parameter names followed semi-colons then the value per line.


Getting the presets


You can get the Sprike presets from here, for free (it is a 143 Kbytes zip file). Unzip the file and put the files into a folder called 'bank1' (or higher, as you wish) in the appropriate 'Presets/Sprike' folder inside your OS's filing system - as shown above for a Mac...


Buy me a coffeeBuy me a coffee