Describe the Chip node as a device with wave and pitch (#386)

- Instruments: the device, its buttons, lever, knobs and both
  screens. "Not yet" no longer lacks a view of the waveform.
- Architecture: ChipPanel, ChipFace and chipView.
- README and Development: 1962 checks.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
adminandClaude Opus 5.5 committed 2026-10-10 14:55:45 +02:00
1 parent b4cfdc3c54
commit fc86403c75
3 files changed
+24 -3

No files matched your search

+3 -1
@@ -430,7 +430,9 @@ src/editor/soundfx/ SoundFxEditor (#311: the graph, a sound to try it on, Pla
out apart from the drawing), CompressorFace + nodeFaces (#380: the panel as what a
Compressor node shows in the graph, #381 the EQ's as well), GainPanel + GainFace (#384:
the Gain as an orange plate with one knob, `drawPlate` shared with the Compressor),
nodeParamDrag (a knob's drag as one undo
ChipPanel + ChipFace + chipView (#386: the Chip of an instrument as a device, its
wave and its pitch over a note worked out apart from the drawing, the
Compressor's `Lever` for "follow note"), nodeParamDrag (a knob's drag as one undo
step, for the tab and the node), nodeTabs (which nodes open a tab of their own)
src/editor/instrument/ InstrumentEditor (#331: the graph over the keys, Preset, Randomize, Mutate, Audition),
PianoKeyboard + keys (the keys drawn, played by the pointer and the computer keyboard)
+1 -1
@@ -19,7 +19,7 @@ php tests/php/accounts.test.php # the API's accoun
php tests/php/snapshots.test.php # the snapshot store (#231), the same way
php tests/php/releases.test.php # the release store (#266), the same way
php tests/php/files.test.php # uploaded files in a folder per account (#344), the same way
node tools/seed-e2e.mjs && node tools/e2e.mjs # 1961 editor checks, screenshots in /tmp/gm-e2e-*.png
node tools/seed-e2e.mjs && node tools/e2e.mjs # 1962 editor checks, screenshots in /tmp/gm-e2e-*.png
GM_STEPS=20 node tools/e2e.mjs # or 1-12, or 6,20 — a subset while working on one step
./e2e.sh start [GM_STEPS] # the same run detached, see below
./e2e.sh status # live progress, or the last run's result
+20 -1
@@ -193,6 +193,25 @@ from 0 to 1, the Chip counts in Hz, semitones and seconds.
same module. Every sample is worked out 8 times and averaged, as sfxr does, which takes the worst
of the aliasing off a raw wave. Without the worklet a Chip is silent and its note ends at once.
The frequency follows sfxr (Tomas Pettersson, MIT licence) as jsfxr (public domain) ports it.
- **The node is a device** (#386), 840x280 like the Compressor's, in the warm grey of a handheld
console. The inputs are on the left, `out` on the right, and everything is set right in the graph:
- a **button for each wave** at the top, the one playing lit, and the **Follow note** lever
beside them;
- two green screens. **Wave** draws two periods of the wave as loud as it plays, a square at its
duty. **Pitch over a note** draws what slide, delta slide, vibrato, arpeggio and repeat make of
the pitch, in semitones from where it starts: three rounds of a repeat, else at least a second,
and a quarter past the end when the note falls below *Min frequency*, with that line dashed and
the time it ends written at the top. It starts from *Frequency*, or from A4 while it follows the
note, which only moves where it ends;
- a **chrome knob** for every number, grouped *Oscillator*, *Slide*, *Vibrato*, *Arpeggio* and
*Repeat*. A drag is one undo step, a double-click goes back to the default, the wheel zooms the
graph. Frequencies and times give their low end most of the turn; *Duty sweep*, the slide and
the arpeggio have 0 straight up and the small numbers either way near it. *Min frequency* and
*Repeat* at 0 read `off`.
What does nothing as things stand is faded, a connected number is greyed and can not be turned.
The screens are drawn from the settings, not listened to, so they also show a Chip nothing plays.
The [presets](#presets-randomize-and-mutate) give a Chip five columns of room.
- **Measured** (2026-10-06, e2e 34, Chrome offline on the Windows runner): a square at 220 Hz with
a Pitch of 12 and a duty of 0.25, started at 0.25 s, was silent up to sample 12000 and then made
329 periods in 0.75 s, up 0.249 of each, peak 0.5. Sliding from 440 Hz down two octaves a second
@@ -352,6 +371,6 @@ the game's, so a slow frame or a busy page never moves a note. The Pattern tab p
## Not yet
No swing (#372). No view of the waveform a Chip makes, no import of sfxr or jsfxr codes, no WAV
No swing (#372). No import of sfxr or jsfxr codes, no WAV
export (#340). An Envelope shapes notes of an instrument only, not a sound played through a sound
FX. Notes can not be played from an `.mid` file or a MIDI keyboard.