* Mod parser parses patterns, just got to figure out what the period values mean...
[pineappletracker.git] / SPEC
blobb80d2fb136043e1fae13013154c8c3eb4f278f2d
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 Modifying commands
41         ) (
42                 Increase/Decrease song tempo.
43         
44         > <
45                 Increase/Decrease current octave.
47         - =
48                 Increase/Decrease step amount.
50         ^
51                 Yank entire current column and paste it in the next empty
52                 phrase or instrument.
54         a
55                 Add a line to the end of the current song/instrument.
57         d<direction>
58                 Delete everything towards the direction. If track column is
59                 focused, just clear everything.
61         dd D
62                 Delete current line. If track column is focused, just clear it.
64         J K
65                 Increment/Decrement whatever is under the cursor. Wrap around
66                 at min/max values.
68         p
69                 Paste whatever is in the current column's paste buffer onto
70                 this line. If the whole line was yanked into the buffer,
71                 replace the whole existing line with the new one. Otherwise,
72                 replace only what is in the buffer, and leave everything else
73                 as is.
74         
75         r
76                 Replace whatever is under the cursor with a note or number.
77                 Kind of like going into insert mode for just one insertion,
78                 then returning.
80         x
81                 Clear whatever is under the cursor.
83         X
84                 Clear the whole line under the cursor.
86 Yank commands
87         y<direction>
88                 Yank everything from the cursor to the direction into the
89                 current column's buffer.
91         yy 
92                 Yank the current line into the current column's buffer.
93         
94         Y
95                 Yank entire current column into current column's buffer.
97 Meta commands
98         <number>
99                 Execute the following command that many times.
101         .
102                 Repeat last modifying command.
104         ^r
105                 Redo the last undo'd command. Repeat to go ahead if there were
106                 multiple undos.
108         u
109                 Undo the last modifying command. Repeat to go further back.
111 Player commands
112         <Enter>
113                 Play song/track depending on the current column.
115         <Space Bar>
116                 Stop playback.
118 Mode commands
119         :
120                 Enter command line mode.
122         ^a
123                 Enter jammer mode.
125         i
126                 Enter insert mode.
128         o
129                 Insert new line then go into insert mode. If the current column
130                 is the track column, just move the cursor down one line and
131                 enter insert mode.
133         v
134                 Enter visual mode.
136         V
137                 Enter visual line mode.
138         
140 ***************
141 * INSERT MODE *
142 ***************
143 Cursor/Window movement
144         h j k l
145                 Move cursor left/down/up/right in current column.
147 Modifying commands
148         <note>
149                 If the cursor is on top of a note, replace it.
151         <number>
152                 If the cursor is on top of a number, replace it.
154         -
155                 Clear whatever is under the cursor and move the cursor down.
156                         
159 *********************
160 * COMMAND LINE MODE *
161 *********************
162         :<number>
163                 Move cursor to that line number in the song tab. Jump to that
164                 track or instrument number if in another tab.
166         :q
167         :quit
168                 Quit.
170         :w (filename) 
171         :write (filename)
172                 Save. If filename is given, save to that file instead.
173         
174         :wq (filename)
175                 Save and quit. If filename is given, save to that file instead.
176         
177         :set buffersize = number
178                 Set buffersize to number.
179         
180         :set step = number
181                 Set step increment to number.
182         
183         :load instrument.ins
184                 Load instrument.ins into next empty slot.
185         
186         :save instrument.ins
187                 Save current instrument to instrument.ins.
188         
189         :clear song
190                 Clear entire song tab.
191         
192         :clear tracks
193                 Clear all tracks.
194         
195         :clear instruments
196                 Clear all instruments.
197         
198         :clear all
199                 Clear song, track, and instruments.
201         :colorscheme (scheme)
202                 Change gui colors.
203         
204         :wavexport (filename)
205                 Render to .wav format filename.
206         
207         :c (comment)
208                 Add comment (comment) to the current file.
210 Mode commands
211         <Escape>
212                 Enter normal mode.
215 ***************
216 * JAMMER MODE *
217 ***************
218         <note>
219                 Play the note with the current instrument.
220         
221         > <
222                 Increase/Decrease current octave.
224 Mode commands
225         <Escape>
226                 Enter normal mode.
229 ***************
230 * VISUAL MODE *
231 ***************
232         h j k l
233                 Move cursor left/down/up/right in current column. Modify
234                 selection based on where the cursor was when visual mode was
235                 entered.
237         gg G
238                 Move cursor to the top/bottom of the current column.
240         y
241                 Yank whatever is under the cursor into the current column's
242                 buffer.
244 Mode commands
245         <Escape>
246                 Enter normal mode.
249 ********************
250 * VISUAL LINE MODE *
251 ********************
252         gg G
253                 Move cursor to the top/bottom of the current column.
255         j k
256                 Move cursor down/up in current column. j and k modify the
257                 selection.
259         y
260                 Yank whatever is under the cursor into the current column's
261                 buffer.
263 Mode commands
264         <Escape>
265                 Enter normal mode.
267 =-=-=-=-=-=-=-=
268 = FX COMMANDS =
269 -=-=-=-=-=-=-=-
270         dxx
271                 Set duty cycle (pulse width) to xx.
272         
273         fxx 
274                 Set volume fade speed to xx. So, fff is a slow fadeout, f01 is
275                 a slow fadein.
277         ixx 
278                 Set channel inertia to xx. A high inertia causes automatic
279                 slides between notes. Default 0.
280   
281         sxx
282                 Set slide. 0-7f is slide up, 80-ff is slide down.
283   
284         mxx
285                 Set pulse width modulation rate to xx.
287         txx
288                 Wait xx time units.
289         
290         vxx
291                 Set channel volume to xx.
292   
293         wxx
294                 Set waveform. 00 = triangle, 01 = saw, 02 = pulse, 03 = noise.
295   
296         ~xy
297                 Set vibrato, x = depth, y = rate.
299         @xx
300                 Jump to instrument line xx.
302         *xx
303                 Set tempo to xx.
305         +<note>
306                 Set the pitch to <note>. This can be used to create arpeggios
307                 with the jump command. This is relative to the note in the
308                 track column.
310         =<note>
311                 Set the pitch to <note>. Using this command will cause all
312                 notes specified in the track column to be ignored.