Awesome vocal synth under work
by Marc Nostromo
no anti-alias suit required
by Marc Nostromo
by Marc Nostromo
After a few experience with the Arduino, I’ve always been looking out for other small devices that would be more powerful and allow me to do custom sound code. The idea was to have simple board I could just connect to a usb midi device, boot and have a ‘hardware’ digital synth ready -Pretty much the same experience as the DMS-20, except smaller and more handy.
As such, the beagleboard has always been very tempting to try but it’s only since Chris Randall’s recent post about the beepcat project that I thought it was time to dive in.
It’s been a few years probably that I had been extracting code from LittleGPTracker in order to build a cross platform synth architecture.
First I just wanted to be able to do small experiments on simple audio building blocks that could spawn into synth parts or other audio goodies but with time, it’s finally evolved into a modular framework where modules can be defined and connected together in various ways.
For example, here’s the code that builds a synth made of two detuned oscillators, fed to a mixer, a filter and an envelope:
MGEPiggyOsc *piggyOsc1=new MGEPiggyOsc(“oscillator”) ;
Insert(piggyOsc1) ;MGEPiggyOsc *piggyOsc2=new MGEPiggyOsc(“suboscillator”) ;
piggyOsc2->Detune(-24) ;
Insert(piggyOsc2) ;MGEPiggyFilter *filter = new MGEPiggyFilter(“filter”) ;
Insert(filter);MGEMixer *mixer=new MGEMixer(“mixer”,2) ;
Insert(mixer) ;envelope_ = new MGEAREnvelope(“envelope”) ;
Insert(envelope_) ;// Init graph
MGraph::Init(params) ;// Handle graph connections
this->Connect(*mixer->GetInPin(0),*piggyOsc1->GetOutPin()) ;
this->Connect(*mixer->GetInPin(1),*piggyOsc2->GetOutPin()) ;
this->Connect(*filter->GetInPin(),*mixer->GetOutPin()) ;
this->Connect(*envelope_->GetInPin(),*filter->GetOutPin()) ;
SetOutputPin(*envelope_->GetOutPin()) ;
// Hardwired parameter initialisation
mixer->SetParameterValue(“gain1″,0.5f) ;
mixer->SetParameterValue(“gain2″,0.5f) ;
mixer->SetParameterValue(“master”,1.0f) ; piggyOsc1->SetParameterValue(“shape”,0.2f) ;
Of course, this was a prime candidate to be run in the Beagleboard so I dove in, bought one and started the quest of porting the framework to it’s architecture.
It ended up being not too much hassle. Beside the usual setup problems, toolchain woes, cross-compiling issues and library madness it took me only about a few hours (spread over 2 weeks) to get it all running. And yes, it works:
No need to say,I do still have a few issues to fix to get it to works smoothly: For some reason gnome starts pulse audio that prevents me to access ALSA so I have to kill it manually and the MIDI library I’m using relies on alsa_seq which isn’t present under angstrom so I have to find another way to do the connection (/dev/midiX is pumping midi so should be pretty simple) but all in all it’s an excellent startup.
The performances are not too bad either. The process runs at 10% of cpu in idle mode and seems to consume between 3 and 5% of cpu with the two-osc/filter/envelope setup providing for the possibility of 15 voices for a very simple synth. NOT BAD AT ALL !
I haven’t looked yet a the minimum latency I could get out of it in its current form but I’m already very excited about what this will bring.
More to come, certainly !
by Marc Nostromo
After recompiling the proper ALSA module through the caanoo kernel, it seems finally midi interfaces show up:
Plugging a NanoKontrol
root@wiz:/mnt/sd/ko_s# dmesg
usb 1-1: new full speed USB device using UBI9032 Test HCD and address 2
usb 1-1: configuration #1 chosen from 1 choice
MIDIStreaming version 01.00
EP 82: 1 jack(s)
EP 02: 1 jack(s)
created 1 output and 1 input portsroot@wiz:/mnt/sd/ko_s# cat /proc/asound/*
0 [nanoKONTROL ]: USB-Audio – nanoKONTROL
KORG INC. nanoKONTROL at usb-ubisys-usb-1, full speed
0: [ 0] : control
1: : sequencer
8: [ 0- 0]: raw midi
33: : timer 0 snd_usb_audio
G0: system timer : 10000.000us (10000000 ticks)
Advanced Linux Sound Architecture Driver Version 1.0.15 (Tue Nov 20 19:16:42 2007 UTC).
Nice !
by Marc Nostromo
usb 1-1: new full speed USB device using UBI9032 Test HCD and address 3
usb 1-1: configuration #1 chosen from 1 choice
input,hidraw0: USB HID v1.00 Device [C-Media USB Audio Device ] on usb-ubisys-usb-1root@wiz:/mnt/sd/ko_s# more /proc/asound/*
0 [default ]: USB-Audio – C-Media USB Audio Device
C-Media USB Audio Device at usb-ubisys-usb-1, full speed
0: [ 0] : control
16: [ 0- 0]: digital audio playback
24: [ 0- 0]: digital audio capture
33: : timer
0 snd_usb_audio
00-00: USB Audio : USB Audio : playback 1 : capture 1
G0: system timer : 10000.000us (10000000 ticks)
P0-0-0: PCM playback 0-0-0 : SLAVE
P0-0-1: PCM capture 0-0-1 : SLAVE
Advanced Linux Sound Architecture Driver Version 1.0.15 (Tue Nov 20 19:16:42 2007 UTC).root@wiz:/mnt/sd/ko_s#
by Marc Nostromo
Having to do a remix where the original track has been recorded live with no sort of click track, I’ve been doing a bit of research on how to do warping across multiple stems in ableton live.
Yesterday I had found this pretty good video summarizing what I knew about selecting multi tracks and applying warp points on all of them at the same time. I was already happy but I had a feeling there had to be a way to first concentrate only on the drum track, do all of the warps and then “‘apply them” to the other stems. It took me a bit of time to understand how but this great summary (points 1-7) made it all obvious.
The beginning is simple:
1- Find a rough tempo of the original song
2- Import the drum track with warp off
3- turn warp on
4- Tune the warp locations to sync your drum track
Here you got your drum track running nicely alongside the song’s metronome… all we need to do is to apply the same warping points to all of the other stems. To do so:
5 Make a copy of the drum track
6 Select the clip containing the copy
7 Drap a new stem into the clip display at the bottom

Bingo, it changed the wave file but none of the warp settings leaving you with a perfectly sync’ed stem ! Repeat.
by Marc Nostromo
Since I’ve finally been able to spend some time with the Midivox (and actually make it work), I’ve started to update Colin’s HealerSynth code (originally based on my own Squealer code for the arduino piano) and tweak it to my own purpose.
The first thing I’ve done is to restore my own set of waveforms. They might be a little more ‘odd’ than Colin’s original choice but some of them deliver troumendous digital harshness, just the way I like it.
Being able to control & sequence via MIDI the piggy-derived oscillators is a brand new world for me and it certainly gives me the kick I was expected out of it.
Here’s a little demo loop after 15 minutes of fiddling with Ableton.
by Marc Nostromo
by Marc Nostromo
I’ve started collecting small stuff I like or feel worthy of being remembered over at tumbl. No specific topic .
While I haven’t been really posting, I’ll keep this place for in depth article and tumblr as notepad/bookmarks.
See you there
by Marc Nostromo
Following Paul Maddox’s blog, and it’s progress on Zira, I’ve discovered there’s a new community web site dedicated to synth lover that opened recently.
Synth.net is not yet populated but might become an awesome resource on synthesis and some awesome personal project.
In itself the web site is highly effective and has a LOT of features, including forums, facebook-type member chat, picture album, sound albums, and so on.
If you’re anything like a synth lover… got an register !
by Marc Nostromo
Probably the best thing that ever happen to me through my multiple visit to the frankfurt musicmesse was to have the hability to see Robert Henke (aka monolake) doing a gig at the Ableton party. At some point, I had the chance to sneak in behind the stage (before getting kicked out about half an hour after) to examine his setup and that was inspiring.

His back-end was, to no suprise, ableton live but what made him different from the countless other ableton-based gigs was that his monitor was actually turned OFF.
Controlling everything from his custom-made monodeck II, he had enough vision and control on his set that he didn’t need any visual cue from the program: everything was light and knobs, and he looked more like a crazy star-trek music freak than the usual numb face staring at a blue sickening light while fondeling their precious mac’s trackpad. WINZ.
Since I saw him, I’ve been wanting to reproduce this scheme for my own gig. At the time ableton controllers like the APC and the Lauchpad didn’t exist and I couldn’t really build a monodeck myself, but as soon as these came out, I had set my sail on doing the same thing.
A few years later -i.e. now- I had collected what I needed to start doing it: an eeepc strong enough to run my set with Live 8, a novation launchpad and a korg nanokontrol.
If you are familiar with the launchpad and apc (and if you read this my guess is that you are), it’s fairely easy to guess how the setup would work but to completely achieve “laptop blindness”, I was missing one major thing: clip position feedback.
I’ve explained already before how I organized my sets. Since I work with pretty structured song based tracks, I chop them in sections in the session view and play them roughly in order with the abilty however to loop section and re-organise the track’s structure to some extend. One “drawback” of this method is that I end up with clips of very different lenght because they reflect sections in the song. Some might be 1 bar, others might for as long as 48 and when performing, it’s important to know whenever a section is going to finish because you might want to add some tension or put on some effects to engage the transision to the next one.
As beautiful as they are to navigate your section, none of the controller let you see that kind of thing and I needed it to go completely blind.
I’ve thinkered for a long time about the approach to do this.. including hooking into python scripting but one day I saw this small demo vid about the launchpad where the guy had a small metronome-like function by simply creating a midi clip that would send midi to the lauchpad to create an animation and there was my solution: All I needed is to create a base clip running an animation showing me the clip’s position (I went for the 16 last bars which is plenty enough) and adapt the base clip for the various lengths of my clip so it would always be in sync with the track.
Here’s what it looks like for a 24 measure clip:
The notes at measure one turn all the indicators off. Then starting at 16 bars before the end, I’ve got a first animation that is simply a green led moving from left to right over 8 measure and for the last part, the animation speeds up to indicate then end is near.
All that is needed from there on is to create a midi ‘animation’ clip with the right length next to every section of the songs. It sounds a bit like a drag but since sections are often of same sizes, it’s often just a matter of copy/paste:
To display the animation, I chose to use the last line of 8 leds on my launchpad. I’m loosing a row in my session view but it’s no biggie for what I do. The ableton mapping system is extremely clever: if you map manually the controller buttons to something, it will automatically disengage the original function and the visual feedback. So in order to have the animation not colliding with the session display, all you need to do is to map the bottom row buttons to anything (possibly nothing that would make your set go bonkers obviously
and you will have that row to play with without any interference to the session view.
Here’s a small video of what it gives. First clip is 16 bar, second is 8, third one is 24.