Skip to content

Commit d2e93a3

Browse files
authored
Merge pull request #118 from cjsekl/main
v1.1 - add chord sequencer with web ui
2 parents 48cbe13 + 959ff38 commit d2e93a3

9 files changed

Lines changed: 2072 additions & 74 deletions

File tree

releases/21_resonator/.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
11
# Build directory - ignore everything except .uf2 files
22
/build/*
33
!/build/*.uf2
4+
5+
.claude/*
6+
CLAUDE.md

releases/21_resonator/CMakeLists.txt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,15 @@ target_link_libraries(resonator
3737
pico_unique_id
3838
)
3939

40+
# Run from RAM to prevent flash access delays during audio
41+
pico_set_binary_type(resonator copy_to_ram)
42+
4043
# Create map/bin/hex/uf2 files
4144
pico_add_extra_outputs(resonator)
4245

4346
target_compile_definitions(resonator PUBLIC PICO_XOSC_STARTUP_DELAY_MULTIPLIER=64)
4447

45-
# Enable USB output for debugging (optional)
48+
# Enable USB stdio
4649
pico_enable_stdio_usb(resonator 1)
4750
pico_enable_stdio_uart(resonator 0)
4851

releases/21_resonator/README.md

Lines changed: 54 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -27,51 +27,75 @@ The sympathetic resonator simulates the behavior of strings that vibrate in resp
2727

2828
### Switch
2929
- **Up**: Tuning mode - only the fundamental string sounds
30-
- **Down**: Cycles through eleven chord modes
30+
- **Middle**: Normal operation
31+
- **Down (momentary)**: Advance to next chord in progression
32+
- **Down (hold 3 seconds)**: Reset to factory defaults (all 18 chords)
33+
34+
### Pulse Inputs
35+
- **Pulse In 1**: Trigger string excitation (pluck with noise burst)
36+
- **Pulse In 2**: Advance to next chord in progression
37+
38+
## Chord Modes
39+
40+
18 chord voicings are available:
3141

32-
#### Chord Modes
3342
- **HARMONIC**: Harmonic series - 1:1, 2:1, 3:1, 4:1
3443
- **FIFTH**: Stacked fifths - 1:1, 3:2, 2:1, 3:1
35-
- **MAJOR7**: Major 7th chord - 1:1, 5:4, 3:2, 15:8
36-
- **MINOR7**: Minor 7th chord - 1:1, 6:5, 3:2, 9:5
44+
- **MAJOR**: Major triad - 1:1, 5:4, 3:2, 2:1
45+
- **MAJOR6**: Major 6th - 1:1, 5:4, 3:2, 5:3
46+
- **MAJOR7**: Major 7th - 1:1, 5:4, 3:2, 15:8
47+
- **DOM7**: Dominant 7th - 1:1, 5:4, 3:2, 9:5
48+
- **ADD9**: Major add 9 - 1:1, 5:4, 3:2, 9:4
49+
- **MAJOR10**: Major 10th - 1:1, 5:4, 3:2, 5:2
50+
- **MINOR**: Minor triad - 1:1, 6:5, 3:2, 2:1
51+
- **MINOR7**: Minor 7th - 1:1, 6:5, 3:2, 9:5
52+
- **MIN9**: Minor add 9 - 1:1, 6:5, 3:2, 9:4
3753
- **DIM**: Diminished - 1:1, 6:5, 36:25, 3:2
54+
- **SUS2**: Suspended 2nd - 1:1, 9:8, 3:2, 2:1
3855
- **SUS4**: Suspended 4th - 1:1, 4:3, 3:2, 2:1
39-
- **ADD9**: Major add 9 - 1:1, 5:4, 3:2, 9:4
40-
- **TANPURA_PA**: Tanpura Pa drone - 1:1, 3:2, 2:1, 4:1 (Sa, Pa, Sa', Sa'')
41-
- **TANPURA_MA**: Tanpura Ma drone - 1:1, 4:3, 2:1, 4:1 (Sa, Ma, Sa', Sa'')
42-
- **TANPURA_NI**: Tanpura Ni drone - 1:1, 15:8, 2:1, 4:1 (Sa, Ni, Sa', Sa'')
43-
- **TANPURA_NI_KOMAL**: Tanpura ni drone - 1:1, 9:5, 2:1, 4:1 (Sa, ni, Sa', Sa'')
4456

45-
### Pulse Inputs
46-
- **Pulse In 1**: Trigger string excitation (pluck with noise burst)
47-
- **Pulse In 2**: Reserved for future use
57+
### Tanpura Tunings
58+
- **TANPURA PA**: Sa, Pa, Sa', Sa'' - 1:1, 3:2, 2:1, 4:1
59+
- **TANPURA MA**: Sa, Ma, Sa', Sa'' - 1:1, 4:3, 2:1, 4:1
60+
- **TANPURA NI**: Sa, Ni, Sa', Sa'' - 1:1, 15:8, 2:1, 4:1
61+
- **TANPURA NI KOMAL**: Sa, ni, Sa', Sa'' - 1:1, 9:5, 2:1, 4:1
62+
63+
## Web Editor
64+
65+
A browser-based chord editor lets you customize which chords are in your progression and their order.
66+
67+
### Using the Editor
68+
1. Connect your Resonator via USB
69+
2. Open the editor at [johaneklund.io/resonator](https://johaneklund.io/resonator)
70+
3. Click **Connect USB** and select `Pico` (may appear as `ttyACM0` on Linux)
71+
4. Drag chords from the palette to build your progression
72+
5. Click **Send to Device** to save
73+
74+
Changes persist on the module even after power off.
75+
76+
### Requirements
77+
- Chrome or Edge browser (Web Serial API required)
78+
- USB connection to Resonator
4879

4980
## LED Indicators
5081

51-
All 6 LEDs indicate the current chord mode:
52-
53-
| Mode | LEDs |
54-
|------|------|
55-
| HARMONIC | 0 |
56-
| FIFTH | 1 |
57-
| MAJOR7 | 2 |
58-
| MINOR7 | 3 |
59-
| DIM | 4 |
60-
| SUS4 | 5 |
61-
| ADD9 | 0 + 5 |
62-
| TANPURA_PA | 1 + 4 |
63-
| TANPURA_MA | 2 + 3 |
64-
| TANPURA_NI | 0 + 3 |
65-
| TANPURA_NI_KOMAL | 2 + 5 |
82+
The 6 LEDs show the current position in the chord progression (0-17). Single LEDs indicate positions 0-5, LED pairs indicate positions 6-17.
6683

6784
## Building
6885

69-
Use the standard Workshop System build process:
7086
```bash
71-
./build.sh
87+
mkdir build && cd build
88+
cmake ..
89+
make
7290
```
7391

74-
This will generate a `resonator.uf2` file in the `build/` directory.
92+
This generates `resonator.uf2` in the `build/` directory.
93+
94+
## Flashing
95+
96+
1. Hold BOOTSEL on the Pico while connecting USB
97+
2. Copy `resonator.uf2` to the mounted drive
98+
3. The Pico will reboot automatically
7599

76100
## References
77101

releases/21_resonator/RELEASE_NOTES.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
# v1.1
2+
3+
2026-02-04
4+
5+
This versions adds chord change from pulse trigger as well as a browser UI for picking chords and their order.
6+
17
# v1.0.1
28

39
2026-01-30
27 KB
Binary file not shown.

0 commit comments

Comments
 (0)