13.07.2015 Views

Qtractor - An Audio/MIDI multi-track sequencer - rncbc.org

Qtractor - An Audio/MIDI multi-track sequencer - rncbc.org

Qtractor - An Audio/MIDI multi-track sequencer - rncbc.org

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Figure 8: Demonstrates a right­click over a clip allowing for Mouse Mode Selection.●●●In Clip mode, Clip Objects are selected as a whole with no sub­clip regions possible.In Range mode, Clip Object regions are selected on all <strong>track</strong>s between a given timeinterval or range.In Rectangular mode, only the regions that fall under a rectangular area are selected, thismeans for adjacent <strong>track</strong>s and clips only.10.3 Clips and TracksTracks may be armed for recording, making way for creating new audio and <strong>MIDI</strong> clip fileswith captured material. Tracks can also be muted and soloed on mix­down, which alsoapplies when exporting. Most editing operations should be possible while playback is rolling(but not completely safe though; there are many procedural helpers, but not completelyassisted with lock­free primitives, yet).Figure 9: Track Functions: Record, Mute and Solo<strong>MIDI</strong> Clip Objects are representations of a sequence of events of one single <strong>MIDI</strong> channel, asextracted from a SMF format 0 file or of one single <strong>track</strong>, as from a SMF format 1, either inwhole or in part.11. Engines and Buses<strong>Qtractor</strong> is a fairly massive <strong>multi</strong>­threaded application. For instance, each audio clip has adedicated disk I/O executive thread, which synchronizes with the master engine and, for allpurposes, to central JACK real­time audio processing cycle, through a lock­free ring­buffer.These audio file ring­buffers are recycled (filled/emptied) at one second threshold, and has amaximum streaming capacity of 4­5 seconds of audio sample data. Smaller clips arepermanently cached in a RAM buffer.<strong>Audio</strong> thread scheduling is mastered and mandated through the JACK callback API model.<strong>MIDI</strong> clip events are queued in anticipation through one <strong>MIDI</strong> output thread, which feeds aALSA <strong>sequencer</strong> queue, synchronized on one second periods to the JACK process cycle. Asingle thread is responsible for listening (polling) for <strong>MIDI</strong> input, and <strong>multi</strong>plexes all incomingevents through record­armed <strong>MIDI</strong> <strong>track</strong>s. Time stamping is done through the ALSA<strong>sequencer</strong> facility.Looping is made possible through the audio file buffering layer, right at the disk I/O threadcontext. The same consideration is adopted for <strong>MIDI</strong> output queuing. JACK transport supportis not an option, as playback positioning is constantly kept in soft­chase fashion. <strong>Audio</strong> framerelocation is accounted from successive JACK client process cycles (i.e. buffer­periodqtractor­0.1.3­user­manual 13 of 38

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!