There are five main goals of ttrk:
The urge to create a console version was two-fold:
MIDI Devices
ttrk currently only supports /dev/midi* devices. I have some old
code around for using /dev/sequencer, so I'll throw that in as well
pretty soon. I can also probably support the ALSA sequencer pretty easily.
Currently, the ui only allows you to use one MIDI device, but I will support
multiple MIDI devices soon (so you can use more than 16 channels).
By default, ttrk will open /dev/midi00. If you wish to use a
different device, you can set a different filename in the .ttrkrc file
(mididev = devicename).
Realtime Mode
This application requires running as root and using the /dev/rtc
real time clock device in order to keep acceptable sync. If realtime mode is
active, a red-hilighted 'RT' will appear in the bottom right hand corner of the
screen.
For the benefit of slower computers, the default RTC wakeup frequency
is 1024hz. This can be increased to 8192hz in the .ttrkrc file,
although you probably don't need to.
MIDI Sync
ttrk can both send and receive MIDI clock sync information. In external sync
mode, ttrk listens for sync messages and echos them out. In internal sync
mode, ttrk generates its own sync information, and ignores any incoming sync.
Screen header information
+------ Current position in playback. Loop Destination -------+ | +-- Current beats in playback. Loop trigger ----+ | | | | | v v v v 000:00 Stopped Speed: 140bpm Loop: Active, 001 -> 000 [000] Viewing: 000 Octave: 03 ^ ^ ^-- Current octave | | for new notes. | +-- Position in the song we are | currently editing. +----- Starting position of the current song.The loop destination is the position number where the song will jump to the destination. The destination can occur after the trigger.
Pattern view
The following is a channel bar. There are 256 channels in a song, numbered
in hex from 00-ff. Each channel has its own unique set of 256 patterns, also
numbered in hex.
AN1xLead <--- Name of the channel. 00 01 <--- The channel number (00) and the current pattern (01). Vol: 75 <--- Volume scale (in %) to multiply each note velocity. Ch : 01 <--- MIDI Channel of output. C-Melody <--- Name of the pattern. ==== ======== 00: C-3 40 - <--- Sends a C-3 note on message with velocity (40 * 75%). 01: --- 40 - The velocity is in hex, and is modified per note using 02: --- 40 - the Home and End keys. 03: --- 40 - 04: D#3 40 S <--- The 'S' indicates that slide is on for this note. 05: --- 40 - This means that the note will be played legato (the 06: --- 40 - D#3 note on message precedes the C-3 note off message 07: --- 40 - on the wire). Slide is turned on using the ` key 08: --- 40 - (backtick). 09: --- 40 - 10: --- 40 - 11: --- 40 -
AN1xLead <--- Name of the channel. 00 <--- The channel number in hex. Vol: 75 <--- Volume scale (in %) to multiply each note velocity. Ch : 01 <--- MIDI Channel of output in decimal. C-Melody <--- Name of pattern in current song position. ==== ======== 000:# -- <--- The loop starts at position 0 until position 4. It 001:# -- is shown in the song view as a hilighted green line 002:# -- along the left-hand side. 003:# -- 004:# 01 <--- The number shows which pattern is selected at this 005: 02 channel and position in the song. The pattern 006: 0a value can be changed using the [ and ] keys, or 007: 0a cleared using the spacebar. 008: -- 009: 0b 00a: -- 00b: --
Ctrl-Q Quits the application. F1-F8 Channel mutes. These mute the channel shown at position x on the screen at the time. Mute will send a note off if any note is playing. Un-mute'ing will leave the channel unactive, that is, the note it was playing before muting is not retriggered. F9 Start the song. This will send a MIDI start message and begin playback. I don't bother ever sending a MIDI continue, since so few devices support it, but I'm considering it. If you need that feature let me know. F10 Rewind the song to the beginning and start playback. This gives the same effect as hitting F12 then F9. F11 Stops the song. This will send a MIDI stop message. F12 Rewinds the song to the specified startting pattern. Arrow Keys Move the cursor around the screen. Shift-Left Page the view left or right along the channels. Shift-Right Ins/Del This sets the MIDI channel of the current channel bar. / and * Channel volume up and down. The channel volume is a percentage applied to the velocity of each note-on event. Home/End Increase or decrease the velocity value of a note-on message. The velocity is given in hex up to 7f. [ and ] In both pattern mode and song mode, these keys increment or decrement the current pattern of the selected channel. + and - Set the octave for new notes. ' and \ Transpose the notes in the given pattern up or down a semitone. These are really convenient on my keyboard, but probably not for everyone else. I was running out of keys that were in a nice up-down pattern. Suggestions? Pgup/Pgdn In pattern mode, these scroll the position in the song we are viewing (shown at the top of the screen, View:). In song mode, these scroll up or down the list by 8. ^T Sets the tempo for the song when using internal sync. ! Turn loop mode on. In loop mode, when the loop position pattern is to be played, the song jumps to the loop destination. ^L Set the currently viewed pattern to be the loop position. That is, instead of playing the pattern, the song will jump to the loop destination. ^K Set the currently viewed pattern to be the loop destination. When the loop position is hit, the song will jump to the beginning of this pattern. ^F Sets the currently viewed pattern to be the starting pattern of the song. That is, rewinding the song will return to the beginning of this pattern. ^S Save the song to the given file. This will expand ~'s, but will not append any fancy extension to the filename you give. ^A Load a song from disk. The current song will be overwritten in memory by the newly loaded song. It's ok to load a song while the current song is playing, but it's not perfect yet. I want to work to make the transition better. ^E Toggle between internal sync and sync'ing to an external MIDI clock. ^C Copy the current pattern into a copy buffer. ^V Paste the current copy buffer into the current pattern. If no pattern is active on the current channel at the current position, a new one is created. Otherwise, the selected pattern is overwritten by the data in the copy buffer. ^N Give a name of the current channel. Only the first 8 characters of the name are used. ^P Give a name of the current pattern. Only the first 8 characters of the name are used. <space> Space clears the note under the cursor in pattern mode. In song mode, space sets the pattern under the cursor to -- (no pattern).
Upper octave: 2 3 5 6 7 9 0 Q W E R T Y U I O P Lower octave: S D G H J Z X C V B N M
` The backtick is used to turn on or off slide for the given note. If a note is in slide mode, the note will be played legato: the note-off message for the previous note is sent after the note-on is sent for the current note. <backspace> Backspace places an explicit note-off in a pattern (it appears as '^^^' in the editor). This is extremely useful for tuning a pattern. <space> Space clears the note under the cursor in pattern mode.
######################################################################## # The .ttrkrc file contains all of the default settings for tektracker. # All names and values are case insensitive, and all spaces are ignored. # # As you can probably tell, the # character is a comment in this file. # # In this version (0.6.7), we still don't support setting a keymap in # here. Don't worry, it's coming. # Sets the initial tempo when ttrk starts up. initial_tempo = 140 # Set this to true if you want ttrk to startup using external sync. start_external_sync = false # The rtc frequency for root access, low or high. This is used to # throttle our realtime thread when using internal sync. At a setting # of low, the rtc wakes us up at a frequency of 1024hz. At high, the # frequency is 8192hz. Arguably, you should never need more than # 1024hz. rtc_frequency = low # Sets the raw MIDI device filename to use. By default, ttrk will # attempt to use /dev/midi00. mididev = /dev/midi00
Last updated Tue Feb 13 11:29:28 EST 2001