{"id":23100788,"url":"https://github.com/p3r7/librarian","last_synced_at":"2025-10-24T22:11:41.611Z","repository":{"id":181311239,"uuid":"666565610","full_name":"p3r7/librarian","owner":"p3r7","description":null,"archived":false,"fork":false,"pushed_at":"2025-06-25T14:53:50.000Z","size":321,"stargazers_count":3,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-09-24T22:03:56.734Z","etag":null,"topics":["midi","mod","monome-norns","norns"],"latest_commit_sha":null,"homepage":"","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/p3r7.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":"2023-07-14T21:20:57.000Z","updated_at":"2025-06-26T23:25:55.000Z","dependencies_parsed_at":"2024-12-16T23:35:30.026Z","dependency_job_id":"10059e10-bf19-4f8d-909a-576147cbe1a4","html_url":"https://github.com/p3r7/librarian","commit_stats":null,"previous_names":["p3r7/librarian"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/p3r7/librarian","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/p3r7%2Flibrarian","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/p3r7%2Flibrarian/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/p3r7%2Flibrarian/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/p3r7%2Flibrarian/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/p3r7","download_url":"https://codeload.github.com/p3r7/librarian/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/p3r7%2Flibrarian/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280873322,"owners_count":26405874,"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","status":"online","status_checked_at":"2025-10-24T02:00:06.418Z","response_time":73,"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":["midi","mod","monome-norns","norns"],"created_at":"2024-12-16T23:35:17.994Z","updated_at":"2025-10-24T22:11:41.565Z","avatar_url":"https://github.com/p3r7.png","language":"Lua","funding_links":[],"categories":[],"sub_categories":[],"readme":"# librarian\n\n![](./rsc/img/librarian_5x.png)\n\nmod that allows binding external hw to norns params.\n\nfor now configuration has to be done manually by editing a conf file.\n\n\n## configuration\n\nhw devices need to be listed under the `.device` field.\n\neach hw device takes the following fields:\n\n| field    | type                    | mandatory          | description                                         | default value                 |\n|----------|-------------------------|--------------------|-----------------------------------------------------|-------------------------------|\n| `model`  | `string`                | :heavy_check_mark: | model of the device                                 |                               |\n| `device` | `string`                | :x:                | name of the midi device us to communicate w/ the hw | `ALL` (sends \u0026 listen to all) |\n| `ch`     | `int`                   | :heavy_check_mark: | main midi channel                                   |                               |\n| `params` | `map[string]\u003canything\u003e` | :x:                | additional configuration supported by the hw        | `{}`                          |\n\n\n## example configuration\n\ncreate file `/home/we/dust/data/librarian/default.inventory`\n\n```lua\nreturn {\n  devices = {\n    {\n      model = \"nord_drum_2\",\n      device = 'ALL',\n      ch = 10,\n      params = {\n        voice_channels = {1, 2, 3, 4, 5, 6},\n        global_channel_notes = {60, 62, 64, 65, 67, 69},\n      }\n    }\n  },\n  version = \"0.1\"\n}\n```\n\n\n## supported devices\n\n#### Arturia Keystep (`arturia_keystep_32`)\n\n[implem](./lib/models/arturia_keystep_32.lua), [manual (PDF)](http://downloads.arturia.com/products/keystep/manual/KeyStep_Manual_1_0_0_EN.pdf)\n\nthe most basic Keystep in the range.\n\nif connected to norns over USB, you don't hve to configure the `device` as `\"Arturia KeyStep 32\"` is assumed by default. otherwise (using midi ports) you'd have to precise the name of the midi device it is connected to (or when in doubt use `\"ALL\"`).\n\n\n#### Alesis Akira (`alesis_akira`)\n\nWARN: very wip, untested\n\n[implem](./lib/models/alesis_akira.lua), [manual (PDF)](https://archive.org/details/manualzz-id-1311965)\n\na powerful multi effect. rack version of the Ineko, related to the ModFx series.\n\n\n#### Eventide H3000 (`eventide_h3000`)\n\nWARN: incomplete implem\n\n![](./rsc/img/device/h3000_5x.png)\n\n[implem](./lib/models/eventide_h3000.lua), [manual (PDF)](https://cdn.eventideaudio.com/uploads/2021/09/H3000-Service.pdf)\n\nmaybe the most ubiquitous studio multi effect.\n\npartial support for bilateral editing (on algos that are supported).\n\nsadly, extracting the current `pgm_id` from PGM DUMP isn't reliable past a given index. so, in order to work properly, this profile needs to be fed a file [`~/dust/data/librarian/h3000_pgm_list.lua`](./data/h3000_pgm_list.lua) (dumped using [`h3000_pgm_scanner.lua`](https://github.com/p3r7/h3000/blob/main/h3000_pgm_scanner.lua))\n\n\n| param       | type  | mandatory | default (factory) value | comment                                                             |\n|-------------|-------|-----------|-------------------------|---------------------------------------------------------------------|\n| `device_id` | `int` | :x:       | `0`                     | unique H3000 midi id, set to a different value if you customized it |\n\n\n#### Meng Qi Wingie2\n\nWARN: very wip, untested\n\n[implem](./lib/models/meng_qi_wingie2.lua), [manual (PDF)](https://static1.squarespace.com/static/56122b94e4b01402b90cce28/t/64e5efea36c20464d084b93e/1692790765339/Wingie2+Manual+v3.1+-+EN.pdf)\n\n\n#### Nord Drum 2 (`nord_drum_2`)\n\n![](./rsc/img/device/nord_drum_2_5x.png)\n\n[implem](./lib/models/nord_drum_2.lua), [manual (PDF)](https://www.nordkeyboards.com/sites/default/files/files/downloads/manuals/nord-drum-2/Nord%20Drum%202%20English%20User%20Manual%20v3.0x%20Edition%20F.pdf)\n\nthe Nord Drum 2 is a drum synth exposing 6 completely individual voices.\n\neach voice can be triggered through the main midi channel (factory default `10`) w/ dedicated notes (`global_channel_notes`) or through dedicated midi channels (`voice_channels`), in which case any note value can be send to play the voice melodically.\n\nthe global channel approach works better w/ percusive sequencer scripts (such as `argen`) \u0026 traditional dum kit presets (bank `#1` \u0026 `#2`).\n\nthe individual voice channel approach works better w/ melodic sequencers (`awake`, `less_concepts`, `washi`...) \u0026 presets in bank `#3`.\n\n\n| param                  | type    | mandatory | default (factory) value    | comment                                                                      |\n|------------------------|---------|-----------|----------------------------|------------------------------------------------------------------------------|\n| `voice_channels`       | `int[]` | :x:       | `{1, 2, 3, 4, 5, 6}`       | additional midi channels that can be used to play \u0026 access individual voices |\n| `global_channel_notes` | `int[]` | :x:       | `{60, 62, 64, 65, 67, 69}` | midi notes to trig individual voices using the global midi channel           |\n\n\n## adding support to new models\n\nsee [`DEV_GUIDE.md`](./DEV_GUIDE.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fp3r7%2Flibrarian","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fp3r7%2Flibrarian","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fp3r7%2Flibrarian/lists"}