{"id":27459709,"url":"https://github.com/mcascone/midi-plugin","last_synced_at":"2025-04-15T20:23:49.349Z","repository":{"id":266606555,"uuid":"898827361","full_name":"mcascone/midi-plugin","owner":"mcascone","description":"midi utility plugin","archived":false,"fork":false,"pushed_at":"2025-01-30T18:05:45.000Z","size":28,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-30T19:22:57.757Z","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":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mcascone.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"license.md","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":"2024-12-05T05:35:38.000Z","updated_at":"2025-01-30T18:05:48.000Z","dependencies_parsed_at":null,"dependency_job_id":"59cc422c-8252-4e13-b0f6-607fbc6b8b2f","html_url":"https://github.com/mcascone/midi-plugin","commit_stats":null,"previous_names":["mcascone/midi-plugin"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mcascone%2Fmidi-plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mcascone%2Fmidi-plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mcascone%2Fmidi-plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mcascone%2Fmidi-plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mcascone","download_url":"https://codeload.github.com/mcascone/midi-plugin/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249146344,"owners_count":21220116,"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":"2025-04-15T20:23:48.699Z","updated_at":"2025-04-15T20:23:49.330Z","avatar_url":"https://github.com/mcascone.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# midi-plugin\n\nmidi utility plugin\n\nKeep state of various params to make more advanced decisions about what messages to send.\n\n## Current functionality ideas\n\n### Feature: Smart CC increment/decrement\n\nIntercept midi and increment/decrement a CC message's Value by a set amount (default 1), then pass on to output.\n\n- Pretty much the same idea as the existing PC increment/decrement function\n- The inc/dec value itself is midi controllable\n- disabled just passes input to output\n\nThis could be done in the MIDI Captain's **Super Mode**, using the `keypress` feature, but only in one direction. This plugin allows incrementing/decrementing CC values without statically configuring them in the captain (or any other device).\n\n#### Design\n\nMy current thinking is to intercept a single, static CC incoming from a controller.\n\n1. Configure the trigger CC.\n1. If it's not been set before:\n   - Save its current value, or set a starting value, adjustable, midi controllable.\n   - If it has been previously set: get the saved value (state).\n1. Increment the value by a given integer. Default 1, adjustable, MIDI controllable.\n    - RANDOM option\n1. provide a RESET function to start over, unset state; midi controllable\n   - maximum value of 127. reset to 0 at 128. reset value same as start value. Max value adjustable, midi controllable.\n1. same pattern for decrement.\n\n### Feature: Auto Ramp\n\nAccept a single CC as a trigger to sweep a CC value up or down.\n\n- Configurable speed.\n- Looping option.\n- Random option.\n- Waveform options (sine, square, triangle, etc)\n- Max Value configurable, default 127/0\n- Stop/Reset options:\n  - Reset to 0 when stopped\n  - Ramp to max when stopped\n  - Stay at current value when stopped\n  - Ramp up/down to 0 (or max) when stopped (configurable ramp speed)\n\n### Feature: Timed/Repeat Send\n\nSends a CC/PC/etc at timed intervals.\n\n- Configurable for one-shot or looping behavior.\n- Configurable number of repeats.\n- Can be fed into any of the other features (auto-increment, auto-ramp, etc)\n- Can be timed or triggered on CC input.60646\n\n\n\u003c!-- ## Thoughts regarding the MIDI Captain\n\nMultiple ideas here. This project will be universal, not just for the MIDI Captain.\n\nRegarding the Midi Captain, it's not necessarily about the outgoing messages, it's what the captain configures itself as.\n\nExample: if I change a state using a long press, I want that state to be reflected in the LED color when I do a short press.\n\n- how would that work in the captain\n- too slow to update files on the fly + reload\n- can the config be reloaded on the fly w/o unmounting or restarting app?\n\nProbably need access to the source code for the MIDI Captain Ideas. --\u003e\n\n\n## Other Tools\n\nThis might be implementable in another form using https://github.com/gbevin/ReceiveMIDI and https://github.com/gbevin/SendMIDI.\n\nThese CLI apps allow scripted MIDI messaging and state management.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmcascone%2Fmidi-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmcascone%2Fmidi-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmcascone%2Fmidi-plugin/lists"}