Commit f5e375d

ISSOtm committed on
Flesh out manual
commit f5e375d68855f6a0d38abf4ed6b42fa399fae603 parent e7f1f4b
21 changed files +95−51
Modifiedmanual/src/SUMMARY.md +23−17
@@ -1,21 +1,27 @@
1 [Introduction](./introduction.md) 1 [Introduction](./introduction.md)
2 2
3 # Contents 3 # hUGETracker
4 4
5 - [Glossary](./glossary.md) 5 - [Glossary](hUGETracker/glossary.md)
6 - [Interface](./interface.md) 6 - [Interface](hUGETracker/interface.md)
7 - [VU meters and oscilloscopes](./vu-meters-oscilloscopes.md) 7 - [VU meters and oscilloscopes](hUGETracker/vu-meters-oscilloscopes.md)
8 - [Tracker grid](./tracker-grid.md) 8 - [Tracker grid](hUGETracker/tracker-grid.md)
9 - [Order editor](./order-editor.md) 9 - [Order editor](hUGETracker/order-editor.md)
10 - [Song components](./song-components.md) 10 - [Song components](hUGETracker/song-components.md)
11 - [Toolbar](./toolbar.md) 11 - [Toolbar](hUGETracker/toolbar.md)
12 - [Tabs]() 12 - [Tabs]()
13 - [General](./tabs/general.md) 13 - [General](hUGETracker/tabs/general.md)
14 - [Instruments](./tabs/instruments.md) 14 - [Instruments](hUGETracker/tabs/instruments.md)
15 - [Waves](./tabs/waves.md) 15 - [Waves](hUGETracker/tabs/waves.md)
16 - [Comments](./tabs/comments.md) 16 - [Comments](hUGETracker/tabs/comments.md)
17 - [Effect editor](./effect-editor.md) 17 - [Effect editor](hUGETracker/effect-editor.md)
18 - [Effect reference](./effect-reference.md) 18 - [Effect reference](hUGETracker/effect-reference.md)
19 - [Hotkeys](./hotkeys.md) 19 - [Hotkeys](hUGETracker/hotkeys.md)
20 - [Routines](./routines.md) 20 - [Subpatterns](hUGETracker/subpatterns.md)
21 - [Miscellaneous](./miscellaneous.md) 21 - [Routines](hUGETracker/routines.md)
22 - [Miscellaneous](hUGETracker/miscellaneous.md)
23
24 # hUGEDriver
25
26 - [What is hUGEDriver](hUGEDriver/what-is-hugedriver.md)
27 - [Integration](hUGEDriver/integration.md)
Deletedmanual/src/effect-reference.md +0−27
@@ -1,27 +0,0 @@
1 # Effect reference
2
3 The hUGETracker effect codes are intentionally similar to ProTracker and FastTracker's.
4 If you know those, then many of these effects will look familiar to you.
5
6 Effect | Name | Description
7 -------|-------------------|------------
8 `0xy` | Arpeggio | On every tick switch between the playing note, <math><mi>note</mi> <mo>+</mo> <mi>x</mi></math>, and <math><mi>note</mi> <mo>+</mo> <mi>y</mi></math>, where <var>x</var> and <var>y</var> are values in semitones. Can be used to create "chords" or a strum effect.
9 `1xx` | Portamento up | Slide the pitch up by <var>xx</var> units every tick.
10 `2xx` | Portamento down | Slide the pitch down by <var>xx</var> units every tick.
11 `3xx` | Tone portamento | *Instead of playing the cell's note*, slide the pitch towards that note by <var>xx</var> units every tick. Stop when the note is reached. **This effect cannot be used in a cell with an instrument value.**
12 `4xy` | Vibrato | Rapidly switch between the playing note and <math><mi>note</mi> <mo>+</mo> <mi>y</mi></math>, at the rate of <var>x</var>, where <var>y</var> is a value in units. Valid values for <var>x</var> are 0, 1, 3, 7, and F. This is similar to arpeggio, except you can control the frequency, and the amount is specified in units rather than semitones.
13 `5xx` | Set master volume | Set the [master volume control][NR50] of the Game Boy for the left and right speakers. Use the effect editor to create one of these effects. *Note that a volume of 0 is not completely silent!*
14 `6xx` | Call routine | Call a user-defined [routine](./routines.md). Will crash if an invalid routine is specified.
15 `7xx` | Note delay | Wait <var>xx</var> ticks before playing the note in this cell. *The note won't be played at all if `xx` is strictly greater than the tempo!*
16 `8xx` | Set panning | Set [which channels play on which speakers][NR51]. Use the effect editor to create one of these effects. Can also be used as a mute for a channel, by setting it to output on neither left nor right.
17 `9xx` | Set duty cycle | Select the duty cycle for either channel 1 or channel 2. If this effect appears on the noise or wave channels, it will affect channel 2. Valid values for <var>xx</var> are `00`, `40`, `80`, or `C0`. Under the hood, the <var>xx</var> value is written directly into CH1 or CH2's [length register][NR11], so you could theoretically achieve other effects than just duty cycle changing.
18 `Axy` | Volume slide | Slide the note's volume up by <var>x</var> units, and then down by <var>y</var> units. *This effect actually retriggers the note on each tick*, which might not be noticeable for instruments without length or envelope, but may sound bad if those are present. It is recommended to use either instrument envelopes, or the `C` command instead, if you can. **This effect does not work in the same cell as a note/instrument!**
19 `Bxx` | Position jump | Jump to order <var>xx</var>.
20 `Cxx` | Set volume | Set the volume of the channel to <var>xx</var>. **Must be accompanied by a note and instrument to work** (except on channel 3). Valid values range from `00` to `0F`.
21 `Dxx` | Pattern break | Jump to the next order, and start on row <var>xx</var>.
22 `Exx` | Note cut | Cut the note short after <var>xx</var> ticks.
23 `Fxx` | Set tempo | Set the number of ticks per row to <var>xx</var>. Can be used in an alternating fashion to create a swing beat.
24
25 [NR11]: https://eldred.fr/pandocs/Audio_Registers.html#ff11--nr11-channel-1-length-timer--duty-cycle
26 [NR50]: https://eldred.fr/pandocs/Audio_Registers.html#ff24--nr50-master-volume--vin-panning
27 [NR51]: https://eldred.fr/pandocs/Audio_Registers.html#ff25--nr51-sound-panning
Addedmanual/src/hUGEDriver/integration.md +5−0
@@ -0,0 +1,5 @@
1 # Integration
2
3 ## SFX
4
5 Note that "global" SFX (5, 8, B, D, and F) still play even if muted
Addedmanual/src/hUGEDriver/what-is-hugedriver.md +1−0
@@ -0,0 +1 @@
1 # What is hUGEDriver
Renamedmanual/src/effect-editor.md → manual/src/hUGETracker/effect-editor.md +0−0
File metadata changed without textual changes.
Addedmanual/src/hUGETracker/effect-reference.md +57−0
@@ -0,0 +1,57 @@
1 # Effect reference
2
3 The hUGETracker effect codes are intentionally similar to ProTracker and FastTracker's.
4 If you know those, then many of these effects will look familiar to you.
5
6 Some things to keep in mind:
7 - Effects are only active on the row that they are on; if you want an effect to remain active for several rows, you must re-enter it on each one.
8 - Some effects mention "the playing note", which is the last note played on the channel thus far (possibly in the same row).
9 For example:
10
11 Note | Instr | Effect
12 -----|-------|-------
13 C-5 | 1 | ...
14 ... | . | 047
15
16 ...the `047` arpeggio will apply with the `C-5` note as its base.
17
18 Without further ado, here is the list of effects supported by hUGETracker:
19
20 Effect | Name | Description
21 -------|-------------------|------------
22 `0xy` | Arpeggio | While this effect is active, the player will cycle on each tick between the playing note, the note + <var>x</var> semitones, and the note + <var>y</var> semitones, in this order. Can be used to create "chords" or a strum effect.
23 `1xx` | Portamento up | Slide the pitch up by <var>xx</var> units every tick. If the row contains a note, then the effect is skipped on the row's first tick; *if the tempo is 1, this means the effect will not do anything at all*.
24 `2xx` | Portamento down | Same, but the pitch is slid down instead of up.
25 `3xx` | Tone portamento | *Instead of playing the cell's note*, slide the pitch towards that note by <var>xx</var> units every tick. Stops exactly at the note, though.
26 `4xy` | Vibrato | Every <var>x</var> + 1 ticks, switch between the playing note and note + <var>y</var> units. This is similar to arpeggio, except you can control the frequency, and the offset is specified in units rather than semitones.
27 `5xx` | Set master volume | Set the [master volume control][NR50] of the Game Boy for the left and right speakers. Consider using the effect editor. *Note that a volume of 0 is not completely silent!*
28 `6xy` | Call routine | Call the [user-defined routine](./routines.md) number <var>y</var>.
29 `7xx` | Note delay | Wait <var>xx</var> ticks before playing the note in this cell. *If `xx` is strictly greater than the tempo, the note will not play at all!*
30 `8xx` | Set panning | Set [which channels play on which speakers][NR51]. Consider using the effect editor. Setting a channel to neither left nor right will mute it, but is not recommended[^nr51_mute].
31 `9xx` | Change timbre | *For pulse channels* (CH1 &amp; 2), this changes the duty cycle[^nrx1]; *for the wave channel* (CH3), this loads wave <var>xx</var>[^wave_retrig]; *for the noise channel* (CH4), this changes [the LFSR's width][NR43] (caution! [^lfsr_lockup]).
32 `Axy` | Volume slide | Slide the note's volume up by <var>x</var> units, or down by <var>y</var> units (either <var>x</var> or <var>y</var> must be 0). *The active note will be retriggered on each tick*, which may sound bad if envelope and/or length are present. It is recommended to use instead either instrument envelopes, or the `C` effect, if possible.
33 `Bxx` | Position jump | Jump to order <var>xx</var>.
34 `Cxy` | Set volume | Set the volume of the channel to <var>y</var>, *and retrigger the active note*. If <var>x</var> is not 0, <var>x</var> will be written to [the envelope bits][NR12].
35 `Dxx` | Pattern break | Jump to the next order, and start on row <var>xx</var>.
36 `Exx` | Note cut | Cut the note short after <var>xx</var> ticks; *the note won't be cut if <var>xx</var> is not strictly less than the tempo!*
37 `Fxx` | Set tempo | Set the number of ticks per row to <var>xx</var>. Can be used in an alternating fashion to create a swing beat.
38
39 [^nr51_mute]:
40 Muting a channel via NR51 may cause an audio pop, and also tends not to play nice with sound effect engines that don't override NR51.
41 Further, since NR51 is a global effect, it's still applied even if the channel is "muted".
42
43 [^nrx1]:
44 <var>xx</var> is written directly to the channel's [length register][NR11]; if the active instrument has "length" enabled, the length will be reloaded immediately.
45
46 [^wave_retrig]:
47 Due to hardware limitations, changing the wave requires restarting the active note.
48
49 [^lfsr_lockup]:
50 Switching the LFSR from "long mode" to "short mode" at a certain time ["locks up" the noise channel](https://gbdev.io/pandocs/Audio_details.html#noise-channel-ch4), silencing it until it's retriggered.
51 This should happen consistently for an affected song, and may not appear in the tracker.
52
53 [NR11]: https://gbdev.io/pandocs/Audio_Registers.html#ff11--nr11-channel-1-length-timer--duty-cycle
54 [NR12]: https://gbdev.io/pandocs/Audio_Registers.html#ff12--nr12-channel-1-volume--envelope
55 [NR43]: https://gbdev.io/pandocs/Audio_Registers.html#ff22--nr43-channel-4-frequency--randomness
56 [NR50]: https://gbdev.io/pandocs/Audio_Registers.html#ff24--nr50-master-volume--vin-panning
57 [NR51]: https://gbdev.io/pandocs/Audio_Registers.html#ff25--nr51-sound-panning
Renamedmanual/src/glossary.md → manual/src/hUGETracker/glossary.md +0−0
File metadata changed without textual changes.
Renamedmanual/src/hotkeys.md → manual/src/hUGETracker/hotkeys.md +0−0
File metadata changed without textual changes.
Renamedmanual/src/interface.md → manual/src/hUGETracker/interface.md +0−0
File metadata changed without textual changes.
Renamedmanual/src/miscellaneous.md → manual/src/hUGETracker/miscellaneous.md +2−2
@@ -8,9 +8,9 @@ The clipboard format for hUGETracker is compatible with [ModPlug Tracker](https:
8 This means that you can convert your existing `.mod`, `.xm`, `.s3m`, or `.it` chiptunes into Game Boy tunes very quickly by just copying and pasting your patterns into hUGETracker. 8 This means that you can convert your existing `.mod`, `.xm`, `.s3m`, or `.it` chiptunes into Game Boy tunes very quickly by just copying and pasting your patterns into hUGETracker.
9 Note that the effects are not converted when pasted, so you'll need to manually adjust the effects to work in hT. 9 Note that the effects are not converted when pasted, so you'll need to manually adjust the effects to work in hT.
10 10
11 ![Screenshot of the clipboard format of hUGETracker and ModPlug](img/clipboards.png) 11 ![Screenshot of the clipboard format of hUGETracker and ModPlug](../img/clipboards.png)
12 12
13 ![Screenshot of the same clipboards, pasted into hUGETracker and ModPlug](img/pasted.png) 13 ![Screenshot of the same clipboards, pasted into hUGETracker and ModPlug](../img/pasted.png)
14 14
15 ## File format 15 ## File format
16 16
Renamedmanual/src/order-editor.md → manual/src/hUGETracker/order-editor.md +1−1
@@ -1,6 +1,6 @@
1 <figure style="float: right;"> 1 <figure style="float: right;">
2 2
3 ![Screenshot of the order editor](img/order_editor.png) 3 ![Screenshot of the order editor](../img/order_editor.png)
4 4
5 </figure> 5 </figure>
6 6
Renamedmanual/src/routines.md → manual/src/hUGETracker/routines.md +0−0
File metadata changed without textual changes.
Renamedmanual/src/song-components.md → manual/src/hUGETracker/song-components.md +1−1
@@ -2,7 +2,7 @@
2 2
3 <figure style="float: left;"> 3 <figure style="float: left;">
4 4
5 ![Screenshot of the song components](img/song_components.png) 5 ![Screenshot of the song components](../img/song_components.png)
6 6
7 </figure> 7 </figure>
8 8
Addedmanual/src/hUGETracker/subpatterns.md +1−0
@@ -0,0 +1 @@
1 # Subpatterns
Renamedmanual/src/tabs/comments.md → manual/src/hUGETracker/tabs/comments.md +0−0
File metadata changed without textual changes.
Renamedmanual/src/tabs/general.md → manual/src/hUGETracker/tabs/general.md +0−0
File metadata changed without textual changes.
Renamedmanual/src/tabs/instruments.md → manual/src/hUGETracker/tabs/instruments.md +0−0
File metadata changed without textual changes.
Renamedmanual/src/tabs/waves.md → manual/src/hUGETracker/tabs/waves.md +0−0
File metadata changed without textual changes.
Renamedmanual/src/toolbar.md → manual/src/hUGETracker/toolbar.md +1−1
@@ -1,6 +1,6 @@
1 # Toolbar 1 # Toolbar
2 2
3 ![Screenshot of the toolbar](img/toolbar.png) 3 ![Screenshot of the toolbar](../img/toolbar.png)
4 4
5 The toolbar contains various functions that are useful when writing music: 5 The toolbar contains various functions that are useful when writing music:
6 6
Renamedmanual/src/tracker-grid.md → manual/src/hUGETracker/tracker-grid.md +2−2
@@ -1,6 +1,6 @@
1 # Tracker grid 1 # Tracker grid
2 2
3 ![Screenshot of the tracker grid](./img/tracker_grid.png) 3 ![Screenshot of the tracker grid](../img/tracker_grid.png)
4 4
5 The **tracker grid** displays four patterns together. 5 The **tracker grid** displays four patterns together.
6 This represents one row in the **order table**, and is the component used to compose a song. 6 This represents one row in the **order table**, and is the component used to compose a song.
@@ -77,7 +77,7 @@ The **headers** of the channels are clickable, and will mute/unmute the playback
77 77
78 <figure> 78 <figure>
79 79
80 ![Test](img/right_click_menu.png) 80 ![Test](../img/right_click_menu.png)
81 81
82 </figure> 82 </figure>
83 83
Addedmanual/src/hUGETracker/vu-meters-oscilloscopes.md +1−0
@@ -0,0 +1 @@
1 # VU meters and oscilloscopes