Supported Systems
Each chip has its own maximum size. If a larger wave is defined for these chips, it will be scaled to fit within the constraints of the chips. Some of these chips force a phase reset when changing waveforms, which can cause clicking and popping sounds. This also means they don’t work very well with the wavetable synthesizer. These systems are marked in the “notes” column.| System | Width | Height | Notes |
|---|---|---|---|
| Bubble System | 32 | 16 | |
| Game Boy | 32 | 16 | Phase reset on waveform change |
| SM8521 | 32 | 16 | |
| Namco WSG | 32 | 16 | RAM only |
| WonderSwan | 32 | 16 | |
| Namco 163 | ≤240 | 16 | Limits differ depending on channel count |
| SNES | ≤256 | 16 | |
| PC Engine | 32 | 32 | Phase reset on waveform change |
| Virtual Boy | 32 | 64 | Phase reset on all channels on waveform change |
| FDS | 64 | 64 | |
| Konami SCC | 32 | 256 | |
| Seta X1-010 | 128 | 256 | |
| Amiga | ≤256 | 256 |
You may use up to 32,768 wavetables in a module.
Wavetable Editor
The wavetable editor provides comprehensive tools for creating and editing wavetables.
Top Controls
- Waveform number: The
-and+buttons step through the list - Open: Opens a file selector to choose the file to open
- Save: Opens a file selector to choose the file to save to
- Right-clicking brings up a menu:
- Save as .dmw…: Saves the selected wavetable in DefleMask format
- Save raw…: Saves the selected wavetable as raw data
- Right-clicking brings up a menu:
- Create sample from wavetable: Copies wavetable to a new looped sample
- Steps: View waveform as discrete blocks
- Lines: View waveform as a continuous line
- Width: Length of the waveform data. Maximum is 256
- Height: Height of the waveform. Maximum is 256
- < / >: Show/hide waveform utilities (described below)
Waveform Display
The waveform is directly editable with the mouse:- Click and drag to draw the waveform
- Hovering will display a tooltip with the waveform position and value
Bottom Controls
- Dec: View text input as decimal
- Hex: View text input as hexadecimal
- + / ±: Toggle text input as unsigned/signed. Also adjusts waveform display
- Text input: Waveform data as an editable numeric sequence. Also called “MML stream”
Waveform Utilities
These provide different ways of creating or altering a waveform.Shapes
This creates a waveform by adding together a few predefined basic wave shapes.
- Shape: Select shape from sine, triangle, saw, and square
- Duty: Only affects pulse waves, determining their width
- Exponent: Applies an exponent (power) to the waveform (^2, ^3 and so on)
- XOR Point: Determines the point where the waveform gets inverted
- Amplitude/Phase: Add together up to 16 instances 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
FM Synthesis
This creates a waveform using frequency modulation synthesis with up to four operators.
You can set:
- Carrier/modulation levels
- Frequency multipliers
- Connections between operators
- FM waveforms of these operators
WaveTools
These are useful editing tools to fine-tune the waveform:
Scale X
Scale X
Stretches the waveform to a new length.
Interpolation method
Interpolation method
Filters the waveform when stretching. Choose from none, linear, cosine, and cubic interpolation.
Scale Y
Scale Y
Resizes the waveform to a new height. It will clip at the top and bottom.
Offset X
Offset X
Slides the waveform forward or back. It will wrap around.
Offset Y
Offset Y
Slides the waveform up or down. It will clip at the top and bottom.
Smooth
Smooth
Averages values in the waveform.
Amplify
Amplify
Changes the volume of the waveform. It will clip at the top and bottom.
Normalize
Normalize
Stretches waveform to maximum within the wavetable height.
Invert
Invert
Flips waveform vertically.
Reverse
Reverse
Flips waveform horizontally.
Half
Half
Halves the waveform’s frequency by stretching its first half to fill the waveform length.
Double
Double
Doubles the waveform’s frequency by squashing it to half length then repeating it.
Convert Signed/Unsigned
Convert Signed/Unsigned
Worth trying if an imported wave sounds corrupted.
Randomize
Randomize
Generate a completely random waveform.
