{"id":21866904,"url":"https://github.com/rootmos/midi","last_synced_at":"2026-05-08T19:33:41.097Z","repository":{"id":82433890,"uuid":"54319390","full_name":"rootmos/midi","owner":"rootmos","description":"Music and MIDI processing tools","archived":false,"fork":false,"pushed_at":"2020-09-18T19:54:27.000Z","size":113,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-09-02T11:34:43.199Z","etag":null,"topics":["alsa","linux","midi","raspberry-pi"],"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/rootmos.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":"2016-03-20T13:36:07.000Z","updated_at":"2020-09-18T19:54:29.000Z","dependencies_parsed_at":"2023-06-15T16:15:14.994Z","dependency_job_id":null,"html_url":"https://github.com/rootmos/midi","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/rootmos/midi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rootmos%2Fmidi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rootmos%2Fmidi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rootmos%2Fmidi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rootmos%2Fmidi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rootmos","download_url":"https://codeload.github.com/rootmos/midi/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rootmos%2Fmidi/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32794716,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-08T08:22:46.396Z","status":"ssl_error","status_checked_at":"2026-05-08T08:22:45.650Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["alsa","linux","midi","raspberry-pi"],"created_at":"2024-11-28T05:07:53.468Z","updated_at":"2026-05-08T19:33:41.081Z","avatar_url":"https://github.com/rootmos.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Music and MIDI processing tools\n\nThese are some tools I use in [my synthesizer setup](https://soundcloud.com/rootmos)\nto make everything connect and correctly talk to each other.\nI deploy the MIDI tools on a [Raspberry Pi](https://www.raspberrypi.org/) using\nthe [Single Purpose Linux distribution](https://github.com/rootmos/spl)\nto get a [low-latency kernel](http://www.tedfelix.com/linux/linux-midi.html#installing-a-low-latency-kernel).\n\nFor a more feature rich (but less bare-metal) set of tools I recommend: [mididings](http://das.nasophon.de/mididings/).\n\n## MIDI processing tools\n* [midi.c](src/midi.c) - minimal [ALSA MIDI sequencer](https://www.alsa-project.org/alsa-doc/alsa-lib/seq.html) event loop\n* [forward](src/forward.c) - forward only clock and filter out/merge selected channels\n  - some synthesizers I use aren't too happy being bombarded with irrelevant\n    MIDI-messages, so I use this to make them keep up\n* [aclient](src/aclient.c) - lookup an ALSA sequencer client based on USB-port\n  - ALSA sequencer client id:s are arbitrary, USB ports are not\n  - I use this to automatically set up the routing [on boot](root/etc/init.d/rc.local)\n* [menu](src/menu.c) - a MIDI-based menu to start/stop and control tempo\n  - hold A0 + press B0: start clock\n  - hold A0 + press C1: stop clock\n  - hold A0 + press D1: set tempo based on value of next note\n  - hold A0 + press C#1: decrease tempo\n  - hold A0 + press D#1: increase tempo\n  - implemented by emitting clock ticks, but a hack away from controlling\n    external sequencers\n* [microGranny](src/microGranny.c) - personal hack to play a\n  [microGranny](https://bastl-instruments.com/instruments/microgranny/)\n  using the drum sequencer of a [BeatStep Pro](https://www.arturia.com/beatstep-pro)\n\n## Music tools\n* [piano-randomizer](scripts/piano-randomizer) - piano practice tool\n  - randomly select a scale, base note and starting finger\n  - randomly select chord progressions\n  - overlay display using [conky](https://github.com/brndnmtthws/conky)\n* [microGranny](scripts/microGranny) - tiny command line interface for\n  converting and uploading samples to the [microGranny](https://bastl-instruments.com/instruments/microgranny/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frootmos%2Fmidi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frootmos%2Fmidi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frootmos%2Fmidi/lists"}