{"id":28302609,"url":"https://github.com/taylordotfish/jack-keyboard","last_synced_at":"2025-06-14T05:31:39.959Z","repository":{"id":159526120,"uuid":"633541183","full_name":"taylordotfish/jack-keyboard","owner":"taylordotfish","description":"Fork of jack-keyboard (with melodic minor and 19 TET branches!)","archived":false,"fork":false,"pushed_at":"2025-05-19T22:32:55.000Z","size":99,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-31T05:39:10.356Z","etag":null,"topics":["19tet","fork","jack","jackaudio","melodic-minor","midi","midi-keyboard","tuning"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/taylordotfish.png","metadata":{"files":{"readme":"README.md","changelog":"NEWS","contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-04-27T18:18:02.000Z","updated_at":"2025-05-19T22:18:29.000Z","dependencies_parsed_at":"2023-05-21T00:45:23.415Z","dependency_job_id":null,"html_url":"https://github.com/taylordotfish/jack-keyboard","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/taylordotfish/jack-keyboard","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taylordotfish%2Fjack-keyboard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taylordotfish%2Fjack-keyboard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taylordotfish%2Fjack-keyboard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taylordotfish%2Fjack-keyboard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/taylordotfish","download_url":"https://codeload.github.com/taylordotfish/jack-keyboard/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taylordotfish%2Fjack-keyboard/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259766727,"owners_count":22908064,"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":["19tet","fork","jack","jackaudio","melodic-minor","midi","midi-keyboard","tuning"],"created_at":"2025-05-23T21:11:52.793Z","updated_at":"2025-06-14T05:31:39.946Z","avatar_url":"https://github.com/taylordotfish.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# jack-keyboard\n\n![Screenshot of jack-keyboard](jack_keyboard.png)\n\n## What is it?\n\njack-keyboard is a virtual MIDI keyboard - a program that allows you to send\nJACK MIDI events (play ;-) using your PC keyboard. It's somewhat similar to\nvkeybd, except it uses JACK MIDI instead of ALSA, and the keyboard mapping is\nmuch better - it uses the same layout as trackers (like Impulse Tracker) did,\nso you have two and half octaves under your fingers.\n\n## How to compile it?\n\nIf you're using FreeBSD, install from ports - audio/jack-keyboard.\n\nOtherwise, you need JACK with MIDI support, gtk+ 2.6 or higher, make(1), gcc\nand all the standard headers. Untar the file, type 'make install' and that's\nit. If there is any problem, drop me an email (trasz@FreeBSD.org) and I will\nhelp you. Really.\n\n## How to use it?\n\nYou need JACK with MIDI support and some softsynth that accepts JACK MIDI as\ninput. Ghostess, http://home.jps.net/~musound/, is a good choice. Of course you\nwill also need some DSSI plugin that will make the actual sound. WhySynth is\nnice.\n\nWhen you have all of these installed: first, run jackd. Then run ghostess with\na plugin of choice. Then run jack-keyboard. Press 'z' key. You should hear\nsound.\n\n## Keyboard\n\nKeyboard mapping is the same as in Impulse Tracker. This is your QWERTY\nkeyboard:\n\n       +----+----+    +----+----+----+    +----+----+\n       | 2  | 3  |    | 5  | 6  | 7  |    | 9  | 0  |\n    +----+----+----+----+----+----+----+----+----+----+\n    | q  | w  | e  | r  | t  | y  | u  | i  | o  | p  |\n    +----+----+----+----+----+----+----+----+----+----+\n           | s  | d  |    | g  | h  | j  |\n        +----+----+----+----+----+----+----+\n        | z  | x  | c  | v  | b  | n  | m  |\n        +----+----+----+----+----+----+----+\n\nAnd this is MIDI mapping.\n\n       +----+----+    +----+----+----+    +----+----+\n       |C#5 |D#5 |    |F#5 |G#5 |A#5 |    |C#6 |D#6 |\n    +----+----+----+----+----+----+----+----+----+----+\n    | C5 | D5 | E5 | F5 | G5 | A5 | B5 | C6 | D6 | E6 |\n    +----+----+----+----+----+----+----+----+----+----+\n           |C#4 |D#4 |    |F#4 |G#4 |A#4 |\n        +----+----+----+----+----+----+----+\n        | C4 | D4 | E4 | F4 | G4 | A4 | B4 |\n        +----+----+----+----+----+----+----+\n\nSpacebar is a sustain key. Holding it when pressing or releasing key will make\nthat key sustained, i.e. Note Off MIDI event won't be sent after releasing the\nkey. To release (stop) all the sustained notes, press and release spacebar.\n\nHolding Shift when pressing note will make it louder (it increases velocity).\nHolding Ctrl will do the opposite. You can change the default velocity by\nmoving the Velocity slider. You can change the \"high\" and \"low\" velocity values\nby moving the slider while holding Shift or Ctrl keys.\n\nPressing \"-\" and \"+\" keys on numeric keypad changes the octave your keyboard is\nmapped to. Pressing \"\\*\" and \"/\" on numeric keypad changes MIDI program\n(instrument). Pressing Insert or Delete keys will connect jack-keyboard to the\nnext/previous MIDI input port (it will cycle between running instances of\nghostess, for example). Home and End keys change the MIDI channel. Page Up and\nPage Down keys switch the MIDI bank.\n\nEsc works as a panic key - when you press it, all sound stops.\n\n## Setting channel/bank/program number directly\n\nTo switch directly to a channel, bank or program, enter its number on the\nnumeric keypad (it won't be shown in any way) and press Home or End (to change\nchannel), Page Up or Page Down (to change bank) or \"/\" or \"\\*\" (to change\nprogram). For example, to change to program number 123, type, on the numeric\nkeypad, \"123/\", without quotes.\n\n## Titlebar\n\nWhen -G xor -T is given, some informational messages in the title bar appear.\nThey are supposed to be self explanatory. If you see \"bank/program change not\nsent\", it means that the bank/program numbers as seen in the title bar were not\nsent. In other words, synth the jack-keyboard is connected to may use different\nvalues. This happens at startup and after switching between synths (using\nInsert/Delete keys). To send bank/program change at startup, use -b and -p\nparameters. ters. To automatically send bank/program change after reconnect,\nuse the -u option.\n\n## Pianola mode\n\nIn addition to the MIDI output port, jack-keyboard also opens MIDI input\n(listening) port. MIDI events going into this port will be passed to the output\nport unmodified, except for channel number, which will be set to the one\njack-keyboard is configured to use. Note On and Note Off MIDI events will cause\nvisible effect (pressing and releasing) on keys, just like if they were being\npressed using keyboard or mouse.\n\njack-keyboard will never connect to it's own MIDI input port. It will also\nrefuse to connect to any other client whose name begins in \"jack- keyboard\",\nunless the \"-k\" option is given. It is, however, possible to connect these\nports manually, using jack_connect or qjackctl; this may create feedback loop.\n\n## License\n\nJACK Keyboard is distributed under the BSD license, two clause.\n\n## Contact\n\nIf you have any questions, comments, suggestions, patches or anything,\nlet us know:\n\n* Edward Tomasz Napierala \u003ctrasz@FreeBSD.org\u003e (initial version)\n* Hans Petter Selasky \u003chselasky@FreeBSD.org\u003e (further development, gtk3)\n* Markus Schmidt \u003cschmidt@boomshop.net\u003e (further development, UX/UI)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftaylordotfish%2Fjack-keyboard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftaylordotfish%2Fjack-keyboard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftaylordotfish%2Fjack-keyboard/lists"}