Saturday, 16 July 2016

Warning, this may take a while

A quick word of warning - don't hold your breath for these synths on iOS, there's a pile of stuff I need to get done first. The three 'Trons' on the app store - M3000 HD (3 versions of that one alone), plus Sopranotron and Wizdom Music's brilliant-sounding Jordantron all need a refresh. These are very close to being done, all new features are in and sort of tested, but I still need to guide the refreshed versions through beta and onto the store.

There's then the big app for a significant music legend guy that is forever delayed and needs to get finished and out there. Then there's a new suite of AUs to bring the Tron technology and Streetly's massive, authentic Mellotron and Chamberlin tape library to both the iPhone and third-party DAWs for the first time. Then there's a trio of really sweet Church Organs that derive from these AUs and reuse the core of the Raspberry Pi SRsynth to generate their stacked stops. And finally, back of the queue but still very dear to my heart, there's the Synth Collection.

The good news is that after the AUs and the AU Church Organ work it will be dead easy to AUize the Pi code and thus get it onto iPhone and iPad, and exposing the synths as AUs allows them to be used in any DAW, including Garageband. And pushing them to the back of the line gives me time to think about how to package them - just packaging 3 synths and a half dozen effect AUs into a 'does nothing much' app wouldn't be very interesting, so an app that allows a synth and effects graph to be built and sequenced using my existing scripting language is (for me at least!) very interesting, and would get the real essence of the Pi Synth Collection project out there for people to play with. Plus augmenting the app with a couple of audio input channels that can have the effects applied to them will make for a very interesting little bonus - it could be a band in a box with vocal and guitar treatment for buskers, for example. But it really is a bonus, it is dessert rather than the main course - the real payload of this app is going to be the synth and effects AUs, to be explored and exploited in external DAWs.

So be patient, it will happen, and hopefully before it starts snowing!

One problem that does need some thought - how to deal with all that smartass functionality that I integrated recently, that relies on user-supplied C++ to implement MIDI filters? Thinking cap needed ...

Tuesday, 5 July 2016

Synth Collection heading for iPhone and iPad

If I can find a way of payloading the Pi version onto the iPhone with some form of anti-piracy scheme it may yet find a release on everyone's favourite £20 educational computer. But seriously, that won't happen, I have other projects to move onto. Which is sad, but heck, if nobody out there who is going to profit from all this software development - the hardware vendors selling lots of Pis / lots of Pi-based computers / lots of MIDI controllers / lots of audio interfaces - is willing to compensate me for such a massive piece of work, then I'm certainly not going to just give it away for free while they print money.

So it looks like that's that. 

Goodbye and thanks for all the fish!

But on a happier note, the iOS version will be much better than the Pi version was. 4x oversampling in all the synths, which adds some much-needed AA to the SR synth and augments the existing analytical AA for VA and WT, but also makes the filter for SRsynth much sweeter. Actually these quality upgrades would be trivial to add in Pi 2 and Pi 3, but not for Pi Zero. Anyway, with Audio Units on the iOS App Store, a single app that delivers an experimental harness along with multiple AU synths and AU effects is a sensible proposition, and as AUs they will all just work within Garageband. Which is nice.

So for iOS musicians there is something great to look forward to, and it's not goodbye at all, which is doubly nice. But thanks for all the fish anyway, I do like fish. And I do like the Raspberry Pi as well, I love the little rascal, but it's a crying shame that the platform was conceived and strategized from the outset to drive software value to zero. Without developing a full-blown sandboxed App Store - like the old Tao Intent / Antix Labs environment -  there is no way for a pure software play to make money. Which of course, in a totally bizarre move, kills stone dead the entire software industry and the future careers that the platform is intended to nurture - it's supposed to teach kids how to code, because software development is hard, and by learning this hard skill these kids will have a meaningful career. But in a world where software has zero value - literally zero, because in Pi world everything is free, and is supposed to be free, and any attempt to make stuff not be free will not get support - what value does that place on the people who develop software? Really, it is so mixed up it's fundamentally buggered.

Anyway, I have torn my hair out for 4 years now trying to find a way to get all this great work out there on the Pi - hard work that was in itself satisfyingly challenging, that has generated great results, and is capable of making amazing music. And all the while the modest target was to compensate myself no more generously than the voluntary minumum wage level. No traction, even at the pay grade of a Lidl shelf stacker. WTF?! The choices are give it away for free, and support it indefinitely into the future for free, or don't release it at all on the Pi. And I don't work for free, and have no intention of committing myself to multiple years of ongoing free support, with all the attendant hate mail and bollocks that comes with the militant freetard wing of the Pi community.

So you'll all have to stick with Sonic Pi - enjoy! 

Tuesday, 5 April 2016


The Synth Collection is going into deep hibernation as I focus on other stuff that requires focus. Like having a life, enjoying the nice weather, slowly updating iPad apps, volunteering for good causes. That sort of stuff.

But it finds itself in very good shape as it does so. New (ish) stuff is :

It now has MIDI filters. These are .so files that users write for themselves - coding!!! - and these filters extend the functionality of the sequencer part of the Synth Collection at run-time. They may be installed for the duration of a session or for just one song, or for just part of a performance. They work only on keyed / performed MIDI events (notes, twiddled controllers, bashed pads). Anything played as a result of having been programmed into the sequencer is executed as-is, with no filtering. The filters accept as input a single MIDI message, and output zero or more MIDI messages, and typically they input one, output one, selectively changing the contents of the message. Multiple - up to 8 at present - chained filters may be active at any one time. All the messages output by filter n will be processed as inputs by filter n+1. As a message exits the final filter in the chain it is passed through to the cluster of synths to be played or otherwise interpreted.

This is the first time 3rd party code has been able to run inside the synth / sequencer setup, and the purpose of this in my mind - others will I am sure find other and better uses - is live rig setup. For example, I have a Novation LaunchKey. Given to me by Novation, so thanks for that. It is in fact pretty brilliant, but it doesn't have a Program Change control. But it does have a pair of round buttons on the far right of the keyboard that generate a pair of MIDI CC events on controllers number 104 and 105 respectively, with the data parameter at 127 on pressing the button, and 0 when releasing the button. Perfect candidate for a MIDI filter then, where these specific events are intercepted and converted to MIDI Program Change events for that MIDI channel. And as a result of implementing the filters I have been able to remove all the Launchkey-specifics in the code base, and push all that into a plug-in filter or two.

Another use, which I totally love given my current fixation - Swell to Great. I'm going through a 'fascinated by church organs' phase, admiring pipes, looking lovingly at stops and pedals in churches, but didn't actually know what 'Swell to Great' meant or how it worked until last week, when a YouTube video showed me mechanical coupling of manuals for the first time. So now I have a '' filter that implements a Swell to Great lever, coupling and uncoupling NoteOn and NoteOff events from one channel to another according to the value of a CC, and dealing with all the corner cases around pulling or releasing the lever when notes are being played across the 2 manuals/MIDI channels. This one is wildly entertaining as twiddling the knob fast while bashing 2 keyboards can cause a veritable explosion of NoteOn and NoteOff events, a good testing corner case.

And filters will I am sure have many more uses that I just haven't thought of yet - many of them around the next feature, which is 'drawbar organs'. The wavetable synth can now be programmed as if it were a Hammond / drawbar organ. People get jumpy when you say 'Hammond' because no, it IS NOT a Hammond, it has no programmable keyclick, no paraphonic percussion, no Leslie emulation. But yet, it is a drawbar organ and to my ears it sounds pretty sweet, Hammond or not.

Anyway, in case you've forgotten, the wavetable synth lets you program a voice with 2 layers of 'wavetable trajectory', with up to 8 settings within each trajectory. The synth moves smoothly between these settings at a constant or 'tweaked constant' rate - time, time squared, sqrt(time) or exponential time / half-life - at independent rates per layer. Each setting along the trajectory is built from a linear blend of a pair of the built-in wavetables, so it all gets quite rich as notes evolve and morph during playback.

The new stuff is a 'drawbar' mode which lets a trajectory be made up of drawbar settings, programmed with 'Hammond strings'. So you can ask for "528370621", it will set up the location in the wavetable as if it were a Hammond with that drawbar setting. To add spice and more harmonic richness to it, table zero (the one programmed above with a '5', the 16' / sub-octave /  'Bourdon' drawbar) can be any wave from the inbuilt set of tables rather than a sine wave. Here is a preset using drawbars -

preset:1 organs {
layer:0 drawbar:4,117,808000000,123,880808000,122,002673540,121,888405088, EG:0.003,0.0,0.999,500.0,0.004,0.0 lambda:0.0 lin:2 LFOsense:0.0,0.2 level:1.0 feet:8
layer:1 drawbar:4,117,808000000,123,880808000,122,002673540,121,888405088, EG:0.003,0.0,0.999,500.0,0.004,0.0 lambda:0.0 lin:2 LFOsense:0.0,0.2 level:1.0 feet:8
poly:4 bend:12,2 LFO:0.2,tri MOD:7.0,tri Bdrift:0.05 cutoff:0.6 mixmode:cross

a) yikes b) notice that both layers have identical settings. This seems a bit wasteful, but it does let one detune layer B against layer A for a big rich phasey experience.

Having a drawbar organ sound evolving over time is a bit odd and not at all organy, so there is now a CC trajectory control. To get a believable drawbar organ tone you program in a trajectory that proceeds at zero speed, and the trajectory CC adds its value onto the trajectory parameter, giving you direct control of the trajectory parameter via a single knob to morph through up to 8 Hammond stop combinations. Couple that with MIDI filters and you are winning, you have an instant stage organ with fingertip control. How's that? Well, just intercept the Launchkey drum pads within a filter, and get them to push out 8 different trajectory CC settings instead of their built-in channel 10 NoteOn / NoteOff events. For just one song in a set you might need a Hammondish organ sound with a bunch of presets for first verse, first chorus, bridges, second chorus, giant mega finale - you can program up a single Hammond preset in the wavetable synth, and have the otherwise unused pads on your Launchkey be instant access stop settings for the organ. For the giant climactic stops you can also make the pads automatically ramp up the send amount into the Vibrato Chorus unit, and into the reverb, for genuine massive swelling organ magnificence. And if you program up 2 totally different layers, the LaunchKey has 16 buttons - you can set up 16 different stop settings picking from or blending between the 2 layers by setting the trajectory controller AND the layer mix controller according to a pressed pad. See what I mean about these filters being great? Really, this is too brilliant for words, plus it means I don't have to bust a gut adding features into the sequencer, I can let users do that. Big old win.

'Hang on there daddio, back up a minute - what Vibrato Chorus unit?' you may ask. I shall assume you did ask - so, whilst implementing Hammond mode, I decided an LFO modulated pitch wasn't Hammond enough. It sounded cute and poppy, but way too Vox Continental. So I read up on stuff and added a cute modulation effect as 'delay slot 4'. Now when you plumb a synth's output to a delay input, delay units 0 .. 3 operate as before, but the new delay 4 is a 'Hammond Vibrato Chorus', and it sounds pretty brilliant. It is a very short delay line, maximum length only about half a millisecond, with the amount of delay driven by an LFO. The LFO waveshape is a stepped triangle so it has big chunks of time when the delay is constant, and the delays - the flat bits - are chosen to align as closely as possible to the delays induced by a physical Hammond Vibrato Chorus unit.

Here's a very quick taste of the organness of it all -

And the final new thing that I can think of is envelope control - at least of wavetable and SR synths - from CCs. So you can wiggle knobs to change any parameter of the envelopes, but the Launchkey only has enough knobs for me to mess with attack and release, as I have already got mappings for pan, reverb send, delay send, layer B detune, A/B mix and trajectory. It makes an otherwise somewhat lifeless sample replay setting much more interesting, electronic and 'synthesised' to have artificial attack and release behaviours overlaid on the sample recording, particularly release - a choir of Caitlins with soft attack and extended piano-like decay tails suddenly sounds only sort of human.

So that's it - sounding awesome, and being put to bed.

Anyone who is a genuine, serious musical artist / performer / composer / busker / synthband who would like to use these synths and the accompanying sequencer to invest time in learning and actually make and play music, please do contact me. Ditto school music departments who are willing to put some effort into this. Note, this is primarily a music thing, as opposed to being primarily a computing / software thing. I suspect the right people for this are either music departments with access to coders or with coding-capable students, or departments looking to STEAM as the next big thing, with the art . performing art as the focus, not the tech / coding piece. This is totally not about teaching 8 year-olds to code, it's about using low-cost computers to make music via high quaity synthesis.

Be prepared to make a strong case for yourself - if I buy into it and believe in your commitment to using this, I may give you one (or 20/30 if you are a music department), and the support you need to make things happen with it. UK-based folks only, sorry to the rest of you.

Anyone who sounds remotely tyre-kicky won't get a response. If you don't get a response but you aren't a tyre kicker, please don't be offended, I am going to be VERY VERY selective about any partnering with artists.

Right, now to enjoy the sunshine for a few months.

Friday, 26 June 2015

Drop me a line if you are interested

Interested meaning, commercially interested -

a) interested in licensing 3 amazing-sounding, ultra-efficient soft synth engines, destruction tested on a Raspberry Pi model 1, or
b) interested in sponsoring 3 amazing-sounding, ultra-efficient synths to bring real music-making and real music education to every Raspberry Pi owner

If you're just

c) interested in getting a free collection of synths for your Raspberry Pi, drop me a line anyway, but do get somebody who is a) or b) to drop me a line as well, because 'getting a free collection of synths' will not happen without an a) or a b) in place

Otherwise, have a really great day and keep searching for kitten videos.