doc finalization: wavetable

This commit is contained in:
tildearrow 2023-09-09 23:40:24 -05:00
parent 005ebe5e78
commit 087f6214fd

View file

@ -1,24 +1,25 @@
# wavetables # wavetables
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. wavetable chips, in context of Furnace, are sound generators that operate on extremely short, looping sample streams. by extremely short, usually no more than 256 samples.
this amount of space is nowhere near enough to store an actual sampled sound, but it allows certain amount of freedom to define a waveform shape.
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 "notes" column. each chip has its own maximum size, shown in the following table. if a larger wave is defined for these chips, it will be scaled to fit within the constraints of the chips. some of these don't work well with the wavetable synthesizer (described below); these systems are marked in the "notes" column.
system | width | height | notes system | width | height | notes
--------------------|------:|:-------|:------ --------------|------:|:-------|:------
Bubble System | 32 | 16 | Bubble System | 32 | 16 |
Game Boy | 32 | 16 | phase reset on waveform change (clicking) Game Boy | 32 | 16 | phase reset on waveform change (clicking)
SM8521 | 32 | 16 | SM8521 | 32 | 16 |
Namco WSG | 32 | 16 | RAM only Namco WSG | 32 | 16 | RAM only
WonderSwan | 32 | 16 | WonderSwan | 32 | 16 |
Namco 163 | ≤240 | 16 | limits differ depending on channel count Namco 163 | ≤240 | 16 | limits differ depending on channel count
SNES | ≤256 | 16 | SNES | ≤256 | 16 |
PC Engine | 32 | 32 | phase reset on waveform change (clicking) PC Engine | 32 | 32 | phase reset on waveform change (clicking)
Virtual Boy | 32 | 64 | wavesynth unsupported Virtual Boy | 32 | 64 |
Famicom Disk System | 64 | 64 | FDS | 64 | 64 |
Konami SCC | 32 | 256 | Konami SCC | 32 | 256 |
Seta X1-010 | 128 | 256 | Seta X1-010 | 128 | 256 |
Amiga | ≤256 | 256 | Amiga | ≤256 | 256 |
# wavetable editor # wavetable editor
@ -35,22 +36,22 @@ controls across the top line:
- **Steps**: view waveform as discrete blocks. - **Steps**: view waveform as discrete blocks.
- **Lines**: view waveform as a continuous line. - **Lines**: view waveform as a continuous line.
- **Width**: length of the waveform data. maximum is 256. - **Width**: length of the waveform data. maximum is 256.
- **Height**: depth of the waveform. maximum is 256. - **Height**: height of the waveform. maximum is 256.
- `<` / `>`: toggle tabs (described below). - `<` / `>`: show/hide waveform utilities (described below).
waveform display: waveform display:
- the waveform is directly editable with the mouse. - the waveform is directly editable with the mouse.
- hovering will display a tooltip with the waveform position and value. - hovering will display a tooltip with the waveform position and value.
controls across the bottom line: controls across the bottom line:
- **Dec**: view MML stream as decimal. - **Dec**: view text input as decimal.
- **Hex**: view MML stream as hexadecimal. - **Hex**: view text input as hexadecimal.
- `+` / `±`: toggle MML stream as unsigned/signed. also adjusts waveform display. - `+` / `±`: toggle text input as unsigned/signed. also adjusts waveform display.
- MML stream: waveform data as an editable numeric sequence. - text input: waveform data as an editable numeric sequence. also called "MML stream".
## tabs ## waveform utilifies
each tab provides different ways of creating or altering a waveform. these provide different ways of creating or altering a waveform.
### Shapes ### Shapes
@ -58,9 +59,9 @@ each tab provides different ways of creating or altering a waveform.
this creates a waveform by adding together a few predefined basic wave shapes. this creates a waveform by adding together a few predefined basic wave shapes.
- shape: select shape from sine, triangle, saw, and square. - shape: select shape from sine, triangle, saw, and square.
- **Duty**: only affects pulse waves, determining their width - **Duty**: only affects pulse waves, determining their width.
- **Exponent**: applies an exponent (power) to the waveform (^2, ^3 and so on). - **Exponent**: applies an exponent (power) to the waveform (^2, ^3 and so on).
- **XOR Point**: determines the point where the waveform gets negated. - **XOR Point**: determines the point where the waveform gets inverted.
- **Amplitude/Phase**: add together up to 16 instances of the shape. - **Amplitude/Phase**: add together up to 16 instances of the shape.
- **Amplitude**: height of the shape. - **Amplitude**: height of the shape.
- **Phase**: position along the shape. for example, 0.250 starts the shape a quarter of the way along. - **Phase**: position along the shape. for example, 0.250 starts the shape a quarter of the way along.
@ -71,7 +72,7 @@ this creates a waveform by adding together a few predefined basic wave shapes.
this creates a waveform using frequency modulation synthesis with up to four operators. this creates a waveform using frequency modulation synthesis with up to four operators.
one can set carrier/modulation levels, frequency multipliers, connections between operators and FM waveforms of these operators. you can set carrier/modulation levels, frequency multipliers, connections between operators and FM waveforms of these operators.
### WaveTools ### WaveTools
@ -79,11 +80,11 @@ one can set carrier/modulation levels, frequency multipliers, connections betwee
these are useful editing tools to fine-tune the waveform: these are useful editing tools to fine-tune the waveform:
- **Scale X**: stretches the waveform to a new length. - **Scale X**: stretches the waveform to a new length.
- interpolation method: filters the waveform when stretching. choose from none, linear, cosine, and cubic interpolation. - **interpolation method**: filters the waveform when stretching. choose from none, linear, cosine, and cubic interpolation.
- **Scale Y**: resizes the waveform to a new height. it will clip at the top and bottom. - **Scale Y**: resizes the waveform to a new height. it will clip at the top and bottom.
- **Offset X**: slides the the waveform forward or back. it will wrap around. - **Offset X**: slides the the waveform forward or back. it will wrap around.
- **Offset Y**: slides the waveform up or down. it will clip at the top and bottom. - **Offset Y**: slides the waveform up or down. it will clip at the top and bottom.
- **Smooth**. smooths waveform. - **Smooth**. averages values in the waveform.
- **Amplify**. changes the volume of the waveform. it will clip at the top and bottom. - **Amplify**. changes the volume of the waveform. it will clip at the top and bottom.
- **Normalize**: stretches waveform to maximum within the wavetable height. - **Normalize**: stretches waveform to maximum within the wavetable height.
- **Invert**: flips waveform vertically. - **Invert**: flips waveform vertically.