{"id":13431021,"url":"https://github.com/haszari/PhraseSyncPlugins","last_synced_at":"2025-03-16T06:31:55.830Z","repository":{"id":47152881,"uuid":"399689674","full_name":"haszari/PhraseSyncPlugins","owner":"haszari","description":"Phrase-synchable MIDI plugins for live performance","archived":false,"fork":false,"pushed_at":"2023-08-12T10:39:52.000Z","size":64,"stargazers_count":1,"open_issues_count":4,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-10-19T13:20:58.727Z","etag":null,"topics":["midi","music-composition","plugin","vst"],"latest_commit_sha":null,"homepage":"","language":"C++","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/haszari.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}},"created_at":"2021-08-25T04:31:52.000Z","updated_at":"2023-12-09T11:15:29.000Z","dependencies_parsed_at":"2022-09-12T06:51:13.103Z","dependency_job_id":null,"html_url":"https://github.com/haszari/PhraseSyncPlugins","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/haszari%2FPhraseSyncPlugins","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/haszari%2FPhraseSyncPlugins/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/haszari%2FPhraseSyncPlugins/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/haszari%2FPhraseSyncPlugins/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/haszari","download_url":"https://codeload.github.com/haszari/PhraseSyncPlugins/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":221656503,"owners_count":16858784,"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":["midi","music-composition","plugin","vst"],"created_at":"2024-07-31T02:00:59.880Z","updated_at":"2024-10-27T09:31:24.478Z","avatar_url":"https://github.com/haszari.png","language":"C++","funding_links":[],"categories":["C++"],"sub_categories":[],"readme":"# Phrase-locked MIDI plugins for live performance\n\nSimple MIDI plugins which apply your parameters relevant to phrase boundaries.\n\n- A _phrase_ is defined as a number of beats - e.g. 1 bar / 4 beats, up to 64 beats.\n- Each plugin has a parameter for phrase length.\n- As the DAW transport plays back, the plugin keeps track of where it is in the current phrase.\n\n## MIDI clip variations\nPhrase-synchable MIDI filter plugins for getting more out of MIDI clips for live performance.\n\n- `ClipVariations-Note.vst3` Uses note value ranges for each variation, e.g. C-1:C0 for variation 1 and so on. Notes are transposed so each variation is consistent pitch.\n- `ClipVariations-Channel.vst3` Uses channels. Each MIDI channel is a separate variation. \n\nEach plugin has a variation parameter. You select a variation, and on the next phrase boundary, it will take effect.\n\nIn your DAW, for example Ableton Live or Bitwig, duplicate notes in your midi clip and transpose up (notes) or change channel (channel). Now you have variations that are the same notes.\n\nEdit the notes for each variation, for example:\n\n- Add different drum fills or ad-libs to a beat clip.\n- Increase or decrease the density of notes in a pad or arpeggio clip. \n\nInsert the appropriate plugin in the track, and use the channel/variation parameter to switch.\n\nThe variation will only switch on phrase boundaries, so changes happen in sync. For example, you could switch from a \"drop\" beat pattern to a \"break\", or chorus to verse. \n\n## Controller motion\n- `ControllerMotion.vst3` allows you to animate 4 MIDI CC values towards a target value. \n\nSet a phrase length. Then adjust the target parameters to the desired target value. \n\nThe plugin will output MIDI CCs that approach the target value at the end of the phrase.\n\nFor example, you could map MIDI CC 1 to cutoff frequency for an arpeggiator pattern, and set phrase to 32 beats. Any changes you make to target value 1 will unfold over \u003c32 beats, and always hit the target on the next phrase boundary.\n\nIf you want to disable the animation, you can set phrase length to 1 beat for a very quick ramp.\n\nThere's a parameter for the first CC number. Consecutive CC values will be used. This allows you to use multiple instances of the plugin to animate as many CCs as you want. You can also set the MIDI channel for the generated CCs.\n\n## How to dev\nThis project is built using [JUCE](https://juce.com). \n\n- Clone this repository.\n- Open project file in the `Projucer` and export a build project (e.g. for `Xcode` on macOS).\n\nFrom there you can build and debug as normal.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhaszari%2FPhraseSyncPlugins","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhaszari%2FPhraseSyncPlugins","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhaszari%2FPhraseSyncPlugins/lists"}