Simple loop player MIDI controllable


Cyclone Logo
Latest Release: 0.1.3 - date: 2012-03-11
Cyclone is a music application for GNU/Linux that allows users to manipulate loops in various ways. It works with professional audio formats like .wav .aif .flac, and professional audio environment (Jack Audio Connection Kit).

Now it's in early stage of development; the goal is to make a professional audio application for GNU/Linux that can compete with Ableton Live in loop handling power. Of course, Cyclone will remain a light application itself, to ensure the possibility to use it on realtime Jack environments.

It's MIDI controllable, a lot of functions can be assigned and controlled through Midi Learn. Furthermore it can command the famous loopstation for GNU/Linux, Sooperlooper, starting/stopping record and overdub functions.

To start playing loops, simply drag & drop loops into Cyclone, and start looping clicking on one of the play buttons on the interface.
After loading some loops, it's possible to run them by clicking their own play button, or using the play button on the transport buttons group. A lot of functions can be controlled by keyboard or midi. In order to assign a function to a midi command (such a note played into a midi keyboard), right-click over the function you want to assign to.

Transport Buttons on bottom serve as global control of the loop process. With these buttons you can play/pause/stop looping, go to the next/previous loop or to the first/last loop. The smaller buttons placed on bottom and on right of the music table are tools to organize loops/sessions.

Each loop can be set to have different behaviour. Options are:
  1. Name of the loop
  2. Sooperlooper Trigger Mode
  3. End Mode
  4. Volume
Enjoy it!

To download Cyclone, please visit SourceForge's page:
Added code to Subversion system. To check it out:
svn co cyclone
svn statistics - download

Jack Audio Connection Kit tool

Jack Director

JackDirector is a Linux app that lets you control Jack Audio Connection Kit's transport play/pause using midi commands (noteon) and let you assign bpm changes and other commands to midi program changes. This program plays a metronome thru 2 audio outputs exposed in Jack.


  • Control Jack Transport's play/pause using midi notes
  • Control Jack Transport's position
  • Metronome audio output
  • Assign different scenes to different program changes
  • Control bpm, mute metronome, song position, stop transport for every scene
  • Output a midi clock out for programs allowing external midi sync (eg. wine programs)
To control its behavior you have to provide a configuration file named jack-directorrc. Here's a detailed description of all possible parameters (metronome is set to 120bpm until a program change changes it). For comments, use # at the start of the line

Debug levels:
  • 0 - No output
  • 1 - stdout
  • 2 - stdout+stderr
  • 3 - stdout+verbose stderr
  • 4 - stdout+verbose stderr+midi dump
Config file Syntax:
debug Debug Level 2
mfreq Metronome sound Frequency (in Hz, 20 - 20000) 900
mamplitude Metronome sound maximum amplitude (1 - 100) 1
mduration Metronome sound duration (in ms) 20
mattack Metronome sound attack (in percent of duration) 5
mdecay Metronome sound decay (in percent of duration) 5
ntrans Midi note triggering start/stop (0 - 127) 60 (C4)
nstart Midi note triggering only start (0 - 127) 62 (D4)
nstop Midi note triggering only stop (0 - 127) 64 (E4)
nthres Minimum Velocity to trigger command (0 - 127) 0
bpm Bpm value at program start (10 - 400) 120
midich Default Midi Channel (0 - 15) 0
notimebase Whether JackDirector shouldn't set as timebase master (0 - 1) 0
mcresyncdelay Midi clock output: delay between repos and continue (in msec) 300
mcnotransport Midi clock output: if 1 don't send transport messages 0
mcnoposition Midi clock output: if 1 don't send position messages 0
name Name for jack client JackDirector
prgX program change, where X is 0-127, see below for values  

Values for program change functions have to be defined like this (example):

Opts for program change:
bpm=XXX			beats per minute (10 - 400)
midich=XX		midi channel listening for this program change (0 - 16)
                        Defaults to general midich values
mute			whether to mute the metronome's click (and let the user control
                        jack transport) (0 - 1)
stop			whether to stop transport on program change (and let the user
                        control jack transport) (0 - 1)
ignore			ignore prg command if we are already on this prg (eg. no retrigger)
locate=NFRAME		set transport to NFRAME (unsigned int)
stopzero		select whether the song's position must be set to zero at stop
You can define multiple midich for the same prg value (example):

If a program is defined 2 times (same midich), the latter will overwrite the former.

Compile Instructions:
You have to install libjack development files and qt development files.
qmake && make

Check out code using subversion system:
svn checkout svn:// jack-director-code

Contact Me