{"id":21221858,"url":"https://github.com/dctucker/midibus","last_synced_at":"2025-07-10T13:33:02.266Z","repository":{"id":79331079,"uuid":"159881006","full_name":"dctucker/midibus","owner":"dctucker","description":"My implementation of a MIDI bus to connect multiple synths","archived":false,"fork":false,"pushed_at":"2022-03-08T20:57:03.000Z","size":1023,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-05T14:03:42.721Z","etag":null,"topics":["linux","midi","raspberry-pi","usb"],"latest_commit_sha":null,"homepage":"","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/dctucker.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-11-30T21:33:57.000Z","updated_at":"2023-01-27T06:10:53.000Z","dependencies_parsed_at":null,"dependency_job_id":"f960761f-ce78-4591-a95f-f1a39a395d18","html_url":"https://github.com/dctucker/midibus","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dctucker/midibus","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dctucker%2Fmidibus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dctucker%2Fmidibus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dctucker%2Fmidibus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dctucker%2Fmidibus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dctucker","download_url":"https://codeload.github.com/dctucker/midibus/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dctucker%2Fmidibus/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264585371,"owners_count":23632646,"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":["linux","midi","raspberry-pi","usb"],"created_at":"2024-11-20T22:34:43.932Z","updated_at":"2025-07-10T13:33:02.260Z","avatar_url":"https://github.com/dctucker.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# midibus\nMy implementation of a MIDI bus to connect multiple synths\n\n## Legacy implementation\n\nUses `udev` rules to make ALSA sequencer connections when plugged in, updates the UI when changes are made.\n\n## Latest incarnation\n\nStill uses `udev` rules, but uses the ALSA RawMidi Interface to listen for\nincoming messages and relay them to output devices in a threaded server which\nhandles SIGHUP when a new device is connected.\n\n### But why?\n\n- I want to get as close to parsing actual MIDI messages as possible\nwithout all the extra metadata attached to each event by ALSA.\n- This way I can implement my own filtering and custom macros.\n  - Relay realtime messages from the Deluge, send all realtime messages from the\nElectribe to `/dev/null`.\n  - Gracefully handle forwarding system exclusive messages so I can program my\nJUNO from the computer.\n\n## What does my setup look like?\n\nThe concept of a \"main keyboard\" has stuck with me, and for this purpose I\ncurrently use the Roland JUNO-DS 88. Connected to my Raspberry Pi running this\nsoftware, I have a Synthstrom Audible Deluge for\nsequencing and sound design, a Moog Little Phatty Stage II for warm analog synth\nsounds, a Novation Circuit for synth layering, a Korg Electribe Sampler for\neffects and drum layering, and finally an iConnectivity mio that acts as a\nbridge between my synth rig and my DAW computer.\n\n## Screenshot\n\n\u003cimg src=\"images/fbcat.png\" /\u003e\n\n## Client/server\n\nCurrently the client is pretty simple; it loads configuration via socket stream.\nIt will change in the future to be more interactive. But hey, at least it\nlooks good, and you can see the current configuration presented visually.\n\nThe server has a thread for each input device, and maintains state for each\noutput device in shared memory.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdctucker%2Fmidibus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdctucker%2Fmidibus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdctucker%2Fmidibus/lists"}