Topiary Beats 0.7.1

Release notes

This is a bug fix release. Following were fixed:

  • Crash of the host when closing in the case the plugin was generating MIDI output with the editor open.
  • Editing of preset name didn’t work.

For further comments see release notes for 0.7.0

Download link: https://github.com/tomto66/Topiary-Beatz/tree/master/Topiary%20Beatz/binaries

Topiary Beatz 0.7.0

Release notes

First beta release.  Functionality is limited compared to the manual:

  • The following tabs are missing: Variations, Patterns, Automation.
  • Variation switching automation is hardcoded to CC22 – CC29.
  • Variation 1 plays pattern 1, variation 2 plays pattern 2 and so forth.
  • Buttons for all variations are enabled; when playing an non-existing variation (even when there is no pattern) application will function correctly; it will simply not output any midi.
  • Midi output hardcoded to midi channel 10.

Platforms & versions

  • VST2 version tested and confirmed working on Windows 10, 64bit, with Cantabile3 64bit.

Download link

https://github.com/tomto66/Topiary-Beatz/tree/master/Topiary%20Beatz/binaries

An Itch to Scratch

Here’s the rationale behind this project to develop a suite of modular musical pattern generator plugins: I have a particular use case as a musician: I improvise.

More particularly, I am a Musical Director for improvised shows. That means I have no idea what I’m going to (have to) play before a show. What I do play can be broken down into 2 more use cases:

  • Underscoring. Most underscoring is just, erm, music I play. But sometimes I may need a whole orchestra. Suppose the players mount a pirate movie story (one never knows what they might come up with). Perhaps I’ll want orchestral drums behind that – think the score of Pirates of the Caribbean. And perhaps I will want the drums only at one point in time, but not the other. Or perhaps I want the drums at some point very present, but toned back when characters are talking. And I certainly do not know how many measures I need the drums for.
  • Singing. 2 issues here:
    • I do not have chord progressions set in stone. I need the liberty to fire off any chord progression, in any key, at any time. And there may or may not be key changes. Again, at any time.
    • Most music for singing is just using piano/keyboards. But sometimes I get pimped into particular styles. Say hip-hop, or hard rock. Those are impossible to pull off without something arranger-like, not just for drums, but also for bass lines, arpeggios etc. But in some cases I need to have (auto-generated) melodic lines. Solo’s I typically play live, but if one needs e.g. pitch bending for electric guitar, I simply do not have hands enough to also play e.g. strummed rhythm guitar under my solo.

I do this locally in the area where I live, but also at international improv festivals 2-3 times a year.

I obviously need a solution that:

  • Has lots of sounds
  • Is practical to use on a stage, and easy enough to navigate fast, as I have to make decisions on the spot. I do not have the time to delve into several layers of menus to find the sound or preset that I need. I certainly cannot use a screen/mouse to switch on/off sounds, drums, loops etc.
  • It has to be fast. I cannot wait 5 seconds for e.g. a sound library to load.
  • It has to be portable.

First Solution

I have been using a Korg Kronos for the last 5 years, and it fits my needs really well.

kronos

Korg Kronos X

  • Lots of excellent sounds
  • It has Karma – a kind of musical pattern generator on steroids. It’s not an arranger, but it can be used in arranger-type of ways.
  • It has lots of knobs, sliders and buttons that allow me to tweak what is playing, live and on the fly.
  • Once booted, it’s very fast
  • It’s an all-in-one package. No hassle dragging a laptop, sound card etc around.

Future solution?

The Kronos does have a few drawbacks:

  • It’s very heavy. I have (and need) the 88 key version, which weighs 35 kilos (70 pounds) flight case included. Though it meets my other needs, it is not portable enough.
  • E.g. I needed it for an international festival in Sweden in March this year, and it was next to impossible to get it there; it’s too have to take along on a flight and needs to be shipped as cargo – which means delivery might take a couple of days – which I do not have, as it so happened that at this festival I was playing Wednesday to Saturday night (in Sweden) and then back home on Sunday night – there was no way I could get the Kronos back home on Sunday.
  • Even if the logistics of international keyboard transportation were to work out, it’s horribly expensive.
  • The good thing about Karma is that it is not an arranger. It’s loads more flexible than an arranger. But there are 2 drawbacks:
    • Karma is a very deep and complex beast. I get by with Karma, but it was a steep learning curve to get the basics done, and I have barely scratched the real power of the thing. There are several things I simply have not (cannot ?) figured out how to get done with karma exactly the way I want it. But what I do get out of karma is good enough.
    • The good think (it’s not an arranger) is also a drawback: it’s not an arranger and sometimes I just want arranger-like functionality. Arm-wrestling Karma to behave like and arranger when I want/need it is a hassle. I simply sometimes have use cases for which Karma is just not designed.
  • And finally, my Kronos is going to reach end-of-life.

So after the Sweden festival it was time (mid 2018) to think about a new setup. I decided to go the soft synth route and got a fast laptop and invested in some great-sounding VSTs. And decided to use Cantabile as a VST host. Cantabile is terrific!!!

I got an Arturia Keylab–88 keyboard, which has decent piano-action keys, and lots of knobs and sliders to tweak live performance. Cantabile allows me to may any control on the Arturia to anything I want. I love the combination.

keylab88

Arturia Keylab-88

 

But even though the Keylab88 is a lot more portable than the Kronos, It’s still to bulky to take with me on a plane. When I play internationally I need to rely on a locally available keyboard and I never know what I will get. Assuming that keyboard is going to have the real time control that I need is out of the question (and even if the keyboard on hand were to have real time controls, I would need to program the bindings for that keyboard into Cantabile – which I won’t have the time for. I might be arriving in a foreign city at 5pm to be on stage by 8pm.

To solve that problem I also got a smaller keyboard – an Arturia minilab. It doesn’t have all the bells & whistles its bigger brother has, but it gets the job done (I actually use the keys on the Minilab as buttons – the minilab has pads and knobs, but not buttons)).

minilab

Arturia Minilab

I did my first international show with that setup, taking the Minilab along, last June in Finland. Packing keyboard, laptop and a sound card in a backpack was not hassle. It went very well.

Of course there was no way I could have ported my whole Kronos setup to the Cantabile/VST setup in just 2 months. I got enough done to get by (and thanks to Cantabile I even gained some functionality I did not have on the Kronos). The minimum I needed was the ability to fire up drum patterns, and I got Geist2 for that.

However …. After 6 months of trial & error I simply cannot find anything like Karma, or arranger software, that fits my needs to port everything I setup on the Kronos to Cantabile.

First off I have issues with Geist:

  • Geist does the job for drum patterns. It’s a wonderful tool, but it’s very buggy (though admittedly it has never crashed on me during performance – it’s just buggy as hell when you’re tweaking setups. Also, Geist2 seems to be end of life – even though there are 100s of bug reports, there have not been bug fixes for ages.
  • Geist2 can do melodic stuff with audio loops (and it’s amazing at that). But those are canned loops, which works great for electronic music, but not for my needs, where I may want to change keys, tempo or even signature on the fly.

So I looked at other things, including arranger plugs. Let’s deal with those first. There are things like Varranger, which would suit my arranger-like needs. The problem with software like Varranger is that it does not run as a plugin. To make it work I would need to setup virtual Midi channels between Cantabile and Varranger. And I would still have to tweak – live and on the fly – things in both Cantabile AND Varranger, and that is just not practical given the time constraints I have live. I just can’t afford having to switch between 2 programs live.

Secondly, something like Varranger might meet my (limited) arranger-like needs, but then I’m still stuck for karma-like musical pattern generation that is not-arranger-like.

Several other plugins seemed interesting. Thinks like Nora (an arpeggiation on steroids) or Ctulhu. All of these meet some of my needs to some extent, but none meet my needs perfectly even for given use cases. And certainly none of these perfectly meet all my needs.

DIY?

So late Summer 2018 I started considering developing what I need myself.

Kontakt Scripting?

I first considered using the Kontakt scripting language. But what I have in mind will be a pretty complex beast to program, and the Kontakt development environment seems to primitive for that (to my liking – I know some pretty complex stuff has been developed in Kontakt – respect!). Furthermore, the way Kontakt scripting deals with midi is different on a voice level (a sample library) than on a rack level (a cluster of different voices on different midi channel). Since some of my use cases involve generating stuff on more than one midi channel, I disliked the Kontakt approach. And finally, some of the stuff I generate will need to drive non-Kontakt plugins (other soft synths, effects you name it). That’s probably doable in Kontakt scripting, but not evident.

Juce!

So next I started looking for and IDE suited for plugin development. I took a look at Juce, which is open source and seemed to meet my needs. And thought long and hard about whether I really want to devote the time and energy to such a project. And decided to take the plunge.

First plugin released: Topiary Beatz 0.7

So here it is: a first release of a first plugin, which will be part of a series of “modular real-time musical pattern generator plugins”. The suite is called Topiary, and the first plugin is Topiary Beatz. Current release is 0.7.0 and it has limited functionality, but it works.  And for a list of other modules I have in mind for the whole suite see the Topiary Roadmap page.

Since my needs are niche, I will probably not be able to sell this in decent volume. I might be able to get some sales, but the flipside of that is that I would need to provide some sort of tech support. The cost of that would almost certainly not be covered by sales revenue. Also, if I use Juce commercially, there are license fees to add to the equation. So I am releasing this as open source. That basically means it’s free but without any guarantees. Full details on the License & Conditions page.

I hope the Topiary suite will be useful, if you use it please share your experiences. If you are a developer and want to contribute to Topiary, either by implementing functionality, of by testing on hosts/platforms I don’t have access to, please get in touch!