Timing is correct now! Forgot to update samples_per_tick when parsing the 0xf effect.
[pineappletracker.git] / SPEC
blobdb3bac7287abd96b933430cfb0a19886da1870b5
1 /* vi:set syntax=help */
3 Specification for pineappletracker
6 ***************
7 * NORMAL MODE *
8 ***************
9 Directions
10         gg G
11                 Move cursor to the top/bottom of the current column.
13         h j k l
14                 Move cursor left/down/up/right in current column.
16         H M L
17                 Move cursor to the highest, middle, or lowest line on the
18                 screen.
20 Window movement
21         ] [
22                 Switch to next/last instrument from any column.
24         } {
25                 Switch to next/last phrase from any column.
27         ^d ^u
28                 Scroll down/up eight lines.
30         ^e ^y
31                 Scroll current window up/down without moving the cursor.
33         ^h ^l
34                 Switch current column to the left/right.
36         ^k ^j
37                 Switch to next/last phrase or instrument based on the current
38                 column.
40         0
41                 Move the cursor to the start of the line.
42         
43         $
44                 Move the cursor to the end of the line.
46 Modifying commands
47         ) (
48                 Increase/Decrease song tempo.
49         
50         > <
51                 Increase/Decrease current octave.
53         - =
54                 Increase/Decrease step amount.
56         ^
57                 Yank entire current column and paste it in the next empty
58                 phrase or instrument.
60         a
61                 Add a line to the end of the current song/instrument.
63         d<direction>
64                 Delete everything towards the direction. If track column is
65                 focused, just clear everything.
67         dd D
68                 Delete current line. If track column is focused, just clear it.
70         J K
71                 Increment/Decrement whatever is under the cursor. Wrap around
72                 at min/max values.
74         p
75                 Paste whatever is in the current column's paste buffer onto
76                 this line. If the whole line was yanked into the buffer,
77                 replace the whole existing line with the new one. Otherwise,
78                 replace only what is in the buffer, and leave everything else
79                 as is.
80         
81         r
82                 Replace whatever is under the cursor with a note or number.
83                 Kind of like going into insert mode for just one insertion,
84                 then returning.
86         x
87                 Clear whatever is under the cursor.
89         X
90                 Clear the whole line under the cursor.
92 Yank commands
93         y<direction>
94                 Yank everything from the cursor to the direction into the
95                 current column's buffer.
97         yy 
98                 Yank the current line into the current column's buffer.
99         
100         Y
101                 Yank entire current column into current column's buffer.
103 Meta commands
104         <number>
105                 Execute the following command that many times.
107         .
108                 Repeat last modifying command.
110         ^r
111                 Redo the last undo'd command. Repeat to go ahead if there were
112                 multiple undos.
114         u
115                 Undo the last modifying command. Repeat to go further back.
117 Player commands
118         <Enter>
119                 Play song/track depending on the current column.
121         <Space Bar>
122                 Stop playback.
124 Mode commands
125         :
126                 Enter command line mode.
128         ^a
129                 Enter jammer mode.
131         i
132                 Enter insert mode.
134         o
135                 Insert new line then go into insert mode. If the current column
136                 is the track column, just move the cursor down one line and
137                 enter insert mode.
139         v
140                 Enter visual mode.
142         V
143                 Enter visual line mode.
144         
146 ***************
147 * INSERT MODE *
148 ***************
149 Cursor/Window movement
150         h j k l
151                 Move cursor left/down/up/right in current column.
153 Modifying commands
154         <note>
155                 If the cursor is on top of a note, replace it.
157         <number>
158                 If the cursor is on top of a number, replace it.
160         -
161                 Clear whatever is under the cursor and move the cursor down.
162                         
165 *********************
166 * COMMAND LINE MODE *
167 *********************
168         :<number>
169                 Move cursor to that line number in the song tab. Jump to that
170                 track or instrument number if in another tab.
172         :q
173         :quit
174                 Quit.
176         :w (filename) 
177         :write (filename)
178                 Save. If filename is given, save to that file instead.
179         
180         :wq (filename)
181                 Save and quit. If filename is given, save to that file instead.
182         
183         :set buffersize = number
184                 Set buffersize to number.
185         
186         :set step = number
187                 Set step increment to number.
188         
189         :load instrument.ins
190                 Load instrument.ins into next empty slot.
191         
192         :save instrument.ins
193                 Save current instrument to instrument.ins.
194         
195         :clear song
196                 Clear entire song tab.
197         
198         :clear tracks
199                 Clear all tracks.
200         
201         :clear instruments
202                 Clear all instruments.
203         
204         :clear all
205                 Clear song, track, and instruments.
207         :colorscheme (scheme)
208                 Change gui colors.
209         
210         :wavexport (filename)
211                 Render to .wav format filename.
212         
213         :c (comment)
214                 Add comment (comment) to the current file.
216 Mode commands
217         <Escape>
218                 Enter normal mode.
221 ***************
222 * JAMMER MODE *
223 ***************
224         <note>
225                 Play the note with the current instrument.
226         
227         > <
228                 Increase/Decrease current octave.
230 Mode commands
231         <Escape>
232                 Enter normal mode.
235 ***************
236 * VISUAL MODE *
237 ***************
238         h j k l
239                 Move cursor left/down/up/right in current column. Modify
240                 selection based on where the cursor was when visual mode was
241                 entered.
243         gg G
244                 Move cursor to the top/bottom of the current column.
246         y
247                 Yank whatever is under the cursor into the current column's
248                 buffer.
250 Mode commands
251         <Escape>
252                 Enter normal mode.
255 ********************
256 * VISUAL LINE MODE *
257 ********************
258         gg G
259                 Move cursor to the top/bottom of the current column.
261         j k
262                 Move cursor down/up in current column. j and k modify the
263                 selection.
265         y
266                 Yank whatever is under the cursor into the current column's
267                 buffer.
269 Mode commands
270         <Escape>
271                 Enter normal mode.
273 =-=-=-=-=-=-=-=
274 = FX COMMANDS =
275 -=-=-=-=-=-=-=-
276         dxx
277                 Set duty cycle (pulse width) to xx.
278         
279         fxx 
280                 Set volume fade speed to xx. So, fff is a slow fadeout, f01 is
281                 a slow fadein.
283         ixx 
284                 Set channel inertia to xx. A high inertia causes automatic
285                 slides between notes. Default 0.
286   
287         sxx
288                 Set slide. 0-7f is slide up, 80-ff is slide down.
289   
290         mxx
291                 Set pulse width modulation rate to xx.
293         txx
294                 Wait xx time units.
295         
296         vxx
297                 Set channel volume to xx.
298   
299         wxx
300                 Set waveform. 00 = triangle, 01 = saw, 02 = pulse, 03 = noise.
301   
302         ~xy
303                 Set vibrato, x = depth, y = rate.
305         @xx
306                 Jump to instrument line xx.
308         *xx
309                 Set tempo to xx.
311         +<note>
312                 Set the pitch to <note>. This can be used to create arpeggios
313                 with the jump command. This is relative to the note in the
314                 track column.
316         =<note>
317                 Set the pitch to <note>. Using this command will cause all
318                 notes specified in the track column to be ignored.
320 ***************
321 * CONFIG FILE *
322 ***************
324 set audiodriver = <sdl> <jack> <alsa>
325         Set the audio driver to either SDL, jack or alsa.       
327 set buffersize = <num>
328         Set the size of the audiobuffer to <num>. In the SDL driver we
329         would simply set requested.samples to this number, not sure how
330         it will work with the other drivers yet.
332 set gui = <ncurses> <sdl> <caca>
333         Set the gui to ncurses, sdl, or libcaca.