update PowerNoise doc

This commit is contained in:
tildearrow 2024-01-27 18:01:28 -05:00
parent 3f329e464d
commit ac1e09af84
2 changed files with 35 additions and 12 deletions

View file

@ -4,24 +4,47 @@ the PowerNoise instrument editor consists of two tabs.
## LFSR-based synthesis ## LFSR-based synthesis
this will be finished later... it's so late and I need to sleep now PowerNoise employs LFSR-based synthesis for the noise channels, using linear-feedback shift registers for sound generation.
a linear-feedback shift register is one method used for random number generation.
it works by shifting a sequence of binary numbers (bits), taking the last bit into the output. then one of the bits is either pushed back into the register, or combined with another, doing a XOR (exclusive or) operation and then being pushed back.
think of it as a conveyor carrying glass bottles. each bottle may be empty or carrying water.
the bottle at the end is taken. if there's water, then the output is 1. if it's empty, the output is 0.
depending on the LFSR configuration:
- a bottle is pushed into the conveyor. it is either empty or filled with water depending on the bottle at a specific position in the conveyor (this is called a "tap"), or
- two bottles at specific positions ("taps") are looked at and combined as follows:
- if the bottles are identical, an empty bottle is pushed.
- if one bottle has water but the other is empty, a watee bottle is pushed.
the process is repeated indefinitely.
PowerNoise uses either one or two taps for the LFSR, configurable via the Control macro.
the LFSR must be initialized before it can produce sound. the Load LFSR macro allows you to do so.
by default the LFSR is configured to produce square waves, by having a single tap in position 1 and an alternating LFSR pattern.
## Macros ## Macros
- **Volume**: volume sequence. - **Volume**: volume sequence.
- **Arpeggio**: pitch sequence. - **Arpeggio**: pitch sequence.
- **Duty/Noise**: duty cycle and noise mode. - **Panning (left)**: output level for left channel.
- pulse duty cycles: - **Panning (right)**: output level for right channel.
- `0`: 12.5%
- `1`: 25%
- `2`: 50%
- `3`: 75%
- noise modes:
- `0`: long noise
- `1`: short noise
- **Pitch**: fine pitch. - **Pitch**: fine pitch.
- **Phase Reset**: trigger restart of waveform. - **Phase Reset**: trigger reloading the LFSR.
- **Control**: channel settings:
- **slope AM**: when enabled, this channel's output and the slope channel go through amplitude modulation.
- **tap B**: enables use of two taps for the LFSR.
- **Tap A Location**: sets the position of the first tap.
- **Tap B Location**: sets the position of the second tap.
- **Load LFSR**: allows you to load the LFSR with a specific pattern.
## PowerNoise tab ## PowerNoise tab
this tab allows you to change the base octave - important when you have set a longer LFSR pattern. this tab allows you to change the base octave - important when you have set a longer LFSR pattern.
## PowerNoise (slope) instrument editor
this channel has its own instrument type, as it does not use LFSR-based synthesis but instead generates saw waves.
I will finish this section later...

View file

@ -19,7 +19,7 @@ note that using samples on VRC6 is CPU expensive!
## VRC6 (saw) instrument editor ## VRC6 (saw) instrument editor
this channel has its own instrument type, a one-of-a-kind thing in Furnace that was decided as a compromise during a debate. this channel has its own instrument type, a thing in Furnace that was decided as a compromise during a debate.
the only differences from this instrument type compared to the regular one are: the only differences from this instrument type compared to the regular one are:
- the lack of a Sample tab. - the lack of a Sample tab.