{"id":17887784,"url":"https://github.com/jmacd/launchmidi","last_synced_at":"2025-04-03T02:41:49.064Z","repository":{"id":57529059,"uuid":"249634272","full_name":"jmacd/launchmidi","owner":"jmacd","description":"Talk to your Novation Launch Control XL in Go","archived":false,"fork":false,"pushed_at":"2023-12-03T07:41:15.000Z","size":65,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-08T16:43:41.125Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"rakyll/launchpad","license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jmacd.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}},"created_at":"2020-03-24T06:52:28.000Z","updated_at":"2023-04-30T14:55:23.000Z","dependencies_parsed_at":"2024-10-28T14:26:09.966Z","dependency_job_id":"f52599ac-5f91-42ce-a7f3-2349a90ff6b7","html_url":"https://github.com/jmacd/launchmidi","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jmacd%2Flaunchmidi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jmacd%2Flaunchmidi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jmacd%2Flaunchmidi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jmacd%2Flaunchmidi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jmacd","download_url":"https://codeload.github.com/jmacd/launchmidi/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246927810,"owners_count":20856193,"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":"2024-10-28T13:35:26.051Z","updated_at":"2025-04-03T02:41:49.040Z","avatar_url":"https://github.com/jmacd.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# launchmidi [![GoDoc](https://godoc.org/github.com/jmacd/launchmidi?status.svg)](https://godoc.org/github.com/jmacd/launchmidi)\nThis package allows lets you program with your Novation LaunchControl XL in Go.\n\nThis library offers full control over this device, including:\n- Read current values of 24 knobs, 8 sliders, and 24 buttons\n- Callbacks for reacting to change on 56 controls\n- Template switching support\n- Color doubled-buffering\n- Flashing LEDs\n- `FlashUnknown()` supports flashing uninitialized knobs and sliders.\n\n```sh\ngo get github.com/jmacd/launchmidi\n```\n\n[Portmidi](github.com/rakyll/launchmidi) is required to use this package.\n\n```sh\n$ apt-get install libportmidi-dev\n# or\n$ brew install portmidi\n```\n\n## Example: Flash all the buttons\n\nThis program flashes the 3 rows of knohs and 2 rows of buttons times 8 columns of LEDs at startup.  Half of the controls are set to flashing uninitialized, the other half flash indefinitely.\n\nThis exhibits how \"flash\" is treated for sliders, which do not have LEDs.  Sliders flash on the adjacent Track Focus button below.  Any flashing slider causes the four right-side (Device, Mute, Solo, Record Arm) buttons to flash.\n\n```go\npackage main\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"github.com/jmacd/launchmidi/launchctl/xl\"\n)\n\nfunc main() {\n\tl, err := xl.Open()\n\tif err != nil {\n\t\tlog.Fatalf(\"error while openning connection to launchctl: %v\", err)\n\t}\n\tdefer l.Close()\n\n\tgo l.Run(context.Background())\n\n\tconst midiChan = 0\n\tfor i := 0; i \u003c 8; i++ {\n\t\tc := xl.EightColors[i]\n\t\tcf := c\n\t\tcfu := c\n\t\tif i%2 == 1 {\n\t\t\tcf = xl.Flash(c)\n\t\t} else {\n\t\t\tcfu = xl.FlashUnknown(c)\n\t\t}\n\n\t\tl.SetColor(midiChan, xl.ControlKnobSendA[i], cfu)\n\t\tl.SetColor(midiChan, xl.ControlKnobSendB[i], cfu)\n\t\tl.SetColor(midiChan, xl.ControlKnobPanDevice[i], cfu)\n\t\tl.SetColor(midiChan, xl.ControlSlider[i], cfu)\n\t\tl.SetColor(midiChan, xl.ControlButtonTrackFocus[i], cf)\n\t\tl.SetColor(midiChan, xl.ControlButtonTrackControl[i], cf)\n\t}\n\tl.SwapBuffers(midiChan)\n\tselect {}\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjmacd%2Flaunchmidi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjmacd%2Flaunchmidi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjmacd%2Flaunchmidi/lists"}