From d0a71f816242295501d569baec4431ebb3cc49c6 Mon Sep 17 00:00:00 2001 From: Electric Keet Date: Wed, 19 Jul 2023 20:34:48 -0700 Subject: [PATCH 1/2] New "guides" section! Also, some tiny fixes to other docs I noticed along the way. --- doc/3-pattern/effects.md | 94 ++++++++++++++++----------------- doc/5-wave/README.md | 13 +++-- doc/9-guides/README.md | 5 ++ doc/9-guides/limited-samples.md | 24 +++++++++ doc/README.md | 1 + 5 files changed, 83 insertions(+), 54 deletions(-) create mode 100644 doc/9-guides/README.md create mode 100644 doc/9-guides/limited-samples.md diff --git a/doc/3-pattern/effects.md b/doc/3-pattern/effects.md index df1f85500..91e311473 100644 --- a/doc/3-pattern/effects.md +++ b/doc/3-pattern/effects.md @@ -84,7 +84,7 @@ not all chips support these effects. ## other -- `9xxx`: **Set sample position.** jumps current sample to position `xxx \* 0x100`. +- `9xxx`: **Set sample position.** jumps current sample to position `xxx * 0x100`. - Not all chips support this effect. - `EBxx`: **Set sample bank.** - Does not apply on Amiga. @@ -97,52 +97,52 @@ additionally, [each chip has its own effects](../7-systems/README.md). ## macro table -ID | macro ----|----------------------------- -00 | volume -01 | arpeggio -02 | duty/noise -03 | waveform -04 | pitch -05 | extra 1 -06 | extra 2 -07 | extra 3 -08 | extra A (ALG) -09 | extra B (FM) -0A | extra C (FMS) -0B | extra D (AMS) -0C | panning left -0D | panning right -0E | phase reset -0F | extra 4 -10 | extra 5 -11 | extra 6 -12 | extra 7 -13 | extra 8 -| | **operator 1 macros** -20 | AM -21 | AR -22 | DR -23 | MULT -24 | RR -25 | SL -26 | TL -27 | DT2 -28 | RS -29 | DT -2A | D2R -2B | SSG-EG -2C | DAM -2D | DVB -2E | EGT -2F | KSL -30 | SUS -31 | VIB -32 | WS -33 | KSR -40 | **operator 2 macros** -60 | **operator 3 macros** -80 | **operator 4 macros** + ID | macro +-----|----------------------------- +`00` | volume +`01` | arpeggio +`02` | duty/noise +`03` | waveform +`04` | pitch +`05` | extra 1 +`06` | extra 2 +`07` | extra 3 +`08` | extra A (ALG) +`09` | extra B (FM) +`0A` | extra C (FMS) +`0B` | extra D (AMS) +`0C` | panning left +`0D` | panning right +`0E` | phase reset +`0F` | extra 4 +`10` | extra 5 +`11` | extra 6 +`12` | extra 7 +`13` | extra 8 +| | **operator 1 macros** +`20` | AM +`21` | AR +`22` | DR +`23` | MULT +`24` | RR +`25` | SL +`26` | TL +`27` | DT2 +`28` | RS +`29` | DT +`2A` | D2R +`2B` | SSG-EG +`2C` | DAM +`2D` | DVB +`2E` | EGT +`2F` | KSL +`30` | SUS +`31` | VIB +`32` | WS +`33` | KSR +`40` | **operator 2 macros** +`60` | **operator 3 macros** +`80` | **operator 4 macros** the interpretation of duty, wave and extra macros depends on chip/instrument type: diff --git a/doc/5-wave/README.md b/doc/5-wave/README.md index 983b57e0c..59131d39b 100644 --- a/doc/5-wave/README.md +++ b/doc/5-wave/README.md @@ -2,24 +2,23 @@ Wavetable synthesizers, in context of Furnace, are sound sources that operate on extremely short n-bit PCM streams. By extremely short, no more than 256 bytes. This amount of space is nowhere near enough to store an actual sampled sound, it allows certain amount of freedom to define a waveform shape. -Maximum wave width (length) is 256 bytes, and maximum wave height (depth) is 256 steps. - Each chip has its own maximum size, shown in the following table. If a larger wave is defined for these chips, it will be squashed to fit within the constraints of the chips. Some hardware doesn't work well with the wavetable synthesizer (described below); these systems are marked in the "synth?" column. system | width | height | synth? ---------------------|------:|:-------|:-----: +--------------------|------:|:-------|:------ Bubble System | 32 | 16 | Game Boy | 32 | 16 | -Game.com | 32 | 16 | -Namco WSG | 32 | 16 | +SM8521 | 32 | 16 | +Namco WSG | 32 | 16 | RAM only WonderSwan | 32 | 16 | -Namco N163 | ≤128 | 16 | -Super Nintendo | ≤256 | 16 | +Namco 163 | ≤128 | 16 | +SNES | ≤256 | 16 | PC Engine | 32 | 32 | Virtual Boy | 32 | 64 | no Famicom Disk System | 64 | 64 | Konami SCC | 32 | 256 | Seta X1-010 | 128 | 256 | +Amiga | ≤256 | 256 | # wavetable editor diff --git a/doc/9-guides/README.md b/doc/9-guides/README.md new file mode 100644 index 000000000..66b460726 --- /dev/null +++ b/doc/9-guides/README.md @@ -0,0 +1,5 @@ +# guides + +here is a small collection of useful tricks and techniques to really make Furnace sing. + +- [using samples with limited playback rates](limited-samples.md) diff --git a/doc/9-guides/limited-samples.md b/doc/9-guides/limited-samples.md new file mode 100644 index 000000000..34977c57f --- /dev/null +++ b/doc/9-guides/limited-samples.md @@ -0,0 +1,24 @@ +# using samples with limited playback rates + +some sample-based chips have a limited number of available sample playback rates. when working with these chips, notes entered in the pattern editor will play back at the closest available rate... which might be perfect, or might be several semitones off. the solution is to prepare samples to work around this. + +for example: using the NES, a `C-4` note in the PCM channel means the associated sample will play back at a rate of 8363Hz. let's say we want to use a slap bass sample recorded at a rate of 22050Hz in which the audible pitch is A-2. let's also say that when we put a `C-4` note in the tracker, we want to hear the bass play at what sounds like C-3, transposed three semitones higher than the recorded pitch. + +here's how to make this example work: + +- load up the sample and open it in the sample editor. +- the Note selector will show "F-6"; add the three semitones mentioned above to make it "G#6". the Hz will change to 26217. +- use the Resample button. in the pop-up dialog, type in `8363`, then click Resample. +- select the instrument from the instrument list, and in the pattern editor, enter a `C-4` in the PCM channel. it should sound like a slap bass playing a C-3 note. + +the NES PCM frequency table shows the sixteen notes can be played. if a `D-4` is entered, the slap bass will be heard at D-3 as desired. what if we want to hear a C#3, though? + +- load up the original sample in a new slot and open it in the sample editor. +- the Note selector will show "F-6"; this time we add four semitones to make it "A-6". the Hz will change to 27776. +- just like before, use the Resample button. in the little pop-up, type in `8363` (yes, the NES's C-4 rate), then click Resample. +- select the instrument from the instrument list and open it in the instrument editor. turn on "Use sample map". +- in the leftmost column, find C#5. click in the next column and enter the number of the second sample. in the next column to the right, click the "C#4" and hit the key for C-4 to change it. +- in the pattern editor, enter a `C#4`; it should sound like a C#3! +- try adding another entry in the sample map so the note D#4 plays the second sample at D-4. + + diff --git a/doc/README.md b/doc/README.md index f561710c1..58dca5b86 100644 --- a/doc/README.md +++ b/doc/README.md @@ -10,6 +10,7 @@ this documentation is a work in progress! expect several sections to be incomple 6. [samples](6-sample/README.md) 7. [list of sound chips](7-systems/README.md) 8. [advanced topics](8-advanced/README.md) +9. [guides](9-guides/README.md) # attribution From 5ba14cbfef2e26d663983e7bf057d7cd845bd194 Mon Sep 17 00:00:00 2001 From: Electric Keet Date: Thu, 20 Jul 2023 11:05:01 -0700 Subject: [PATCH 2/2] Link to guides from intro doc. --- doc/1-intro/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/1-intro/README.md b/doc/1-intro/README.md index 34658ece3..8e9289fc6 100644 --- a/doc/1-intro/README.md +++ b/doc/1-intro/README.md @@ -19,3 +19,5 @@ due to its nature of being feature-packed, it may be technical and somewhat diff it also has a flexible windowing system which you may move around and organize. see [2-interface](../2-interface/README.md) and [3-pattern](../3-pattern/README.md) for more information. + +once familiar with the tracker, look to [9-guides](../9-guides/README.md) for useful techniques. \ No newline at end of file