diff --git a/doc/4-instrument/README.md b/doc/4-instrument/README.md index 564f5aff2..4afd2a074 100644 --- a/doc/4-instrument/README.md +++ b/doc/4-instrument/README.md @@ -10,7 +10,7 @@ double-click to open the instrument editor. every instrument can be renamed and have its type changed. -depending on the instrument type, there are currently 13 different types of an instrument editor: +depending on the instrument type, there are many different types of instrument editor: - [FM synthesis](fm.md) - for use with YM2612, YM2151 and FM block portion of YM2610. - [Standard](standard.md) - for use with NES and Sega Master System's PSG sound source and its derivatives. @@ -29,7 +29,7 @@ depending on the instrument type, there are currently 13 different types of an i - [Konami SCC / Bubble System WSG](scc.md) - for use with Konami SCC and Wavetable portion in Bubble System's sound hardware. - [Namco 163](n163.md) - for use with Namco 163. - [Konami VRC6](vrc6.md) - for use with VRC6's PSG sound source. - +- [SNES](snes.md) - for use with SNES S-APU. # macros diff --git a/doc/4-instrument/amiga.md b/doc/4-instrument/amiga.md index fc76c8667..3d7a606f9 100644 --- a/doc/4-instrument/amiga.md +++ b/doc/4-instrument/amiga.md @@ -1,4 +1,4 @@ -# Amiga/PCM sound sourceinstrument editor +# Amiga/PCM sound source instrument editor The PCM instrument editor consists of a sample selector and several macros: @@ -8,7 +8,7 @@ The PCM instrument editor consists of a sample selector and several macros: # Macros -- **Volume**: volume sequence WARNING: it works only on Amiga system, as of version 0.5.5!! +- **Volume**: volume sequence. _warning:_ it works only on Amiga system, as of version 0.5.5! - **Arpeggio**: pitch sequence - **Waveform**: sample sequence - **Panning (left)**: output level for left channel diff --git a/doc/4-instrument/snes.md b/doc/4-instrument/snes.md new file mode 100644 index 000000000..0887e9a6a --- /dev/null +++ b/doc/4-instrument/snes.md @@ -0,0 +1,46 @@ +# SNES instrument editor + +these tabs are unique to the editor for SNES instruments. + + + +# SNES + +**Use envelope** enables the ADSR volume envelope. if it's on: + +- **A**: attack rate. +- **D**: decay rate. +- **S**: sustain level. +- **D2**: decay rate during sustain. +- **R**: release rate. +- **Sustain/release mode**: + - **Direct**: note release acts as note cut. + - **Effective (linear decrease)**: after release, volume lowers by subtractions of 1/64 steps. + - **Effective (exponential decrease)**: after release, volume decays exponentially. see [gain chart](../7-systems/snes.md). + - **Delayed (write R on release)**: after release, waits until A and D have completed before starting exponential decrease. + +if envelope is off, select gain mode as described below. + + + +# Macros + +- **Volume**: volume. +- **Arpeggio**: pitch in half-steps. +- **Noise Freq**: preset frequency of noise generator. +- **Waveform**: waveform. +- **Panning (left)**: output level of left channel. +- **Panning (right)**: output level of right channel. +- **Pitch**: fine pitch. +- **Special**: bitmap of flags. + - invert left: inverts output of left channel. + - invert right: inverts output of right channel. + - pitch mod: modulates pitch using previous channel's output. + - echo: enables echo. + - noise: enables noise generator. +- **Gain**: sets mode and value of gain. + - 0 - 127: direct gain from 0 to 127 + - 128 - 159: linear gain from -0 to -31 + - 160 - 191: exponential gain from -0 to -31 + - 192 - 223: linear gain from +0 to +31 + - 224 - 255: exponential gain from +0 to +31 diff --git a/doc/4-instrument/x1_010.md b/doc/4-instrument/x1_010.md index 2311f74d0..8be27f057 100644 --- a/doc/4-instrument/x1_010.md +++ b/doc/4-instrument/x1_010.md @@ -1,11 +1,11 @@ # X1-010 instrument editor -X1-010 instrument editor consists of 7 macros. +X1-010 instrument editor consists of these macros. - **Volume**: volume levels sequence - **Arpeggio**: pitch sequence -- **Waveform**: spicifies wavetables sequence +- **Waveform**: specifies wavetables sequence - **Envelope Mode**: allows shaping an envelope -- **Envelope**: spicifies envelope shape sequence, it's also wavetable. +- **Envelope**: specifies envelope shape sequence, it's also wavetable. - **Auto envelope numerator**: sets the envelope to the channel's frequency multiplied by numerator - **Auto envelope denominator**: sets the envelope to the channel's frequency divided by denominator diff --git a/doc/7-systems/amiga.md b/doc/7-systems/amiga.md index 25fc4321d..8f49bd123 100644 --- a/doc/7-systems/amiga.md +++ b/doc/7-systems/amiga.md @@ -4,6 +4,8 @@ a computer with a desktop OS, lifelike graphics and 4 channels of PCM sound in 1 in this very computer music trackers were born... +imported MOD files use this chip, and will set A-4 tuning to 436. + # effects - `10xx`: **toggle low-pass filter.** `0` turns it off and `1` turns it on. diff --git a/doc/7-systems/nes.md b/doc/7-systems/nes.md index 0a92628e6..c3ccb7064 100644 --- a/doc/7-systems/nes.md +++ b/doc/7-systems/nes.md @@ -6,10 +6,18 @@ also known as Famicom. it is a five-channel sound generator: first two channels # effects -- `11xx`: **write to delta modulation counter.** this may be used to attenuate the triangle and noise channels. +- `11xx`: **write to delta modulation counter.** range is `00` to `7F`. + - this may be used to attenuate the triangle and noise channels; at `7F`, they will be at about 57% volume. - will not work if a sample is playing. - `12xx`: **set duty cycle or noise mode of channel.** - - may be `0` to `3` for the pulse channels and `0` or `1` for the noise channel. + - may be `0` to `3` for the pulse channels: + - `0`: 12.5% + - `1`: 25% + - `2`: 50% + - `3`: 75% + - may be `0` or `1` for the noise channel: + - `0`: long (15-bit LFSR, 32767-step) + - `1`: short (9-bit LFSR, 93-step) - `13xy`: **setup sweep up.** - `x` is the time. - `y` is the shift. @@ -48,62 +56,126 @@ also known as Famicom. it is a five-channel sound generator: first two channels - only works in DPCM mode. - see table below for possible values. -# DPCM frequency table +# tables -val | NTSC | PAL -----|----------:|----------: - 00 | 4181.7Hz | 4177.4Hz - 01 | 4709.9Hz | 4696.6Hz - 02 | 5264.0Hz | 5261.4Hz - 03 | 5593.0Hz | 5579.2Hz - 04 | 6257.9Hz | 6023.9Hz - 05 | 7046.3Hz | 7044.9Hz - 06 | 7919.3Hz | 7917.2Hz - 07 | 8363.4Hz | 8397.0Hz - 08 | 9419.9Hz | 9446.6Hz - 09 | 11186.1Hz | 11233.8Hz - 0A | 12604.0Hz | 12595.5Hz - 0B | 13982.6Hz | 14089.9Hz - 0C | 16884.6Hz | 16965.4Hz - 0D | 21306.8Hz | 21315.5Hz - 0E | 24858.0Hz | 25191.0Hz - 0F | 33143.9Hz | 33252.1Hz +## short noise frequencies (NTSC) -# length counter table +note | arpeggio | fundamental | MIDI note | pitch +:---- | -------: | ----------: | --------: | :---------- +`C-0` | @0 | 4.7 Hz | -9.47 | `d_1` + 53¢ +`C#0` | @1 | 9.5 Hz | 2.53 | `D-0` + 53¢ +`D-0` | @2 | 18.9 Hz | 14.55 | `D-1` + 55¢ +`D#0` | @3 | 25.3 Hz | 19.53 | `G-1` + 53¢ +`E-0` | @4 | 37.9 Hz | 26.55 | `D-2` + 55¢ +`F-0` | @5 | 50.6 Hz | 31.57 | `G-2` + 57¢ +`F#0` | @6 | 75.8 Hz | 38.55 | `D-3` + 55¢ +`G-0` | @7 | 95.3 Hz | 42.51 | `F#3` + 51¢ +`G#0` | @8 | 120.3 Hz | 46.55 | `A#3` + 55¢ +`A-0` | @9 | 150.4 Hz | 50.41 | `D-4` + 41¢ +`A#0` | @10 | 200.5 Hz | 55.39 | `G-4` + 39¢ +`B-0` | @11 | 300.7 Hz | 62.41 | `D-5` + 41¢ +`C-1` | @12 | 601.4 Hz | 74.41 | `D-6` + 41¢ +`C#1` | @13 | 1202.8 Hz | 86.41 | `D-7` + 41¢ +`D-1` | @14 | 2405.6 Hz | 98.41 | `D-8` + 41¢ +`D#1` | @15 | 4811.2 Hz | 110.41 | `D-9` + 41¢ -val | raw | NTSC | PAL | Dendy | NTSC 5-step | PAL 5-step | Dendy 5-step -----|----:|------:|------:|------:|------------:|-----------:|-------------: - 00 | 10 | 83ms | 100ms | 84ms | 104ms | 125ms | 105ms - 01 | 254 | 2.1s | 2.5s | 2.1s | 2.6s | 3.2s | 2.7s - 02 | 20 | 166ms | 200ms | 168ms | 208ms | 250ms | 210ms - 03 | 2 | 17ms | 20ms | 17ms | 21ms | 25ms | 21ms - 04 | 40 | 333ms | 400ms | 336ms | 417ms | 500ms | 421ms - 05 | 4 | 33ms | 40ms | 34ms | 42ms | 50ms | 42ms - 06 | 80 | 667ms | 800ms | 673ms | 833ms | 1.0s | 841ms - 07 | 6 | 50ms | 60ms | 50ms | 63ms | 75ms | 63ms - 08 | 160 | 1.3s | 1.6s | 1.3s | 1.7s | 2.0s | 1.7s - 09 | 8 | 67ms | 80ms | 67ms | 83ms | 100ms | 84ms - 0A | 60 | 500ms | 600ms | 505ms | 625ms | 750ms | 631ms - 0B | 10 | 83ms | 100ms | 84ms | 104ms | 125ms | 105ms - 0C | 14 | 117ms | 140ms | 118ms | 146ms | 175ms | 147ms - 0D | 12 | 100ms | 120ms | 101ms | 125ms | 150ms | 126ms - 0E | 26 | 217ms | 260ms | 219ms | 271ms | 325ms | 273ms - 0F | 14 | 117ms | 140ms | 118ms | 145ms | 175ms | 147ms - 10 | 12 | 100ms | 120ms | 101ms | 125ms | 150ms | 126ms - 11 | 16 | 133ms | 160ms | 135ms | 167ms | 200ms | 168ms - 12 | 24 | 200ms | 240ms | 202ms | 250ms | 300ms | 252ms - 13 | 18 | 150ms | 180ms | 151ms | 188ms | 225ms | 189ms - 14 | 48 | 400ms | 480ms | 404ms | 500ms | 600ms | 505ms - 15 | 20 | 167ms | 200ms | 168ms | 208ms | 250ms | 210ms - 16 | 96 | 800ms | 960ms | 807ms | 1.0s | 1.2s | 1.0s - 17 | 22 | 183ms | 220ms | 185ms | 229ms | 275ms | 231ms - 18 | 192 | 1.6s | 1.9s | 1.6s | 2.0s | 2.4s | 2.0s - 19 | 24 | 200ms | 240ms | 202ms | 250ms | 300ms | 252ms - 1A | 72 | 600ms | 720ms | 606ms | 750ms | 900ms | 757ms - 1B | 26 | 217ms | 260ms | 219ms | 271ms | 325ms | 273ms - 1C | 16 | 133ms | 160ms | 135ms | 167ms | 200ms | 168ms - 1D | 28 | 233ms | 280ms | 235ms | 292ms | 350ms | 294ms - 1E | 32 | 267ms | 320ms | 269ms | 333ms | 400ms | 336ms - 1F | 30 | 250ms | 300ms | 252ms | 313ms | 375ms | 315ms +reference: [NESdev](https://www.nesdev.org/wiki/APU_Noise) + +## length counter table + + + + + +value | raw | NTSC | PAL | Dendy | NTSC 5-step | PAL 5-step | Dendy 5-step +-----:|----:|------:|------:|------:|------------:|-----------:|-------------: + `03` | 2 | 17ms | 20ms | 17ms | 21ms | 25ms | 21ms + `05` | 4 | 33ms | 40ms | 34ms | 42ms | 50ms | 42ms + `07` | 6 | 50ms | 60ms | 50ms | 63ms | 75ms | 63ms + `09` | 8 | 67ms | 80ms | 67ms | 83ms | 100ms | 84ms + `00` | 10 | 83ms | 100ms | 84ms | 104ms | 125ms | 105ms + `0B` | 10 | 83ms | 100ms | 84ms | 104ms | 125ms | 105ms + `0D` | 12 | 100ms | 120ms | 101ms | 125ms | 150ms | 126ms + `10` | 12 | 100ms | 120ms | 101ms | 125ms | 150ms | 126ms + `0C` | 14 | 117ms | 140ms | 118ms | 146ms | 175ms | 147ms + `0F` | 14 | 117ms | 140ms | 118ms | 145ms | 175ms | 147ms + `1C` | 16 | 133ms | 160ms | 135ms | 167ms | 200ms | 168ms + `11` | 16 | 133ms | 160ms | 135ms | 167ms | 200ms | 168ms + `13` | 18 | 150ms | 180ms | 151ms | 188ms | 225ms | 189ms + `02` | 20 | 166ms | 200ms | 168ms | 208ms | 250ms | 210ms + `15` | 20 | 167ms | 200ms | 168ms | 208ms | 250ms | 210ms + `17` | 22 | 183ms | 220ms | 185ms | 229ms | 275ms | 231ms + `12` | 24 | 200ms | 240ms | 202ms | 250ms | 300ms | 252ms + `19` | 24 | 200ms | 240ms | 202ms | 250ms | 300ms | 252ms + `0E` | 26 | 217ms | 260ms | 219ms | 271ms | 325ms | 273ms + `1B` | 26 | 217ms | 260ms | 219ms | 271ms | 325ms | 273ms + `1D` | 28 | 233ms | 280ms | 235ms | 292ms | 350ms | 294ms + `1F` | 30 | 250ms | 300ms | 252ms | 313ms | 375ms | 315ms + `1E` | 32 | 267ms | 320ms | 269ms | 333ms | 400ms | 336ms + `04` | 40 | 333ms | 400ms | 336ms | 417ms | 500ms | 421ms + `14` | 48 | 400ms | 480ms | 404ms | 500ms | 600ms | 505ms + `0A` | 60 | 500ms | 600ms | 505ms | 625ms | 750ms | 631ms + `1A` | 72 | 600ms | 720ms | 606ms | 750ms | 900ms | 757ms + `06` | 80 | 667ms | 800ms | 673ms | 833ms | 1.0s | 841ms + `16` | 96 | 800ms | 960ms | 807ms | 1.0s | 1.2s | 1.0s + `08` | 160 | 1.3s | 1.6s | 1.3s | 1.7s | 2.0s | 1.7s + `18` | 192 | 1.6s | 1.9s | 1.6s | 2.0s | 2.4s | 2.0s + `01` | 254 | 2.1s | 2.5s | 2.1s | 2.6s | 3.2s | 2.7s reference: [NESdev](https://www.nesdev.org/wiki/APU_Length_Counter) + +## DPCM frequency table + +value | NTSC | PAL +------|----------:|----------: + `00` | 4181.7Hz | 4177.4Hz + `01` | 4709.9Hz | 4696.6Hz + `02` | 5264.0Hz | 5261.4Hz + `03` | 5593.0Hz | 5579.2Hz + `04` | 6257.9Hz | 6023.9Hz + `05` | 7046.3Hz | 7044.9Hz + `06` | 7919.3Hz | 7917.2Hz + `07` | 8363.4Hz | 8397.0Hz + `08` | 9419.9Hz | 9446.6Hz + `09` | 11186.1Hz | 11233.8Hz + `0A` | 12604.0Hz | 12595.5Hz + `0B` | 13982.6Hz | 14089.9Hz + `0C` | 16884.6Hz | 16965.4Hz + `0D` | 21306.8Hz | 21315.5Hz + `0E` | 24858.0Hz | 25191.0Hz + `0F` | 33143.9Hz | 33252.1Hz diff --git a/doc/7-systems/snes.md b/doc/7-systems/snes.md index e5546d4ce..9888291c6 100644 --- a/doc/7-systems/snes.md +++ b/doc/7-systems/snes.md @@ -1,8 +1,8 @@ -# Super Nintendo Entertainment System (SNES)/Super Famicom +# Super Nintendo Entertainment System (SNES) / Super Famicom the successor to NES to compete with Genesis, packing superior graphics and sample-based audio. -its audio system, developed by Sony, features a DSP chip, SPC700 CPU and 64KB of dedicated SRAM used by both. +its Sony-developed audio system features a DSP chip, SPC700 CPU, and 64KB of dedicated SRAM used by both. this whole system itself is pretty much a separate computer that the main CPU needs to upload its program and samples to. Furnace communicates with the DSP directly and provides a full 64KB of memory. this memory might be reduced excessively on ROM export to make up for playback engine and pattern data. you can go to window > statistics to see how much memory your samples are using. @@ -25,55 +25,153 @@ Furnace also allows the SNES to use wavetables (and the wavetable synthesizer) i - `10xx`: **set waveform.** - `11xx`: **toggle noise mode.** - `12xx`: **toggle echo on this channel.** -- `13xx`: **toggle pitch modulation.** -- `14xy`: **toggle inverting the left or right channels.** (x: left, y: right). -- `15xx`: **set envelope mode.** - - 0: ADSR. - - 1: gain (direct). - - 2: linear decrement. - - 3: exponential decrement. - - 4: linear increment. - - 5: bent line (inverse log) increment. +- `13xx`: **toggle pitch modulation.** frequency modulation by the previous channel's output. no effect on channel 1. +- `14xy`: **toggle inverting the left or right channels.** `x` is left, `y` is right. +- `15xx`: **set envelope mode.** see gain chart below for `1` through `5`. + - `0`: ADSR mode. + - `1`: gain (direct). volume holds at one level. + - `2`: linear decrement. volume lowers by subtractions of 1/64. + - `3`: exponential decrement. volume lowers by multiplications of 255/256. + - `4`: linear increment. volume rises by additions of 1/64. + - `5`: bent line (inverse log) increment. volume rises by additions of 1/64 until 3/4, then additions of 1/256. - `16xx`: **set gain.** `00` to `7F` if direct, `00` to `1F` otherwise. - `18xx`: **enable echo buffer.** - `19xx`: **set echo delay.** range is `0` to `F`. -- `1Axx`: **set left echo channel volume.** - - this is a signed number. +- `1Axx`: **set left echo channel volume.**\ + `1Bxx`: **set right echo channel volume.**\ + `1Cxx`: **set echo feedback.** + - all of these are signed numbers. - `00` to `7F` for 0 to 127. - `80` to `FF` for -128 to -1. - - setting this to -128 is not recommended as it may cause echo output to overflow and therefore click. -- `1Bxx`: **set right echo channel volume.** - - this is a signed number. - - `00` to `7F` for 0 to 127. - - `80` to `FF` for -128 to -1. - - setting this to -128 is not recommended as it may cause echo output to overflow and therefore click. -- `1Cxx`: **set echo feedback.** - - this is a signed number. - - `00` to `7F` for 0 to 127. - - `80` to `FF` for -128 to -1. - - setting this to -128 is not recommended as it may cause echo output to overflow and therefore click. -- `1Dxx`: **set noise generator frequency.** range is `00` to `1F`. -- `1Exx`: **set left dry / global volume.** - - this does not affect echo. -- `1Fxx`: **set right dry / global volume.** - - this does not affect echo. -- `20xx`: **set attack.** range is `0` to `F`. - - only in ADSR envelope mode. -- `21xx`: **set decay.** range is `0` to `7`. - - only in ADSR envelope mode. -- `22xx`: **set sustain.** range is `0` to `7`. - - only in ADSR envelope mode. -- `23xx`: **set release.** range is `00` to `1F`. - - only in ADSR envelope mode. -- `30xx`: **set echo filter coefficient 0.** -- `31xx`: **set echo filter coefficient 1.** -- `32xx`: **set echo filter coefficient 2.** -- `33xx`: **set echo filter coefficient 3.** -- `34xx`: **set echo filter coefficient 4.** -- `35xx`: **set echo filter coefficient 5.** -- `36xx`: **set echo filter coefficient 6.** -- `37xx`: **set echo filter coefficient 7.** + - setting these to -128 is not recommended as it may cause echo output to overflow and therefore click. +- `1Dxx`: **set noise generator frequency.** range is `00` to `1F`. see noise frequencies chart below. +- `1Exx`: **set left dry / global volume.**\ + `1Fxx`: **set right dry / global volume.** + - these do not affect echo. +- `20xx`: **set attack.** range is `0` to `F`.\ + `21xx`: **set decay.** range is `0` to `7`.\ + `22xx`: **set sustain.** range is `0` to `7`.\ + `23xx`: **set release.** range is `00` to `1F`. + - these four are only used in ADSR envelope mode. see ADSR chart below. +- `30xx`: **set echo filter coefficient 0.**\ + `31xx`: **set echo filter coefficient 1.**\ + `32xx`: **set echo filter coefficient 2.**\ + `33xx`: **set echo filter coefficient 3.**\ + `34xx`: **set echo filter coefficient 4.**\ + `35xx`: **set echo filter coefficient 5.**\ + `36xx`: **set echo filter coefficient 6.**\ + `37xx`: **set echo filter coefficient 7.** - all of these are signed numbers. - `00` to `7F` for 0 to 127. - `80` to `FF` for -128 to -1. - _Note:_ Be sure the sum of all coefficients is between -128 and 127. sums outside that may result in overflow and therefore clicking. + - see [SnesLab](https://sneslab.net/wiki/FIR_Filter) for a full explanation and examples. + +# tables + +## ADSR + +| attack | 0→1 time | decay | 1→S time | sustain | ratio | release | S→0 time +| -----: | -------: | ----: | -------: | ------: | :---: | ------: | -------: +| `00` | 4.1s | `00` | 1.2s | `00` | 1/8 | `00` | ∞ +| `01` | 2.5s | `01` | 740ms | `01` | 2/8 | `01` | 38s +| `02` | 1.5s | `02` | 440ms | `02` | 3/8 | `02` | 28s +| `03` | 1.0s | `03` | 290ms | `03` | 4/8 | `03` | 24s +| `04` | 640ms | `04` | 180ms | `04` | 5/8 | `04` | 19s +| `05` | 380ms | `05` | 110ms | `05` | 6/8 | `05` | 14s +| `06` | 260ms | `06` | 74ms | `06` | 7/8 | `06` | 12s +| `07` | 160ms | `07` | 37ms | `07` | 1 | `07` | 9.4s +| `08` | 96ms | | | | | `08` | 7.1s +| `09` | 64ms | | | | | `09` | 5.9s +| `0A` | 40ms | | | | | `0A` | 4.7s +| `0B` | 24ms | | | | | `0B` | 3.5s +| `0C` | 16ms | | | | | `0C` | 2.9s +| `0D` | 10ms | | | | | `0D` | 2.4s +| `0E` | 6ms | | | | | `0E` | 1.8s +| `0F` | 0ms | | | | | `0F` | 1.5s +| | | | | | | `10` | 1.2s +| | | | | | | `11` | 880ms +| | | | | | | `12` | 740ms +| | | | | | | `13` | 590ms +| | | | | | | `14` | 440ms +| | | | | | | `15` | 370ms +| | | | | | | `16` | 290ms +| | | | | | | `17` | 220ms +| | | | | | | `18` | 180ms +| | | | | | | `19` | 150ms +| | | | | | | `1A` | 110ms +| | | | | | | `1B` | 92ms +| | | | | | | `1C` | 74ms +| | | | | | | `1D` | 55ms +| | | | | | | `1E` | 37ms +| | | | | | | `1F` | 18ms + +reference: [Super Famicom Development Wiki](https://wiki.superfamicom.org/spc700-reference#dsp-voice-register:-adsr-1097) + +## gain + +value | linear inc. | bent line inc. | linear dec. | exponent dec. +----: | ----------: | -------------: | ----------: | ------------: + `00` | ∞ | ∞ | ∞ | ∞ + `01` | 4.1s | 7.2s | 4.1s | 38s + `02` | 3.1s | 5.4s | 3.1s | 28s + `03` | 2.6s | 4.6s | 2.6s | 24s + `04` | 2.0s | 3.5s | 2.0s | 19s + `05` | 1.5s | 2.6s | 1.5s | 14s + `06` | 1.3s | 2.3s | 1.3s | 12s + `07` | 1.0s | 1.8s | 1.0s | 9.4s + `08` | 770ms | 1.3s | 770ms | 7.1s + `09` | 640ms | 1.1s | 640ms | 5.9s + `0A` | 510ms | 900ms | 510ms | 4.7s + `0B` | 380ms | 670ms | 380ms | 3.5s + `0C` | 320ms | 560ms | 320ms | 2.9s + `0D` | 260ms | 450ms | 260ms | 2.4s + `0E` | 190ms | 340ms | 190ms | 1.8s + `0F` | 160ms | 280ms | 160ms | 1.5s + `10` | 130ms | 220ms | 130ms | 1.2s + `11` | 96ms | 170ms | 96ms | 880ms + `12` | 80ms | 140ms | 80ms | 740ms + `13` | 64ms | 110ms | 64ms | 590ms + `14` | 48ms | 84ms | 48ms | 440ms + `15` | 40ms | 70ms | 40ms | 370ms + `16` | 32ms | 56ms | 32ms | 290ms + `17` | 24ms | 42ms | 24ms | 220ms + `18` | 20ms | 35ms | 20ms | 180ms + `19` | 16ms | 28ms | 16ms | 150ms + `1A` | 12ms | 21ms | 12ms | 110ms + `1B` | 10ms | 18ms | 10ms | 92ms + `1C` | 8ms | 14ms | 8ms | 74ms + `1D` | 6ms | 11ms | 6ms | 55ms + `1E` | 4ms | 7ms | 4ms | 37ms + `1F` | 2ms | 3.5ms | 2ms | 18ms + +reference: [Super Famicom Development Wiki](https://wiki.superfamicom.org/spc700-reference#dsp-voice-register:-gain-1156) + +## noise frequencies + +value | freq. | value | freq. +----: | -----: | ----: | -------: +`00` | 0 Hz | `10` | 500 Hz +`01` | 16 Hz | `11` | 667 Hz +`02` | 21 Hz | `12` | 800 Hz +`03` | 25 Hz | `13` | 1.0 KHz +`04` | 31 Hz | `14` | 1.3 KHz +`05` | 42 Hz | `15` | 1.6 KHz +`06` | 50 Hz | `16` | 2.0 KHz +`07` | 63 Hz | `17` | 2.7 KHz +`08` | 83 Hz | `18` | 3.2 KHz +`09` | 100 Hz | `19` | 4.0 KHz +`0A` | 125 Hz | `1A` | 5.3 KHz +`0B` | 167 Hz | `1B` | 6.4 KHz +`0C` | 200 Hz | `1C` | 8.0 KHz +`0D` | 250 Hz | `1D` | 10.7 KHz +`0E` | 333 Hz | `1E` | 16 KHz +`0F` | 400 Hz | `1F` | 32 KHz + +reference: [Super Famicom Development Wiki](https://wiki.superfamicom.org/spc700-reference#dsp-register:-flg-1318) + + + +# resources + +- [SNES-format BRR samples](https://www.smwcentral.net/?p=stion&s=brrsamples) at SMW Central