Feeds:
Posts
Comments

Posts Tagged ‘synthesizers’

I was in my local friendly music shop asking about other things and, for one reason or another, ended up playing with the Roland BOSS SY-300 Guitar Synth pedal. The guy in the shop was enthusing about how well it tracked guitars – including slides and vibrato and my  next thought was “yeah yeah, but how well would it work on a violin?” In my experience tracking a violin pitch is very very hard. I’ve seen nothing that would do it reliably in either hardware or software, and it’s something I’ve been looking for for a long time now.

To cut a long story short .. IT WORKS! it even tracks the octave violin (which is tuned an octave below a normal violin so, on a 5 string instrument, makes it go down to the bottom C string of a cello). I stayed in the shop for a couple of hours playing with my violins on the device and was simply astonished about how well it worked. It is possible to confuse it, either with bad technique or pulling too hard on the low octave C string, but those are hardly major problems for normal use. And by bad technique I don’t mean tuning – if you play out of tune, the SY-300 will simply play the pitch you hit, I mean not placing your finger cleanly on the string which makes a dull grinding note on the violin anyway. If you slide all the way down a string – the SY-300 will follow you, if you use wide or narrow vibrato – the SY-300 will follow you. If you play loud to soft to loud in a single bow stroke – the SY-300 will follow you.

Amazing.

The guy in the shop thought it worked even better with violin that guitar because of the expressive effect of the bow on amplitude, and the ability to play long notes easily, it turns the SY-300 into a very expressive synth. It’s interesting to note that playing a synth via a violin (or guitar for that matter) doesn’t sound like playing a synth from a keyboard, it transfers the intrinsic ‘feel’ of the instrument onto the sounds made by the synthesizer – so in no way is it a replacement for a keyboard synth, it’s something totally different.

You need good synthesis knowledge to get the most out of the pedal, a lot of the factory presets are very guitar-orientated, made for a plucked instrument and often with lots of distortions added, so to get the best from a violin you need to get in there and make your own patches. As a violinist who also plays synthesizers this is easy enough for me, but people less familiar with subtractive synthesis might find it hard work to get what they want from it. This really is an expert’s device/

The architecture is slightly odd. It has 3 oscillators (with the standard virtual-analogue waveforms) each with its own filter, LFO and sequencer. Yes, the LFOs, filters and sequencers are per-oscillator! There are also 3 global LFOs (called Waves) that can be applied to the built in effects as well as the oscillator parameters. There are 4 effects slots which can be placed almost anywhere you like on one of two synth busses or the dry channel, and are of very good quality – as you would expect from a BOSS device. There is a good range of the usual effects, delays, reverbs, phasers, flangers & distortions – all with a good range of options. And also there are combined effects (delay+reverb for example) so you can make full use of those four slots. Most of the parameters of the effects can be controlled from the Wave LFOs. Although the way you configure those is rather clunky.

There are a few downsides. While it has MIDI in & out sockets (including USB) it does not send or receive MIDI notes, only control change and program change. I would also have liked more waveforms than just the standard saw,triangle, sine, square and maybe some interaction between the waveforms (eg FM). Also the software editor doesn’t work on Mac OS/X Sierra. Even the driver (which is supposed to work) crashed my system … and WHY OH WHY do MIDI devices need drivers anyway when they should just be class-compliant?! sigh.

But generally I think it’s an amazing device and if you’re a violin player who’s also into synthesis I strongly recommend you have a look at it.

I made a video about it with more information and examples

Advertisements

Read Full Post »

I was playing with the wonderful KMI QuNeo controller the other day and started experimenting with bending synth notes and/or filters using the pressure and X/Y positions on the pads – I’m a violinist, it’s what we do! This works really well for single notes but because things like bends and filter positions are a single CC sent to affect all of the notes played on a synth it’s much less useful when playing more than one note. Worse: if you move one finger then another, the CC value jumps between the two positions giving you a very glitchy sound. Some might like this effect but it’s not what I’m going for.

So, remembering that MIDI has an ‘aftertouch’ option I started looking into that. I didn’t really have a clear idea what aftertouch was, I’d played a StudioLogic Sledge2 synth in a shop and felt the extra travel on the keyboard and thought that seemed to be what I needed. However it turns out that there are TWO types of aftertouch.

‘Channel pressure (aftertouch)’ is pretty much just another modwheel-type controller – but usually controlled from the keys themselves which does make it handier than a modwheel when performing. It affects the whole synth though and therefore suffers from the same problem as a modwheel or global CC. This is the what most manufacturers seem to mean when they ‘support aftertouch’ I found out – including the Sledge. ‘Polyphonic Pressure (aftertouch)’ is the thing I wanted – and it’s much harder to find, in both synths and keyboards. The only synth I have that supports it is the Waldorf Blofeld (ah Blofeld, how do I love thee, let me count the ways). To test this I wrote a small Max patch that added Poly Pressure messages to the last note played on the keyboard, and controlled it from an on-screen slider (see video below). Using this I could bend one note in a chord while the other stayed the same. Yes!

The problem now was that the QuNeo, while being a very flexible controller, is actually very limited in what MIDI messages it will send. Basically it only sends note and CC messages – and they have to be on the same channel for each pad. Contrast this with the SoftStep2 (my first KMI purchase) that will send almost anything. Luckily I’m a programmer and have been working with my Raspberry Pi system for a while now so I wrote some code that converts the CC numbers sent by the QuNeo to PolyPressure messages.

The way this works is that all of the pads send notes when pressed and send the same CC number with pressure information, all on MIDI channel 10 (eg I press pad 4, it sends note on for MIDI note 44, and continuously sends CC 44 with the value of my finger pressure). The Raspberry Pi code then intercepts any channel 10 messages, converts any notes back to channel 1, and converts all CCs to channel 1 Poly Pressure messages. The sliders and knobs still send their existing CCs on channel 1 so that they can still do the normal global synth control things such as filter and volume changes.

I don’t know why Poly Pressure is so underutilised, I really like the results I can get with this system and really wish there were more polyphonic controls available, but I intend to make best use of the one I have, even if it’s only on one synth. It would also be nice if more synths supported it. I know some old synths from Ensoniq and Roland do but I don’t ‘do’ vintage synths – for reasons of my own.

Not even any softsynths (that I can find, though as I’m not a fan of them I didn’t look very hard) seem to do this which is bizarre given that it’s a logical place for that sort of code to reside. The fact that Ableton seems to actively remove poly pressure messages from the MIDI stream probably isn’t helping this *sad face*.

I suspect it might be catch-22. Few synths support polypressure because hardly any keyboards do, and hardly any keyboards do because few synths do. While researching this I did find a keyboard that supports Poly Pressure (supposedly) and have ordered it off eBay – because it’s discontinued. When it arrives (and if it does what I hope) I’ll update this blog post with the results.

Maybe I should save up for a Roli Seaboard  (eek!)

Here’s a video I made showing my experiments. In the first part you can see the filter setting jumping around. In the second I made a Max patch that was a proof-of-concept – mainly to make sure that the Blofeld did what I hoped it was going to do (note there’s a bug in that patch the doesn’t take into account NOTE OFF messages). Lastly there’s the QuNeo running via my Raspberry Pi system that converts CCs to PolyPressure messages.

Read Full Post »

NOTE: This post is obsolete – Roland have released a firmware update for the JU-06 (and the other Boutique synths) that allows them to send and received MIDI CCs for their various functions, and these are also documented. See here for details.

 

I ‘accidentally’ bought one of the Roland ‘Boutique’ synths last week – the JU-06 one. It’s a nice instrument with a simple front panel and a good sound. It has a few annoying limitations, only 4 voice polyphony and the small stereo output jack but generally I rather like it.

One of the things I immediately noticed was missing, slightly unusual in a digital synth, was any obvious (or, at least, documented) way to control it remotely – either from a DAW or control surface. Moving the controls sent no MIDI CC values and no CC value I sent to the device made any difference apart from the usual documented ones of mod wheel and sustain pedal. Slightly disappointed, I left it at that for a few days.

Then, yesterday, Rob Schroeder on the Synthesizer Freaks Facebook group posted a (very) rough outline of what the SYSEX format was for the boutique range of synths and I started playing. Initially I could get nothing from that either but a bit more research revealed that the synth only sends those SYSEX messages when chained to another similar device for extra polyphony. It also only sends these messages down the 5 pin DIN MIDI socket – not the USB – but that gave me enough information to work on.

I plugged in a MIDI interface, enabled chaining and started moving sliders and pressing buttons. BINGO – numbers started appearing on the computer screen I was monitoring it from! I now had (nearly) all of the information I needed. The last bit of information to get was the checksum. This was very easy to establish as it’s a standard calculation based on the contents of the whole message (except for the header F0 and trailing F7 bytes).

So, here they are. I only have the JU-06 but I’m pretty sure that the other 2 synths in the Boutique range behave similarly and will be as easy to reverse-engineer. Although the synth only sends these sysexes over the 5 pin socket, it’s happy to receive them over the USB link, which makes it more useful.

The SYSEX message looks like this (all values are in hex)

F0
41 (Roland SYSEX number)
10 (device ID)
00 (modelID)
00
00
1D (Product code for the JU-06 )
12
03
00
address MSB
address LSB
value MSB
value LSB
checksum
F7

For sliders, the value is an 8 bit number (0-255) split into two, so the bottom 4 bits are sent in the LSB and the top 4 bits in the (bottom half of the) MSB. For switches the values are 1 or 0 as shown.

Addresses for the functions are as follows:

LFO Rate:       0600
LFO Delay Time: 0602
DCO Range:      0700 (values 0,1,2)
DCO LFO:        0702
DCO PWM:        0704
DCO LFO/Man:    0706 (values: Man:0 LFO:1)
DCO Sub:        070C
DCO noise:      070E
DCO Wave: PW:   0708   (values 0 1)
DCO Wave: Saw:  070A      “   “
HPF Freq:       0800
VCF Freq:       0802
VCF Res:        0804
VCF Env invert: 0806 (values 0 1)
VCF Env:        0808
VCF LFO:        080A
VCF KYBD:       080C
VCA Mode:       0900 (0=gate, 1=env)
VCA Level:      0902
Env A:          0A00
Env D:          0A02
Env S:          0A04
Env R:          0A06
Chorus:         1000 (off=0, A=1, B=2, both=3)
Delay level:    1002 (values 0->0xF)
Delay time:     1004   “ “     “ ”
Delay FB:       1006   “ “     “ "
Bend Range:     1108

The checksum calculation is expressed simply in C as follows

static unsigned char roland_cksum(unsigned char *data, int len)
{
        int i;
        unsigned int cksum = 0;

        for (i=0; i<len; i++) {
                cksum += data[i] & 0xFF;
        }
        cksum = (0x100 - cksum) & 0x7F;

        return cksum;
}

for Max users, here’s an sxformat string you can use. It takes 4 inputs (sorry for the line break):

sxformat 240 65 16 0 0 0 29 18 3 0 / is $i1 / is $i2 / is $i3 
         / is $i4 / is checksum(1,13,2) & 127 / 247

So now I can control the synth from my Quneo controller along with other synths or even from the large MIDI keyboard using some custom software I’ve written for my host Raspberry Pi system. One of the especially nice things about this is being easily able to change the delay times – which is quite fiddly on the synth itself 🙂

 

Read Full Post »

After playing with Arduino microcontrollers I suppose it was inevitable that I turned to it’s larger brother the Raspberry Pi. The Raspberry Pi is more of a conventional computer but in a small form factor – in a box about the same size as the Arduino in fact.

This project was initiated by a thought I had when doing the large synth gig in Catford last month. In that gig I was using the laptop to drive one soft-synth, but without that it was really just there being a mixer – audio and MIDI – so I wondered if it was possible to do without the laptop at all. I have a hardware mixer so that can mix the audio output of the synths, but my large keyboard only has a USB socket for its MIDI output and power, and not a 5 pin DIN socket. So I thought of using a small computer to all the MIDI routing – automatically.

This turned out to be relatively easy for me, as an experienced C programmer. I got a Raspberry Pi starter kit, investigated the Linux ALSA (sound and MIDI) library calls and quite quickly wrote a small program that would route keyboard presses from a USB/MIDI keyboard to an attached synth. I also added a feature to send messages on MIDI channel 16 to a ‘Bass Synth’ (the Little Phatty or Minitaur) and also to forward any MIDI sync messages to all of the synths attached on the USB so that when Stuart has his Beatstep running in full Tangerine Dream mode all of the synths can run together.

Another feature is for it to behave as a TouchOSC->MIDI Bridge so that I can use the tablet to control the Blofeld as I did in this post. Some more work is need here to set the Raspberry Pi to run on a wireless network without a router as would be the case in a gig situation but that is in hand. I also intend to add a simple arpeggiator to the bass synth driver code.

So now I have a box smaller than many effects pedals that can do most of the work of a laptop at a synth gig. I plan to road-test this at a CSMA gig in Leeds in August.

Read Full Post »