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.


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


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

No comments:

Post a Comment