{"id":34694193,"url":"https://github.com/polygon/mucap","last_synced_at":"2026-05-22T20:33:07.151Z","repository":{"id":325803620,"uuid":"1100477539","full_name":"polygon/mucap","owner":"polygon","description":"Retrospective MIDI Recording Plugin","archived":false,"fork":false,"pushed_at":"2025-12-24T19:56:35.000Z","size":299,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-26T10:41:13.727Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/polygon.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-20T10:31:51.000Z","updated_at":"2025-12-24T19:55:51.000Z","dependencies_parsed_at":"2026-01-03T12:08:39.304Z","dependency_job_id":null,"html_url":"https://github.com/polygon/mucap","commit_stats":null,"previous_names":["polygon/mucap"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/polygon/mucap","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polygon%2Fmucap","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polygon%2Fmucap/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polygon%2Fmucap/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polygon%2Fmucap/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/polygon","download_url":"https://codeload.github.com/polygon/mucap/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polygon%2Fmucap/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33366520,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-21T12:23:38.849Z","status":"online","status_checked_at":"2026-05-22T02:00:06.671Z","response_time":265,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2025-12-24T22:27:24.058Z","updated_at":"2026-05-22T20:33:02.142Z","avatar_url":"https://github.com/polygon.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Mucap\n\nRetrospective MIDI Recording Plugin\n\n![Mucap Screenshot](/docs/img/mucap.png)\n\n## Features\n\n* Retrospective MIDI Recording\n* CLAP, VST3, Standalone\n* Sample accurate recording\n* Records all basic MIDI events on all channels\n* Bar markers used for selection snapping\n\n## Installation\n\n### NixOS / Flakes\n\nAdd the Mucap flake to your flake inputs. Make sure that you override the `nixpkgs` input to follow the Nixpkgs instance that you use for all your audio packages. Otherwise, you will risk library incompatibilities.\n\n```\nmucap = {\n  url = \"github:polygon/mucap\";\n  inputs.nixpkgs.follows = \"nixpkgs\";\n};\n```\n\nNow you can add the package to your system, e.g.:\n\n```\nenvironment.systemPackages = [ mucap.packages.${system}.mucap ];\n```\n\nIf not already done, make sure the VST3 and CLAP paths are exported to `/run/current-system/sw`:\n\n```\nenvironment.pathsToLink = [ \"/lib/vst3\" \"/lib/clap\" ];\n```\n\nIf you are a user of [audio.nix](https://github.com/polygon/audio.nix), mucap is also re-exported there.\n\n### Debian / Ubuntu based\n\nGet the DEB archive from the [latest release](https://github.com/polygon/mucap/releases/latest) and install it, e.g.:\n\n```\nsudo apt install ./mucap-0.9.0-amd64.deb\n```\n\n## Usage\n\nAdd Mucap to a track that receives MIDI (or use Jack to connect a MIDI input if you run standalone). It records all MIDI events and draws notes in the UI. By default, the program will keep following the playhead.\n\nYou can zoom the canvas using \u003ckbd\u003eVScroll\u003c/kbd\u003e and pan using \u003ckbd\u003eHScroll\u003c/kbd\u003e. For users without horizontal scrolling, use \u003ckbd\u003eShift\u003c/kbd\u003e + \u003ckbd\u003eVScroll\u003c/kbd\u003e to pan.\n\nSelect a range of MIDI events by pressing and holding \u003ckbd\u003eLMouse\u003c/kbd\u003e, drag the cursor to select the range and release \u003ckbd\u003eLMouse\u003c/kbd\u003e to complete the selection. This generates a MIDI file in your tmp folder and puts a reference to it in the clipboard. Select in your DAW where you want the MIDI to go and paste.\n\nIf you run inside a DAW and the transport plays, Mucap captures the locations of bars and will snap to them when selecting. To override snapping, hold \u003ckbd\u003eShift\u003c/kbd\u003e while selecting.\n\nAfter 30 seconds of inactivity, Mucap will resume following the playhead.\n\n## Operational peculiarities\n\nDetailed information about program behaviors you may find useful. Some of these were design choices that needed to be made.\n\n### BPM and time stretching\n\nMucap records absolute note times relative to the plugin start having seconds as fundamental unit of time. MIDI files, in their most widely supported mode, use the length of a quarter note divided into 480 sub-ticks as their fundamental unit of time. Mucap needs to know the tempo of your playing in order to convert between these.\n\nMucap will always use the tempo it receives from the transport (120BPM for standalone operation) to achieve this conversion. If you play to a backing track running in your browser but have Mucap running inside the DAW, you need to make sure that your DAW has the correct BPM set or the clip length will be stretched (if DAW BPM is lower) or compressed (if DAW BPM is higher).\n\nIt is not required to have the tempo set correctly while recording, the conversion only happens after selection. So if you forget, it is not an issue.\n\nAlso, the relative positions of all events are correct. So you can stretch the clip at any time to match the track tempo if the tempo was wrong during export.\n\n### Selection behavior\n\nMucap will export all MIDI events that happen inside the time selection. If the selection contains a partial note, its note start and note stop events are repeated at the start and end of selection.\n\n### Multichannel\n\nMucap treats the MIDI channel like any other event property. Exported MIDI data will be a single track that contains all data of all channels. This should, in theory, make it work with MPE controllers, though that has not been tested so far.\n\nIt is not planned to offer special modes where different channels are handled differently. If you have this use-case, please launch one Mucap instance per channel and handle the MIDI routing in your DAW.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpolygon%2Fmucap","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpolygon%2Fmucap","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpolygon%2Fmucap/lists"}