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
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 rightclick over a clip allowing for Mouse Mode Selection.●●●In Clip mode, Clip Objects are selected as a whole with no subclip 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 mixdown, 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 lockfree 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 realtime audio processing cycle, through a lockfree ringbuffer.These audio file ringbuffers are recycled (filled/emptied) at one second threshold, and has amaximum streaming capacity of 45 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 recordarmed <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 softchase fashion. <strong>Audio</strong> framerelocation is accounted from successive JACK client process cycles (i.e. bufferperiodqtractor0.1.3usermanual 13 of 38