diff --git a/Architecture.md b/Architecture.md index 4ab5cb2..db58510 100644 --- a/Architecture.md +++ b/Architecture.md @@ -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) diff --git a/Development.md b/Development.md index bb40fa9..8898762 100644 --- a/Development.md +++ b/Development.md @@ -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 diff --git a/Instruments.md b/Instruments.md index 68d0703..8fcf43e 100644 --- a/Instruments.md +++ b/Instruments.md @@ -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.