https://github.com/polygon/mucap
Retrospective MIDI Recording Plugin
https://github.com/polygon/mucap
Last synced: 30 days ago
JSON representation
Retrospective MIDI Recording Plugin
- Host: GitHub
- URL: https://github.com/polygon/mucap
- Owner: polygon
- License: gpl-3.0
- Created: 2025-11-20T10:31:51.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2025-12-24T19:56:35.000Z (6 months ago)
- Last Synced: 2025-12-26T10:41:13.727Z (6 months ago)
- Language: Rust
- Homepage:
- Size: 292 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Mucap
Retrospective MIDI Recording Plugin

## Features
* Retrospective MIDI Recording
* CLAP, VST3, Standalone
* Sample accurate recording
* Records all basic MIDI events on all channels
* Bar markers used for selection snapping
## Installation
### NixOS / Flakes
Add 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.
```
mucap = {
url = "github:polygon/mucap";
inputs.nixpkgs.follows = "nixpkgs";
};
```
Now you can add the package to your system, e.g.:
```
environment.systemPackages = [ mucap.packages.${system}.mucap ];
```
If not already done, make sure the VST3 and CLAP paths are exported to `/run/current-system/sw`:
```
environment.pathsToLink = [ "/lib/vst3" "/lib/clap" ];
```
If you are a user of [audio.nix](https://github.com/polygon/audio.nix), mucap is also re-exported there.
### Debian / Ubuntu based
Get the DEB archive from the [latest release](https://github.com/polygon/mucap/releases/latest) and install it, e.g.:
```
sudo apt install ./mucap-0.9.0-amd64.deb
```
## Usage
Add 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.
You can zoom the canvas using VScroll and pan using HScroll. For users without horizontal scrolling, use Shift + VScroll to pan.
Select a range of MIDI events by pressing and holding LMouse, drag the cursor to select the range and release LMouse 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.
If 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 Shift while selecting.
After 30 seconds of inactivity, Mucap will resume following the playhead.
## Operational peculiarities
Detailed information about program behaviors you may find useful. Some of these were design choices that needed to be made.
### BPM and time stretching
Mucap 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.
Mucap 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).
It 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.
Also, 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.
### Selection behavior
Mucap 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.
### Multichannel
Mucap 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.
It 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.