{"id":18560786,"url":"https://github.com/eepp/avr-midi-footswitch","last_synced_at":"2025-04-10T02:31:09.727Z","repository":{"id":9500399,"uuid":"11393350","full_name":"eepp/avr-midi-footswitch","owner":"eepp","description":"MIDI footswitch using an AVR µC","archived":false,"fork":false,"pushed_at":"2019-03-23T17:48:01.000Z","size":288,"stargazers_count":7,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-24T15:41:50.201Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eepp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-07-13T19:53:42.000Z","updated_at":"2023-02-02T05:34:26.000Z","dependencies_parsed_at":"2022-09-08T06:13:09.945Z","dependency_job_id":null,"html_url":"https://github.com/eepp/avr-midi-footswitch","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/eepp%2Favr-midi-footswitch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eepp%2Favr-midi-footswitch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eepp%2Favr-midi-footswitch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eepp%2Favr-midi-footswitch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eepp","download_url":"https://codeload.github.com/eepp/avr-midi-footswitch/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248144186,"owners_count":21054881,"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-11-06T22:04:35.192Z","updated_at":"2025-04-10T02:31:09.214Z","avatar_url":"https://github.com/eepp.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"AVR MIDI footswitch\n===================\nThis is _AVR MIDI footswitch_, a configurable MIDI output footswitch\nmodule which uses an AVR MCU (Arduino MCUs). The firmware weights only\nabout 700 bytes (ATmega88PA, four switches)!\n\nA MIDI footswitch module is a module with switches you can press with\nyour foot. Each time you press a switch, the module sends a MIDI CC\n(control change) to the MIDI output. It's mostly used by musicians,\nespecially guitarists and bass players, with software effects and stomp\nboxes like Guitarix, AmpliTube, and Guitar Rig.\n\nThe MIDI footswitch module is fully configurable (see `config.h` and\n`config.c`):\n\n* Switch debounce time\n* Number of footswitches\n* UART configuration to adapt to your MCU\n* Optional LED animation at power-up\n* Per footswitch:\n  * Whether the switch is a momentary or an on-off switch\n  * Switch's data direction register, pin register, and pin position to\n    use\n  * MIDI channel, CC number, and CC values for on/off states to send\n  * Whether this footswitch has an associated LED or not\n  * LED's data direction register, port register, and pin position to\n    use\n\nCircuit example:\n\n![Circuit diagram](https://raw.github.com/eepp/avr-midi-footswitch/master/circuit/avr-midi-footswitch.png)\n\nA MIDI footswitch module doesn't need a lot of components: the MCU, a\nfew capacitors (for decoupling and to support the crystal oscillator), a\ncrystal oscillator (I used 8 MHz), pull-down resistors (10 kΩ) and the\nactual switches. The MIDI output also needs a 220 Ω resistor and a\nsocket. If you want LEDs to indicate each footswitch's current state,\nyou also need a few more resistors to limit the current.\n\nConfigure\n---------\nBefore you compile the firmware, you need to configure a few things:\n\nIn `Makefile`:\n\n* Set the `F_CPU` variable to match your MCU's frequency (don't forget the `UL` suffix).\n* Modify the `MCU` variable to match your exact AVR MCU model.\n\nYou can also modify the `PROGFLAGS` if you intend to program your chip\nwith something else than USBasp (but why would you do this?).\n\nEdit `config.h` and `config.c` to configure the firmware. The `g_cfg`\narray's size in `config.c` must match the value of `CFG_NB_FS`.\n\nCompile\n-------\n\n    make\n\nProgram\n-------\n\n    make program\n\nUse\n---\nPlug the MIDI cable to your MIDI input (sound card, cheap USB MIDI\ncable, etc.), power on the module, and enjoy the device with your\nfavorite compatible software.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feepp%2Favr-midi-footswitch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feepp%2Favr-midi-footswitch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feepp%2Favr-midi-footswitch/lists"}