This section describes a possible Hydrogen live setup that allows you to trigger loops and sound by using a midi controller.
1. Live usage
1.1 Basic hardware and software config
For this setup i'm assuming you have Jack configured and running correctly.
I play guitar and sing in a typical rock/pop band. Recently we also wanted to cover an 'electro-pop' song that contains some samples and a continuously looping beat, but since there is no keyboardist in the band (and these guys typically take care of all sample-related stuff because they have the equipment for it) i had to think of something else to generate the beats.
This is what the basic setup should look like :
The first choice i had to make was easy : laptop+software versus standalone sampler/sequencer. I own a laptop, i don't own a standalone sequencer.
I am a Ubuntu user, so i limited my search scope to linux software : I started experimenting with LMMS, and it has some great features (good MIDI support, softsynths ...), but it is somewhat overkill for the setup i had in mind. Also the interface can get cluttered quickly and this is not a good thing for live usage (see below)
Hydrogen seemed to be the perfect fit for my project : solid, intuitive, and ... great looking ;-)
Trigger hardware :
Hydrogen can generate sounds (loops and one-shot samples), but you need a way to tell Hydrogen to start and stop your loops/samples. Since loops and samples are mainly rhythm related, our drummer got the glorious task of controlling Hydrogen via midi drum pads.
For the midi drum pads we hade some requirements :
- cheap : As always the budget was limited
- compact : if you play live chances are you will be playing in a crowded bar on a way to small stage (if any)
- quick setup : less cables, less stress
- reliable : failing equipment in the middle of a gig is _not_ nice
The first thing that came to mind was the famous Roland Octapad. This device is compact and fail-safe but it costs around 700$. Luckily there are also more affordable alternatives available like the Alesis controlpad.
In the end, however, the drummer opted for the Alesis DM5. This is a full blown electronic drumkit including stands, pads, cables and the midi sound processor
the pros :
- good price (approx 500Eur)
- reliable : this is a rather old kit and there are not many complaints to be found about it
- very versatile : you can setup the pads wherever you want (next to another musician if needed)
- can be used as a standalone drum (great for rehearsals @home) > this was the main reason for choosing the DM5
the cons :
- not as compact as an octapad, and this can be a pain on a small stage
- lots of cables connecting the pads to the controller (boo cables!)
MIDI <> USB :
Most recent controllers have an internal MIDI<>USB converter that allows you to connect the controller directly to your PC via USB. Chances are that Linux will not recognize your controller correctly, so make sure to google around to see if it is supported.
The DM5 doesn't even have a USB port, so we had to get a MIDI-USB convertor (something like this) for about 10Eur or so. After plugging the convertor into the pc i had a MIDI in/out port available in the ALSA Jack tab (not under MIDI). 0-config, just the way i like it !
So far the setup looks like this :
Now that most of the hardware is in place let's try to get everything configured. The goal is simple : i hit the pad, the laptop makes the sound ;-)
For the rest of this document i'm assuming that
- you have your Audio routings (in Jack) configured : Hydrogen's main audio OUT > system audio out.
- your MIDI routings configured : MIDI out of you controller > MIDI in of Hydrogen
- your DM5 hooked up with your pc and at least 4 pads connected to it
One-shot : drumkit preparation
Using the MIDI controller to trigger a one-shot sample is straight forward since this is in essence what the MIDI controller was designed for. At this point you will need to decide what drumkit you want to use for your song (the loop) because we will have to add your one-shot sample to this kit.
- open your drum kit of choice
- save it under a different name
- create a new instrument in your drumkit
- add your sample to this new instrument
(all of the above steps are described in detail in the hydrogen manual)
Now you should have a new drumkit that contains all instruments of your favorite drumkit (that we will use later on for the loop) + 1 extra instrument that contains your own one-shot sample.
Add more instruments if you need more than 1 one-shot sample.
NOTE : with the built-in SampleEditor it is very easy to tweak your sample in/out points, so there is no real need to finetune your sample in an external application. (SampleEditor is only available in version 0.9.5 and up and can be accessed by clicking the Edit Layer button on the Instrument - Layers tab)
One-shot : defining MIDI trigger
The one-shot(s) has been added to the kit, so now we need to define what drumpad should trigger it. In other words we need to configure the MIDI mapping. (the midi note mapping defines the link between each instrument in your drum kit, and the MIDI drum pad of the DM5)
Although this is slightly off-topic i would like to go into a bit more detail about MIDI mapping since it can be quite confusing :
Changing the MIDI mapping is real easy, but at the same time quite tricky : you can drag-n-drop your newly added sample (instrument) up/down in the drumkit's instrument list. Every 'position' in the drumkit is linked to a MIDI key so it's just a matter of finding the right 'position' in the kit. The link between MIDI note and instrument 'position' is listed here :
- Instrument 1 = MIDI note 36
- instrument 2 = MIDI note 37
The easy way to configure your mapping : hit the pad you want to use to trigger your one-shot. This should trigger one of the instruments of your drumkit (snare, kick ...). Now drag-n-drop your one-shot on top of the instrument that was just triggered. This will shift all the below instruments down 1 place, making room for the one-shot. If you hit the same drumpad again it should now trigger your one-shot.
NOTE 1 : all instruments that 'shift down' when you position your one-shot somewhere in between will also be linked to the next midi key !!! > this can mess up your complete setup, so be careful with it !
NOTE 2 : moving an instrument has NO impact on the loops that you have created in Hydrogen, it does however have an impact on any device that controlls Hydrogen via midi, like a MIDI controller or external sequencer (see note 1). For our usecase this is not important since we only use the midi-controller to trigger Hydrogen.
NOTE 3 : midi note mapping is a setting that is saved per song , so you will have to do this for each song. Songs you have created previously will not be affected.
let's see what our setup looks like in this stage :
You should now be at the point where hitting one of the 'TRIG' pads triggers one of your one-shot samples :-) Hurray !!? ... wel not quite :-\
One-shots : tweaking midi settings
Depending on the type of midi trigger hardware you are using, the behavior can be different : a typical midi drum (like our DM5) will send the midi note that is assigned to a pad to Hydrogen when you hit that pad. When you use a midi keyboard however, it will not only send a midi note each time you press a key, but it will also send a midi note-off message when you release the key. This note-off will mute your one-shot sample as soon as you release the key. You can fix this by ticking the 'Ignore note off' box (under Tools - Preferences -Midi System tab).
Another thing you will notice is that your one-shot sample will be triggered every time you hit the pad. If the sample is already playing it will not be stopped if you hit the pad again. This might be a desirable effect because it allows you to 'layer' your sample multiple times, but if you dont want this you can simply tick the 'Auto-Stop-Note' on the Instrument tab of your sample under General (see below). This will stop the playing sample and start it again.
TIP : put your one-shot samples in the same Mute group (see above) if you do not want your samples to overlap. Configuring mute groups will cause sample A to be muted as soon as you hit your pad for sample B and vice versa.
Creating the loop :
There is not that much to say about this except that you should keep in mind that for this case we will be working in Pattern mode. As a consequence your loops will be limited in length by the size of you pattern so it's best to give this some thought before you begin.
Create your loop in Pattern 1.
Loop start/stop behavior :
2 options here : you can either define a pad as play/pause or use 2 dedicated pads (1 start, 1 stop). Although using only 1 pad was very appealing at first, we soon found out that it is not usable if you want to be able to interrupt the loop (for a break or something) and continue the loop once the break is done.
The reason is that you never know exactly where you have paused your loop so there is also no way of telling where the loop will continue from. With 2 dedicated pads you dont have this problem : hitting the 'stop' pad will stop the loop and return the playhead to the beginning of the loop so if you hit play, the loop starts from the very beginning.
Loop start/stop configuration :
Lets configure this : goto Extra - Settings - Midi System. Make sure you select the correct midi driver, input and channel and click the 'rec' button (red dot in on the left of the bottom window). Hydrogen is now waiting for your input. Just hit the midi pad you want to use as 'Start' trigger and the event type should now change to 'Note' and the 'Param' field should also show the note id that corresponds to the pad you have just hit. Now select 'Start' from the Actions drop down.
Do the same for the 'Stop' pad and assign the 'Stop' action to it.
NOTE 1 : the 'midi rec' function does not work well in Windows version 0.9.4, you need to reselect the correct midi driver/input/channel settings each time you want to add another midi binding. It is fixed in 0.9.5.
NOTE 2 : for version 0.9.5 and above you can also Shift-Leftclick the play and stop button (on the main Hydrogen screen) to arm the midi learn function, and then hit the pad you want to link to this button.
NOTE 3 : there is a good chance that the mapping you have made conflicts with the standard midi mapping. This will result in a nasty bug (assembla #132) that has not been resolved yet.
When setting the midi notes for start/stop the best option here is to use a MIDI key that is not yet in use. If this is not possible you could change the midi note mapping on your midi controller. Depending on the midi controller you are using this can be a rather complex operation and it also means that the midi note mapping will change for all your songs. Save this as a last option.
1.2 Further improvements (making life easy)
So now we got our setup working (we can start/stop a loop and trigger one-shot samples) but lets see what we can do to improve the setup.
Playing live means that you don't have the time to goto the menu, open the next song, load it and finally play it. This is where the playlist feature comes in really handy. Under Extra - Playlist you can create/edit a playlist. Create a playlist, add the songs you want to play on your gig and save the playlist.
Now when you press F5/F6 the next/previous song in your playlist will be loaded (you can even close the playlist window). Not bad, but it would be better if you could do this using your drumpads of course. Apparently it is possible (it was mentioned in a post on the old forum that is not available any more)
EDIT (Feb 9 2012) : the option to link the F5/F6 functionality to a midi trigger has recently been re-introduced in rev2453 (see this ticket) and should be available in the next 0.9.6 build (ie the first release _after_ 0.9.6beta-1)
From version 0.9.5 there is also a 'auto load playlist' feature that simply reloads the playlist that was loaded at shutdown of Hydrogen. To enable this goto Tools -Preferences - General, and tick the 'Reopen last used playlist' option.
Clear display :
So now we have everything working it's time to test it in the rehersal room ... only to find out that the song title in the window title bar is just too darn small to read :-(
Luckily there also is a solution for this problem, called the 'Director' (i know, it sounds a bit scary but it is all good ;-) that you can enable it by pressing Alt+B. The Director will show you a clear visual tempo/bar indicator, and if you are using a playlist, the name of the song will be displayed in a nice large font whenever you move to the next/prievious item in you playlist (F5/F6).
NOTE : for pre-0.9.5 hydrogen versions (including the 0.9.5-RC releases) the Director is slightly different : it has no dedicated song name field. The song name will be shown, but as soon as you start your loop, the name of the song disappears. This is annoying, but there is a workaround : middle-click on the timebar (the bar where you can see the playhead move when a song is playing) and the Tag window will pop up.
Enter the song name in the tag 1 field, and hit OK. This way you will always be able to see the song name as a 'tag'.
TIP : In linux you can enable the 'always on top' option for the Director window so it is always visible (just rightclick the Director's title bar and select 'always on top'). That way you dont 'loose' the Director if you accidentally click on another window.
The current setup looks like this now :
1.3 Clicktrack, multiple loops and monitoring
Ok, we can start a loop, we can trigger samples ... now we want MORE !
Clicktrack and multiple loops
If your song starts with the Hydrogen loop, and all other instruments/vocals start later, then the current setup should do just fine. In my case it's a bit more complicated since the musicians and the loop have to start simultaneously. Oh, and it's also desirable to have the musicians play in the same tempo as the loop ;-)
To overcome this we need a second loop that is only audible in the monitor headphone of the drummer (or whoever is controlling hydrogen). We will call this second loop the 'clicktrack'. This is simply a second pattern that only contains 4 'clicks' and will be used as a sort of countdown for the drummer.
Create the clicktrack in pattern 2
TIP : A good clicktrack clearly emphasizes the '1' of the loop so it's easy to hear where the starting point of the clicktrack is. I find that a combination of a stronger velocity + a slightly higher pitch of the first click helps a lot in achieving this goal. For the click i use the Stick sound of the GMkit.
So now we have 2 patterns that follow the exact same tempo, but thats not enough :we need to find a way to quickly switch between these patterns in a live performance. To do this we will need 2 more midi pads that we can use to select the pattern you want to hear and link these to the SELECT_NEXT_PATTERN midi action.
The 'Param' value next to the action refers to the pattern you want to select when you hit this pad.
- The pattern value is 0-based, so value '0' refers to pattern 1, value '1' refers to pattern 2, etc...
- SELECT_NEXT_PATTERN is available in 0.9.5 and up
- You can use the midi learn button to select the pad you want to link to the midi action
The setup :
You can of course easily extend the number of loops and assign a pad to each loop
Hydrogen allows you to 'stack' patterns. This means that you can enable multiple patterns at the same time resulting in a mix of these patterns.
The SELECT_NEXT_PATTERN behavior is also affected by this :
- in Single pattern mode this action will immediately switch to the linked pattern and disable the currently playing pattern.
- In stacked pattern mode this action will enable/disable the linked pattern, starting on the next loop start. The currently enabled pattern(s) will stay enabled.
This said, there is an important bug that currently renders the first option (single pattern mode) useless since every first beat of a activated pattern is skipped :-( (see this post) So far there is no fix for it, but there is a dirty workaround : set the resolution of your pattern to a high value (32 or 64) and move all notes that are on the first beat one step right. Of course all those notes will lag behind now, but you can compensate for this by playing with the lead/lag note parameter. I know this is a dirty workaround, but it works for me ...
WARNING (jan 11 2012) : make sure that you dont set the lead/lag value to far 'negative' since this can cause the output to be muted (see this post for more info)
EDIT (nov 10 2011) : a fix has been checked in for the 'first beat skipped' issue, but still needs testing. If it is ok it will be available in the next release (0.9.6)
EDIT (jan 11 2012) : the above fix is not available in 0.9.6-beta1 yet. Should be in the next 0.9.6 beta release
Poor man's monitoring
Back to the clicktrack : as mentioned before the idea is to have a sort of a countdown that is only audible in the monitor headphone of the drummer. If you have a 'prosumer' audio card (now that IS a Funky word, isn't it?) that has more than just 1 stereo output you could enable per-instrument outputs (Tools - Preferences - Audio system, and tick the 'Create per-instrument outputs'), assign every instrument to an output and create your own monitor mix.
Using an external hardware mixer you can create a stereo FOH mix (the Stick sound does not belong here), and a monitor mix that includes the Stick output
Ok ... back to reality : if you want to use the standard stereo output of your laptop, there is another 'poor mans' option :
You can 'split up' your built-in stereo out in a FOH and a Monitor out by using the right channel for FOH out and the left channel as monitor output. This implies a mono output for the FOH, but in all honesty, i dont think anyone will notice the difference when you are playing in a small crowded bar (and for the happy few that play the larger venues : you probably have a prosumer audio card anyway, right ?)
The idea is to use the pan of the Hydrogen mixer as monitor mix > all the way to the Left means the instrument is only audible in the monitor, all the way to the Right means it is only audible in the main FOH mix. The click must be turned to the Left all the way (= in the monitor only) and the other instruments may be left in the center position so they are audible in both monitor and FOH.
Err ... i'm out of pads !
So far we can trigger 2 one-shot samples, select 2 loops and start/stop the loops, great ! But what if you want more loops or samples and you only have 6 pads ?
There are a couple of tricks that we can use to reduce the number of pads you need :
- Always leave the clicktrack on : since the clicktrack is only in the monitor there is no real need to be able to switch it on/off. You will need to save your song with the clicktrack switched on and you'll have to work in stacked mode because we will not be switching between the loop and the clicktrack, but we will be enabling/disabling the loop.
- Use F5/F6 for Stop : if you press F5/F6 to jump to another song in the playlist the current song will stop playing instantly (unless it's the last song in the list and there is no other song to jump to. In that case the song will keep playing).
- dont use a Stop pad : you can enable/disable the loop with a pad so there is already a way to 'stop' the the loop. However, if you have a song that has a break in it and the duration of that break is unpredictable (waiting for that endless guitar solo to end?) you _will_ need that Stop pad, because you will have to be able to hit the Start pad at the time the break is (finally) over.
- use the PLAY/STOP_TOGGLE midi action iso START and STOP. With this Midi action you can toggle between Stop and Start. in other words if you hit the pad the loop will play. If you hit the pad again the loop will stop AND the playhead will return to position 0. If you hit that same pad again the loop will start from position 0. (0.9.5 and up)
- Use the SELECT_AND_PLAY_NEXT_PATTERN for your clicktrack. This action will not only select the pattern, but it will also start to play the pattern immediately. This saves you a 'start' pad. (0.9.5 and up)
In case something goes dreadfully wrong (lightening strikes, earth quake, tsunami etc.) and Hydrogen or your complete pc crashes you will need to some sort of recovery mechanism that quickly restarts hydrogen/pc without the audience noticing it.
There are a number of simple things that are easily fixed :
- Auto login : configure your pc so you dont have to login
- Auto start Jack and Hydrogen
- Auto load playlist in Hydrogen (see chapter 1.2)
EDIT 27/07/2011 : the upcoming 0.9.6 version of Hydrogen will have Jack_session support (the next generation session management that is more powerful that previous session managers like LASH or GLADISH)
1.5 Final thoughts
All of the above will probalbly not fit your requirements completely, but i hope it can be a starting point. You should try different settings/options like :
- uising MUTE_TOGGLE iso START/STOP
- link a pad to the TAP_TEMPO midi action so you can sync Hydrogen to your tempo iso the other way around
I have read a couple of posts of people that are successfully running Hydrogen on a netbook and that idea is quite appealing since it's small and cheap. I however have not yet tested it and i am a bit skeptical about midi>audio latency, but l am very interested in hearing your findings, so please mail me if you have experience with running Hydrogen on a netbook !
EDIT 27/07/2011 : the upcoming 0.9.6 version of Hydrogen will have a 'tabbed interface' option that allows you to use Hydrogen efficiently on small screens
Hydrogen is OPEN
- Meaning that anyone that has a good idea can post it on the forum and it might get implemented in one of the next releases (if it really IS a good idea ;-)
- Also if you want to help coding or documenting Hydrogen, just subscribe to the hydrogen devel mailing list. Your help is very welcome !!
- Do you have a setup you want to tell us about ? post it in the forum or drop us a mail and we can add it to this case study page !
Well that's it !
i hope you enjoyed reading this ... now go make music !