{"id":13733804,"url":"https://github.com/todbot/macropadsynthplug","last_synced_at":"2026-03-05T22:34:17.654Z","repository":{"id":66886474,"uuid":"578806735","full_name":"todbot/macropadsynthplug","owner":"todbot","description":"Turn StemmaQT port by into Audio Out + MIDI In ","archived":false,"fork":false,"pushed_at":"2024-11-23T00:47:51.000Z","size":4770,"stargazers_count":42,"open_issues_count":0,"forks_count":2,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-05-08T02:18:26.542Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc0-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/todbot.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-12-15T23:31:59.000Z","updated_at":"2025-03-04T12:42:04.000Z","dependencies_parsed_at":"2023-02-22T06:45:13.818Z","dependency_job_id":"a1d3a938-5e45-4b91-a00b-c6a287cabf2a","html_url":"https://github.com/todbot/macropadsynthplug","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/todbot%2Fmacropadsynthplug","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/todbot%2Fmacropadsynthplug/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/todbot%2Fmacropadsynthplug/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/todbot%2Fmacropadsynthplug/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/todbot","download_url":"https://codeload.github.com/todbot/macropadsynthplug/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254230826,"owners_count":22036250,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-03T03:00:49.241Z","updated_at":"2026-03-05T22:34:12.612Z","avatar_url":"https://github.com/todbot.png","language":"Python","funding_links":[],"categories":["MacroPad Hardware"],"sub_categories":[],"readme":"# MacroPadSynthPlug!\n\nTurn MacroPad RP2040's StemmaQT port into Audio Out + MIDI In\n\n\u003ca href=\"https://www.tindie.com/products/todbot/macropadsynthplug-turn-rp2040-into-a-synth/\"\u003e\u003cimg src=\"https://d2ss6ovg47m0r5.cloudfront.net/badges/tindie-smalls.png\" alt=\"PicoTouch on Tindie\" width=\"200\" height=\"55\"\u003e\u003c/a\u003e\n\nDemo video on Youtube:\n[![CircuitPython drum machine demo](https://img.youtube.com/vi/jMKC_18M17U/maxresdefault.jpg)](https://www.youtube.com/watch?v=jMKC_18M17U)\n\n\n## What is this?\n\nThe [Adafruit MacroPad RP2040](https://learn.adafruit.com/adafruit-macropad-rp2040/overview)\nis really fun and could be a great musical instrument,\nwith its 12 keys, rotary encoder, OLED display, RP2040 chip, and 8MB of flash storage.\n\nIf it only had a way to get MIDI into it and Audio out of it!\nWell now you can, with MacroPadSynthPlug!\n\nMacroPadSynthPlug is a small board that plugs into the StemmaQT port (but is not I2C!)\nand gives you [TRS-A MIDI In](https://minimidi.world/) and Audio line out.\n\nThe MacroPad RP2040 can now be a stand-alone MIDI synth!\n\nExamples provided for both [CircuitPython](https://circuitpython.org/) and [Arduino](https://arduino-pico.readthedocs.io/en/latest/):\n\n\n* __drum_machine__ - CircuitPython-based drum sequencer ([demo1](https://youtu.be/jMKC_18M17U),[demo2](https://youtu.be/bJwyUjxc6VM) )\n* __dronesynth__ - Arduino Mozzi 12-oscillator drone synth ([demo](https://youtu.be/kLwP-vyvtLM))\n* __remixer__ - CircuitPython-based song remixer ([source](https://github.com/todbot/macropadsynthplug/tree/main/circuitpython/remixer))\n* __monosynth1__ - Arduino Mozzi 2-oscillator bass monosynth w/ resonant low-pass filter ([source](https://github.com/todbot/macropadsynthplug/tree/main/arduino/monosynth1))\n\n\n## How?\n\nThe [Raspberry Pi RP2040 chip](https://www.raspberrypi.com/documentation/microcontrollers/rp2040.html)\non the MacroPad RP2040 is amazingly configurable.\n\nNormally a port like the StemmaQT I2C port would only be usable as an I2C bus, or maybe as GPIO pins.\n\nBut with the MacroPad RP2040, the two StemmaQT pins are:\n\n- SDA - GP20 - UART1 TX - PWM2B\n- SCL - GP21 - UART1 RX - PWM2A\n\nThis means we could use the StemmaQT port for all sorts of musical things, like:\n\n- MIDI In / Out!\n- Stereo PWM audio out!\n- MIDI In / Audio Out  (Hey this is what MacroPadSynthPlug does)\n\nTo get audio out, all we need is a small PWM filtering circuit.\nTo get MIDI in, a small optoisolator circuit is needed.\n\nMacroPadSynthPlug is just this.  It is wired like so:\n\n- StemmaQT SCL -- TRS-A MIDI input\n- StemmaQT SDA -- audio PWM out\n\n\nThis is sort of an \"abuse\" of the StemmaQT port, as it's meant only for I2C devices.\nBut it's safe, will not damage other StemmaQT devices,\nbut it does mean you \"lose\" the StemmaQT port for it's normal use.\n\n\n## Why?\n\nSeems like fun?  I have built many RP2040-based little hardware synths, like:\n- [PicoStepSeq](https://github.com/todbot/picostepseq)\n- [picotouchsynth](https://github.com/todbot/picotouchsynth)\n- [plinkykeeb](https://github.com/todbot/plinkykeeb)\n- [seeknobs](https://github.com/todbot/seeknobs)\n\nand wanted the MacroPad RP2040 to join in the fun.\n\n## Does this work for other boards with StemmaQT?\n\nShort answer: not really\n\nFor any non-RP2040-based board, this almost definitely will not work.\n\nAnd while the RP2040 is a very configuraable, not all functions are availbe on all pins.\nSo it probably won't work on other RP2040-based boards too.  For instance:\n\n- QTPy RP2040?  Sorta. Its StemmaQT SDA/SCL is on GPIO22/23, which has PWM but no UART RX\n- KB2040 \"Keeboar\"? Yes! Its StemmaQT SDA/SCL is on GPIO12/13, which has PWM \u0026 UART0 RX!\n\n\n## Are these for sale?\n\nYes! [Get one now at Tindie!](https://www.tindie.com/products/todbot/macropadsynthplug-turn-rp2040-into-a-synth/)\n\n## Action shots\n\n\u003cimg width=700 src=\"./docs/img_production1.jpg\"\u003e\n\n\u003cimg width=700 src=\"./docs/img1.jpg\"\u003e\n\u003cimg width=700 src=\"./docs/img2.jpg\"\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftodbot%2Fmacropadsynthplug","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftodbot%2Fmacropadsynthplug","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftodbot%2Fmacropadsynthplug/lists"}