{"id":16733231,"url":"https://github.com/krasjet/kb","last_synced_at":"2025-03-15T20:14:51.778Z","repository":{"id":98566577,"uuid":"304183009","full_name":"Krasjet/kb","owner":"Krasjet","description":"Customizable virtual MIDI keyboard daemon for JACK.","archived":false,"fork":false,"pushed_at":"2021-06-08T04:43:52.000Z","size":71,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-22T09:14:49.428Z","etag":null,"topics":["c","jack","jackaudio","keyboard","midi","x11"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Krasjet.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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-10-15T02:00:45.000Z","updated_at":"2021-06-19T12:04:18.000Z","dependencies_parsed_at":null,"dependency_job_id":"9395dabf-f999-4739-9ec8-d8a54c9dc761","html_url":"https://github.com/Krasjet/kb","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/Krasjet%2Fkb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Krasjet%2Fkb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Krasjet%2Fkb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Krasjet%2Fkb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Krasjet","download_url":"https://codeload.github.com/Krasjet/kb/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243785087,"owners_count":20347409,"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":["c","jack","jackaudio","keyboard","midi","x11"],"created_at":"2024-10-12T23:49:08.199Z","updated_at":"2025-03-15T20:14:51.742Z","avatar_url":"https://github.com/Krasjet.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"kb\n==\n\nkb is a customizable virtual MIDI keyboard daemon for JACK\nAudio Connection Kit. It provides MIDI input for standalone\nJACK synthesizers and can be a useful debugging tool for\ndeveloping JACK-based audio applications.\n\nUsage\n-----\n\nFirst start a JACK server using `jackd(1)` or `qjackctl(1)`\n(see [1] for details on how to set it up), then run\n\n    $ kb\n\nto start the MIDI keyboard daemon. Then, you need to connect\nthe `midi_out` port of kb to other applications (for\nqjackctl, use the `Graph` or `Connect` button):\n\n    +----+-----------+       +-------+-----------+\n    | kb |           |       | synth |           |\n    +----+           |       +-------+           |\n    |                |       |         audio_out +---\u003e\n    |       midi_out +------\u003e+ midi_in           |\n    +----------------+       +-------------------+\n\nAlternatively, use the `-a` option to let kb automatically\ndetect and connect to input MIDI ports:\n\n    $ kb -a\n\nkb will capture all the key presses and convert them into\nMIDI messages according to your configuration.\n\nFor the default configuration, the home row of a QWERTY\nkeyboard\n\n    ASDFGHJKL;'\n\ncorresponds to the white keys on a piano keyboard, and\n\n    WETYUOP]\n\ncorresponds to the black keys. Additionally, `ZX`, `CV`,\n`90`, and `-=` can be used to decrement and increment\noctave, velocity, bank, and program, respectively. And the\nEscape key is the panic button (turn off all notes). You can\neasily customize these keybindings. See CUSTOMIZE section\nfor details.\n\nIf you want to shut down the daemon, press `Ctrl-C` in the\nterminal to send a `SIGINT` signal or run\n\n    $ pkill kb\n\nto kill the daemon process. For more information, see\n`kb(1)`.\n\nBuild\n-----\n\nFirst, make sure JACK, Xlib, and libxi are installed. For\nArch-based distros, they can be installed by\n\n    $ pacman -S jack2 libx11 libxi\n\nFor Debian-based distros, install the dependencies by\n\n    $ apt-get install libjack-jackd2-dev libx11-dev libxi-dev\n\nIf you don't want to use libxi, check out the `no_ext`\nbranch. The `no_ext` version works exactly the same, but it\nmight have some issues capturing input within REAPER on\nLinux.\n\nYou also need a C99-compatible C compiler and POSIX make.\nAfter all the requirement are satisfied, run\n\n    $ make\n\nto build kb and\n\n    # make install\n\nto install it to your system.\n\nCustomize\n---------\n\nkb can be customized by editing the `config.h` file and\nrecompiling the source code. The default configuration is in\n`config.def.h`. It provides a simple one-row keyboard\nlayout. Run\n\n    $ make config.h\n\nto obtain the default config file.\n\nTake a look at the alternative layouts in\n\n- config.2row.h: two row keyboard layout (2 octaves)\n- config.min.h: the minimal config file\n\nto understand how to customize kb.\n\nFAQ\n---\n\nCan I use kb with ALSA?\n\n  Use a2jmidid [2].\n\nHow can I add new MIDI messages?\n\n  See `write_midi` in jack.c.\n\nCaveats\n-------\n\n1. kb has only been tested on Linux and with JACK 2. It\n   should work on any system with X11 and JACK support, but\n   I have not tested other systems yet. Feedbacks are\n   welcome.\n2. Note that kb *captures* your key presses in any window.\n   It does not *intercept* them. This is intentional,\n   because I frequently need to edit code while testing the\n   MIDI input. As an additional benefit, you can now enjoy\n   some crappy generative music while typing.\n\n[1]: https://ccrma.stanford.edu/docs/common/JACK.html\n[2]: https://github.com/linuxaudio/a2jmidid/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkrasjet%2Fkb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkrasjet%2Fkb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkrasjet%2Fkb/lists"}