Simple8

The DeepWave Manual

DeepWave is the Simple8 music editor for the PC Engine and the SuperGrafx. It is a tracker: music is written in rows and columns, one column per channel of the console's sound. What you hear while composing is the console's emulated sound, frame for frame, with the player that will play the music in the game.

The DeepWave window with the Plein gaz demo: the order list, the pattern, the spectrum, the piano, the instruments
The “Plein gaz” demo open in DeepWave.
DeepWave, then the Simple8 project, the psg.tracker library, the console
Compose, export a Simple8 project, compile, play on the console.

The PC Engine's sound

The PC Engine's processor, the HuC6280, has its own sound generator, the PSG:

The SuperGrafx has exactly the same sound: a DeepWave song is the same on both.

The window

AreaWhat it is for
Toolbarthe title, the speed (frames per row), the listening volume, help ?
Order list (top left)the order of the patterns; clicking a slot chooses the pattern it plays
Patternsthe list of patterns: create, duplicate, delete, rename, color
Cell / Selection (bottom left)the effect of the cursor's cell; the tools of a selection; during playback, the six channels
The pattern (center)the notes, one column per channel
Visualizationthe scope, the spectrum, the spectrogram, a plasma, the six PSG channels
Transport and keyboardplay, loop, stop, record (REC), the step, chords, the MIDI keyboard; the piano
Instruments (right)the list of instruments and the chosen one: waveform, envelopes, listening
Status barmessages, the target machine, the cursor position, what the player cannot play

The menu bar

Files, exports, the language and the theme are in the macOS menu bar. The Edit menu acts on the pattern; in a text field (the title, a name) it acts on the text.

The File menu open on Export: Simple8 project, S8Tracker song, WAV; the Song and Theme menus
File ▸ Export, and the Song and Configuration ▸ Theme menus.

The visualization

The strip between the pattern and the piano shows the sound coming out. The icons on its right choose the view: the scope, the spectrum, the spectrogram, a plasma that follows the energy and the bass, the six channels of the PSG; the last one folds it away.

The spectrum
The spectrum.
The plasma
The plasma.
The six PSG channels
The six PSG channels: the volume of each, and the pitch of its note.

Problems

The button at the bottom right says whether the song can be played by its player (“✓ playable by DeepWave”). Otherwise it counts the problems; a click lists them: a note too low, an effect S8Tracker does not know, a song too big for an 8 KB bank…

A first song

  1. File ▸ New: choose the machine, PC Engine or SuperGrafx, then Create.
  2. Song ▸ Convert for the DeepWave player: to get effects, envelopes and several samples.
  3. Choose an instrument on the right; Listen plays it.
  4. Turn on REC (the dot, red when on, or ⌘E). Without REC you play without writing anything.
  5. Play a few notes on the computer keyboard. Each note is written, then the cursor moves down by the step.
  6. ⟳ (⌘L) loops the pattern. With REC on, what you play during the loop is written at the playing row: real-time recording.
  7. Change channel (Tab) and instrument for the bass, then the drums: a noise instrument moves the cursor to channel 4 by itself.
  8. File ▸ Save (⌘S): a .dwp project.
The New project window: PC Engine, SuperGrafx, and the machines to come
New project: the target machine.

The greyed-out machines (Commodore 64, NES, Mega Drive, Amiga, Amstrad CPC) show where DeepWave may go: they have no player yet.

Playing and writing notes

The transport bar and the piano: REC on in red, chords, MIDI; three keys lit
The transport and the piano: REC on, a chord held (C, E♭, G).

The computer keyboard

It plays like a piano, by the position of the keys, the same gesture in QWERTY and AZERTY:

RowQWERTYAZERTYNotes
bottomZ S X D C V G B H N J MW S X D C V G B H N J ,one octave, C to B
topQ 2 W 3 E R 5 T 6 Y 7 U I 9 O 0 PA é Z " E R ( T - Y è U I ç O à Pthe octave above

[ and ], or the arrows above the piano, change the octave.

The piano, the mouse, the MIDI keyboard

Polyphony and chords

Each held note takes a free channel able to play the instrument, starting from the cursor's: several keys together make a chord, on several channels. When no channel is free, the oldest note gives up its own. Chords (⌘K) play 2 or 3 notes with a single key: major, minor, sus4, diminished, augmented, fifth, third, octave.

A cell, and the special notes

A cell: the note C-4, instrument 03, effect 4·44
WrittenKeyEffect
=== note off1cuts the note at once
^^^ releasethe key left of 1, or <the instrument plays the end of its envelope and fades in its own way

They are also in the right-click menu of a cell.

REC and the step

Patterns and the order list

Three colored patterns, and the order list that chains them and loops

A pattern is a piece of music of 64 rows on the 6 channels: a verse, a chorus, a bridge. You can rename them and give them a color, shown in the order list. The order list is the sequence of patterns to play; a pattern can come back as often as you like.

Instruments

TypeWhat it plays
Waveforma 32-value wave at the note's pitch; every channel
Noisethe PSG's noise, the note sets its color; channels 4 and 5
Sample, fixed pitcha recorded sound played at its rate (drums, voice)
Sample played at the notethe sound sped up or slowed down by the note (a bass)

The waveform

Draw it with the mouse, or start from a preset: sine, triangle, rising or falling saw, square (its width is adjustable), random.

The instruments panel: the list, the waveform, the volume envelope and its knobs
An instrument: its wave, its volume envelope.

Envelopes

A volume envelope: the attack, the sustain loop, the release

An envelope gives one value per frame (1/60 s) while the note plays. There are five: Volume, Arpeggio (semitones added), Pitch (vibrato, drop), Wave (changes the wave during the note) and Panning. Three knobs set them: Frames (the length), Loop and Release. Presets: percussion, hold, tremolo, arpeggios, vibrato, drop, ping-pong.

With the S8Tracker player, an instrument has three settings, drawn as a curve: volume, decay, sustain.

The library and the sample workshop

+ Add offers a new instrument, or one from the library: DeepWave's (about thirty, to copy) and yours (Save to my library). Every instrument can be heard before being taken. The sample workshop opens a sound (WAV, AIFF, MP3, AAC, FLAC, OGG…), cuts it, reverses it, adds fades, converts it to 5 bits, and warns when it is too big for the console.

Effects

The effects are those of the DeepWave player, with ProTracker's letters. An effect lasts one row only: a vibrato or a slide that lasts is written on every row.

CodeEffect
0xyarpeggio: the note, +x, +y semitones, one frame each
1xx / 2xxslide up / down
3xxportamento to the cell's note
4xyvibrato: speed x, depth y
8xypanning: left x, right y
Axyvolume slide: +x/8 or −y/8 per frame
Bxxafter this row, slot xx of the order list
Cxxchannel volume (00 to 1F)
Dxxafter this row, the next slot, at row xx
ECx / EDxnote cut / delayed by x frames
Fxxspeed: frames per row

Entering them

  • With the keyboard: cursor on the effect column, type C20 in one go. After the last digit, the cursor moves down and back to the letter.
  • With a right-click on a cell: the list of effects. The chosen effect gets a starting value, and the cursor goes to its value.
  • In the left panel: the effects as buttons, their values on knobs, a sentence saying what the effect does.
The cell editor: a vibrato and its knobs
The cell editor: a vibrato.
The right-click menu on a cell, and on a selection
Right-click: on a cell, and in a selection.

Jumps

A pattern with effects; a D10 on channel 2, its arrow to row 10 and the break line
A D10 on row 1C: the break line, and the arrow to row 10, where the next pattern will start.

Bxx and Dxx change the path of playback: a line under the row marks the break. After a Bxx, the following rows are never played: they are faded.

Effects over several rows

Selecting rows (drag with the mouse, or Shift + arrows) opens the selection tool, in the left panel and on right-click:

  • Transpose by an octave or a semitone; change the instrument of the notes;
  • Volume: fade in and out, up then down, lower or raise;
  • Vibrato, slides, portamento over the whole period;
  • Extend the first row's effect, interpolate from the first row to the last;
  • a start and an end value, in a straight line or there and back;
  • the curve: one bar per row, drawn with the mouse (volume, slides, portamento, vibrato depth, panning). It is written into the pattern as you draw; one ⌘Z undoes it.
The selection tool: transpose, instrument, fades, the volume curve drawn as an arch
24 rows selected: the volume as an arch, in the curve.

During playback

The left panel then shows the six channels: the note of the playing row and the last effect of each channel, lit when it is on the playing row. When stopped, the cell editor comes back.

During playback: the six channels, their note and their effect
The six channels during playback.

Editing the pattern

GestureResult
click, dragthe cursor; a selection (several rows, several channels)
channel header, row numberthe whole channel, the whole row
⌘C ⌘X ⌘Vcopy, cut, paste at the cursor (also on right-click)
⌘Athe whole pattern
Deleteclear the cell, the selection, or the cursor's field
⌘↑ ⌘↓ (Shift)transpose by a semitone (an octave)
⌘Z ⇧⌘Zundo, redo

Locking a channel: the padlock in its header. A locked channel is hatched: nothing is written into it (notes, paste, effects) and the keyboard does not play on it. To record without touching the drums or the bass.

The three players

PlayerForWhat it can do
DeepWave (psg.tracker)new gameseffects, envelopes, several samples, 32 instruments
S8Trackerexisting S8Tracker projects9 instruments (volume, decay, sustain), one sample on channel 5, no effects
Forêt SGXthe music of Forêt SGX V2one channel per instrument (pad, flute, bell), the wind

Song ▸ Convert for the DeepWave player keeps the notes and turns the instruments into envelopes. Song ▸ Back to the S8Tracker player loses the effects (DeepWave says so first). ⌘Z undoes a conversion.

Exporting to Simple8

File ▸ Export ▸ Simple8 project… writes a folder ready to compile: main.s8p, the song (music/<name>.dws), its samples and the DeepWave project. The program plays the music with the psg.tracker library, for the project's machine:

architecture nec.pce;
addlib psg.tracker;

unit {
    const int id_song = addResource("music/plein_gaz.dws");

    initContext() {
        tracker.play(id_song);
    }

    main() {
        while (1) {
            // once per frame, outside the interrupt
            tracker.update();
        }
    }
}
java -jar LitleCompilator.jar main.s8p     # then asm/main.pce

The exported program waits for the frame before each tracker.update(). The other exports: S8Tracker song or Forêt SGX unit for those players, and WAV (60 seconds of emulated sound).

Languages, themes, recent files

DeepWave in the light Paper theme
The light “Paper” theme.
DeepWave in the grey Slate theme
The grey “Slate” theme.

The demos

The DeepWave/projets folder holds songs to open, listen to and take apart:

FileGenreWhat it shows
plein_gaz.dwpshoot'em upchords as frame arpeggios (037), sixteenth-note bass, lead and its echo
printemps_vivaldi.dwpclassicalVivaldi's Spring, arranged: piano echo, thirds, birds in trills, storm
prelude_bach.dwpclassicalBach's Prelude in C: arpeggio, held notes, delayed echo
riff_acier.dwprockdistorted fifths, muted notes, solo with portamento
boule_facettes.dwpdiscooctave bass, open hi-hat, string stabs
neons_froids.dwpnew wavesequenced bass, detuned pads, toms
horizon.dwpfilm musicswelling strings, horn, harp, timpani
vague_profonde.dwpgamea sampled bass played at the note
ether.dwpelectronicsequence, pads, gliding lead, wind

Shortcuts

KeyAction
Space / Enter / Escplay from the cursor / the song / stop
⌘L · ⌘E · ⌘Kloop the pattern · REC · chords
[ ] · - =octave · previous / next instrument
Arrows, Tab, PgUp PgDn, Home, Endmove; Shift + arrows: select
⌘C ⌘X ⌘V ⌘Acopy, cut, paste, select all
⌘↑ ⌘↓ (Shift)transpose
⌘Z ⇧⌘Zundo, redo
⌘N ⌘O ⌘S ⇧⌘Snew, open, save, save as

Tips for a game

To go further: the psg.tracker library and the file format are described in the repository's documentation (docs/cibles/pce/libs/psg/psg.tracker.md, docs/outils/DEEPWAVE_FORMAT.md).