Playing in a 2 piece band, with the drums and lots of other samples being played back as backing tracks, there was a need to use a looper to add in more elements to the tracks. A hardware based looper fails in this respect, since there is no way to maintain synchronisation. Meaning, slight discrepancies between triggering the start loop and end loop, even if it's ever so minute, will add up as the bars progress, and since there's no drummer to adapt to the loop, it will eventually run off time.
Thus, a software based looper is the way to go. Not just because you can maintain tempo based synchronisation on the DAW software that you're hosting the plugin, but also because most of these software loopers are free, and more functional than a hardware looper could ever be.
There are quite a few to choose from:
Since your arms are occupied with the daunting task of playing an instrument, you need to control the parameters of the looper through your foot. This is where the midi foot controller comes in. If you aren't familiar with what MIDI is, here an article.
Many midi controllers are available in the market, and the Beheringer FCB1010 is one of the most popular ones out there. But the perks of building you're own are:
- Cost: you can build one for 1/8th the cost of a commercially available one.
- Customization: You can build a controller as per your requirement. This controller has the specs that I want, your needs maybe different. This instructable is thorough enough to act as a guide for a generic midi controller, rather than being confined and limited to someone else's project.
- It's USB bus powered, there is no need for an external power supply.
- And the perk which is often ignored the most, it's fun ! You get to learn something new, and you'll have something to show for your efforts by the end of it.
The concept is quite simple and straightforward. You press a button, the arduino interprets the signal arriving from the button as a midi "control change" signal (typically represented as MIDI CC), and this signal can be mapped to respond to any of the parameters of the looper.