This shows you the differences between two versions of the page.
|
pm:prj2026:bianca.popa1106:mihai.brisculescu [2026/05/27 20:52] mihai.brisculescu [1. Microcontroller — Teensy 4.0] |
pm:prj2026:bianca.popa1106:mihai.brisculescu [2026/05/28 16:17] (current) mihai.brisculescu [4. Audio Output — Triple I2S Architecture] |
||
|---|---|---|---|
| Line 246: | Line 246: | ||
| <note warning> | <note warning> | ||
| **Required breakout rework:** The Adafruit 3006 breakout (and clones) includes a 1 MΩ SMD pull-up between ''SD_MODE'' and the chip's V_DD (5 V). This must be **desoldered from each breakout before installation** — otherwise the GPIO LOW state would fight the pull-up and shutdown never engages. Once removed, only the chip's internal 100 kΩ pull-down remains. | **Required breakout rework:** The Adafruit 3006 breakout (and clones) includes a 1 MΩ SMD pull-up between ''SD_MODE'' and the chip's V_DD (5 V). This must be **desoldered from each breakout before installation** — otherwise the GPIO LOW state would fight the pull-up and shutdown never engages. Once removed, only the chip's internal 100 kΩ pull-down remains. | ||
| - | |||
| - | **Do NOT bridge any breakout channel-selection solder jumpers** (''L'', ''R'', ''Mono''). If bridged, they hard-tie ''SD_MODE'' to the chip's 5 V VDD, and driving the GPIO LOW would short 5 V to GND through the 3.3 V GPIO pin and damage the Teensy. | ||
| </note> | </note> | ||
| Line 376: | Line 374: | ||
| | 23 / A9 | ''JACK_GUITAR_DET'' | GPIO input | Plain digital input. 100 kΩ pull-up + RC LPF (4.7 kΩ / 1 µF). | | | 23 / A9 | ''JACK_GUITAR_DET'' | GPIO input | Plain digital input. 100 kΩ pull-up + RC LPF (4.7 kΩ / 1 µF). | | ||
| | 24–33 | NC | — | Back-side pads, unused. | | | 24–33 | NC | — | Back-side pads, unused. | | ||
| - | | VIN | +5V input | Power | From MT3608 (VIN-VUSB trace cut on the Teensy). | | + | | VIN | +5V input | Power | From MT3608 (Teensy's VIN-VUSB trace / USB cable's red wire cut). | |
| | GND | Ground | Power | Connected to ''GND'' (digital) domain. | | | GND | Ground | Power | Connected to ''GND'' (digital) domain. | | ||
| | 3.3V | 3.3V output | Power | From Teensy LDO → shift registers, joystick, both pots, OLED, UDA1334A breakout, all pull-ups, battery-sense divider. | | | 3.3V | 3.3V output | Power | From Teensy LDO → shift registers, joystick, both pots, OLED, UDA1334A breakout, all pull-ups, battery-sense divider. | | ||
| - | ==== Photos / proof-of-life ==== | + | ==== Photos ==== |
| - | + | ||
| - | [[https://youtu.be/l58ewZxxkRw|Mini Synth Demo]] | + | |
| {{ :pm:prj2026:bianca.popa1106:img_4742.jpg?nolink&800 }} | {{ :pm:prj2026:bianca.popa1106:img_4742.jpg?nolink&800 }} | ||
| + | |||
| + | {{ :pm:prj2026:bianca.popa1106:img_4744.jpeg?nolink&800 }} | ||
| + | |||
| + | {{ :pm:prj2026:bianca.popa1106:img_4746.jpeg?nolink&800 }} | ||
| {{ :pm:prj2026:bianca.popa1106:img_4838.jpg?nolink&800 }} | {{ :pm:prj2026:bianca.popa1106:img_4838.jpg?nolink&800 }} | ||
| Line 473: | Line 473: | ||
| <code> | <code> | ||
| - | IDLE ─trigger─▶ ARMED ──count-in──▶ RECORDING ─trigger─▶ PLAYING | + | IDLE ─trigger─▶ ARMED ─count-in─▶ RECORDING ─trigger─▶ PLAYING |
| - | │ | + | │ ▲ |
| - | ┌──trigger──┐ │ | + | │ │ trigger |
| - | │ ▼ │ | + | trigger │ │ |
| - | ARMED_OVERDUB ── wrap ──▶ OVERDUB ┘ | + | ▼ │ |
| + | ARMED_OVERDUB | ||
| + | │ | ||
| + | wrap | ||
| + | ▼ | ||
| + | OVERDUB | ||
| - | long-hold trigger from PLAYING / OVERDUB ─▶ END_PROMPT (Save / Clear / Cancel) | + | PLAYING / OVERDUB ─long-hold trigger─▶ END_PROMPT |
| + | Save / Clear / Cancel | ||
| </code> | </code> | ||
| Line 649: | Line 655: | ||
| * **Reset defaults test.** Settings → Reset → Reset. Confirm voice count = 8, concert pitch = 440 Hz, scale = Chromatic, all effects off, sine waveform selected. Confirm BPM / metronome / metronome volume are **NOT** reset (the looper EEPROM blob is intentionally preserved). | * **Reset defaults test.** Settings → Reset → Reset. Confirm voice count = 8, concert pitch = 440 Hz, scale = Chromatic, all effects off, sine waveform selected. Confirm BPM / metronome / metronome volume are **NOT** reset (the looper EEPROM blob is intentionally preserved). | ||
| - | ==== Demo video ==== | + | ==== Demo videos ==== |
| - | <note tip> | + | [[https://youtu.be/l58ewZxxkRw|Mini Synth Demo]] |
| - | A demo video covering: boot splash, playing a few notes on each instrument category, sweeping the FX pot, recording + overdubbing a loop, saving it to SD, plugging in headphones and confirming the speakers mute — will be uploaded here before the final deadline. | + | |
| - | </note> | + | [[https://youtu.be/we-T9mZoAho|Mini Synth - Aria Math Demo]] |
| + | [[https://youtu.be/KdVtQQpLlJo|Mini Synth - Moog City 3 Demo]] | ||
| ===== Results ===== | ===== Results ===== | ||
| Line 685: | Line 692: | ||
| * Hardware bring-up problem-solving — the jack-detect issue with the AC-coupled UDA1334A outputs was a real "oh no, the board doesn't work" moment that turned into a clean 10 kΩ-per-jack fix once I traced it. | * Hardware bring-up problem-solving — the jack-detect issue with the AC-coupled UDA1334A outputs was a real "oh no, the board doesn't work" moment that turned into a clean 10 kΩ-per-jack fix once I traced it. | ||
| - | If I were to do it again, I'd probably move the metronome's audio path into a dedicated I2S channel rather than ''master.port1'' so the click is even more obviously separated from the looper record bus. And I'd add a real Concert-Pitch fine-tuner (cents) on top of the existing 1 Hz step. But for a one-semester project I'm pretty happy with where it landed. | + | If I were to do it again, I’d do better PCB routing, use discrete components instead of daughter boards, go with SMD instead of THT, make the PCB easy to install in a 3D printed enclosure, design an enclosure, add velocity sensitive keys, add better power management, use SDIO instead of SPI for SD card communication, find a way to record longer loops, maybe using a different type of memory. I'd also probably move the metronome's audio path into a dedicated I2S channel rather than ''master.port1'' so the click is even more obviously separated from the looper record bus. And I'd add a real Concert-Pitch fine-tuner (cents) on top of the existing 1 Hz step. But for a one-semester project I'm pretty happy with where it landed. |
| ===== Download ===== | ===== Download ===== | ||
| Line 696: | Line 703: | ||
| </note> | </note> | ||
| - | * Full schematic: {{:pm:prj2026:bianca.popa1106:minisynth_brisculescu.pdf|minisynth_brisculescu.pdf}} | + | * Firmware source code: [[https://github.com/MidsoftEntertainment/MiniSynth-public|MiniSynth Public Repo]] |
| + | * Full schematic: {{:pm:prj2026:bianca.popa1106:minisynth_brisculescu.pdf|MiniSynth.pdf}} | ||
| + | * Example loop: {{:pm:prj2026:bianca.popa1106:loop_002.wav|LOOP_002.WAV}} | ||
| ===== Journal ===== | ===== Journal ===== | ||