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