Session sequences

Just starting to use Ardour2 and would like to congratulate the team for the hard work and a great piece of software.

I would like to take Ardour out for live performances. It would be great if a tool could be developed that would allow you to sequence different sessions into a play list and then play each session by hitting the space bar. I guess this can be done without having to open the main editor itself.


We had some discussion of this a while back. As best as I recall, we thought that if we could tie “goto marker 1”, “goto marker 2”, etc to modifier+function keys, that would give the ability to quickly move around. (as well as create markers at given points with useful default names)

It would still be MODIFIERKEY-F1 then SPACE to fire up a new section, but it would be pretty fast…

if all you are doing is playing fixed audio back, then it would be much less load on the machine to simply export each session to stereo, then embed those files into a new session with whatever spacing you want to use between them.

The idea is to have seperate (more than 2) going to different outputs on a prosonus firepod. We would have a drummer play to a click etc.

The regions/markers seems to be a good idea. You can set the tempo etc on each region then jump to the desired region.


You could also use the locations window for this purpose, and detach the playback bar to be somewhere nearby, mousewise…

I have been playing around with this idea (locations window) and it seems workable. I would be nice to have the regions as an additional pane in the right hand tabs for quick navigation. Then you could possibly navigate witht he up/down arrows and space to start playing.

The only thing missing is the ability to set a range to play and then stop at the end of the range. In a live performance all you need to worry about is to start the wanted region and it will play till the end of the selected region then stop.

I may look into this myself but I am really a Java guy and have not done C++ for years now.



You may be able to get what you need by using the “range” functions which include the ability to play a range once it is selected.

If you need to get really flexible and automated with it, you can write a simple JACK transport app that does exactly what you need.

Here’s a bit of code to get you started:

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <time.h>
#include <unistd.h>

#include <jack/jack.h>

int main(int argc, char *argv[])
//connect to the jack server
jack_client_t *client;
if ( (client = jack_client_new ( “transport” )) == 0){
printf ( “jack server not found\n”);
return 1;

//determine JACK’s sample rate
jack_position_t thePos;
jack_transport_query (client, &thePos);
long unsigned int sampleRate = thePos.frame_rate;

//start and end points. You should probably set these from command line args or whatever
//for this demo we will roll from 1 second to 5 seconds
long unsigned int start = sampleRate * 1;
long unsigned int end = sampleRate * 5;

//locate to the start point and start playing
jack_transport_locate( client, start );
jack_transport_start( client );

//wake up once per second to see if we’ve passed the end point
while (true) {
jack_transport_query (client, &thePos);
if (thePos.frame >= end) break;

//stop the transport and shut down.
jack_client_close (client);

return 0;

You’ll need the JACK headers for this to work. Save this code as a file called StartToEnd.c and compile it with:

g++ StartToEnd.c -ljack -oStartToEnd

If you have a bit of C/C++ chops, you should be able to modify this to fit your needs.

-Ben Loftis