{"id":29688921,"url":"https://github.com/narcode/codeklavier","last_synced_at":"2025-07-23T05:39:05.314Z","repository":{"id":24284615,"uuid":"100539585","full_name":"narcode/codeklavier","owner":"narcode","description":"Programming with the piano as interface","archived":false,"fork":false,"pushed_at":"2023-10-16T08:18:01.000Z","size":14555,"stargazers_count":32,"open_issues_count":26,"forks_count":6,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-08-14T10:49:32.930Z","etag":null,"topics":["codeklavier-python","livecoding","midi-parser","piano","programming-language","prototype","python","python-midi-analysis","stimuleringsfonds","supercollider"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/narcode.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}},"created_at":"2017-08-16T23:00:09.000Z","updated_at":"2023-12-01T13:17:19.000Z","dependencies_parsed_at":"2023-10-16T18:23:52.417Z","dependency_job_id":"8259a8a3-a8ae-448b-803d-9d9819b6873c","html_url":"https://github.com/narcode/codeklavier","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/narcode/codeklavier","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/narcode%2Fcodeklavier","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/narcode%2Fcodeklavier/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/narcode%2Fcodeklavier/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/narcode%2Fcodeklavier/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/narcode","download_url":"https://codeload.github.com/narcode/codeklavier/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/narcode%2Fcodeklavier/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266625422,"owners_count":23958306,"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-07-23T02:00:09.312Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"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":["codeklavier-python","livecoding","midi-parser","piano","programming-language","prototype","python","python-midi-analysis","stimuleringsfonds","supercollider"],"created_at":"2025-07-23T05:39:04.678Z","updated_at":"2025-07-23T05:39:05.301Z","avatar_url":"https://github.com/narcode.png","language":"Python","readme":"# CodeKlavier\n\n### Live coding with the piano as interface.\n\nAn open source project by Felipe Ignacio Noriega and Anne Veinberg. \n\nCodeKlavier development started in April 2017 and currently has five modules (newest on top):\n+  [*ARquatic*](https://codeklavier.space/arquatic) (A CodeKlavier Augmented Reality experience!)\n+  [*Ckalcuλator*](https://github.com/narcode/codeklavier/tree/master/ckalculator) (Lambda-calculus with the piano!)\n+  [*Hybrid*](https://github.com/narcode/codeklavier/blob/master/hybrid/README.md) (switching between the first two prototypes and includes a custom code display via udp sockets)\n+  [*Motippets*](https://github.com/narcode/codeklavier/tree/master/motippets) (coding via pianistic gestures/motifs)\n+  [*hello world*](https://github.com/narcode/codeklavier/blob/master/hello_world) (proof of concept prototype, with 1-1 mapping of piano keys to alphanumeric characters)\n\nMore information about the specific prototypes can be found in their respective directories.\n\n### Latest\nCodeKlavier made two videos for this year's [HashiDays event](https://hashidays.com/online/). The first is [ARquatic](https://codeklavier.space/arquatic) and the second uses the [Motippets](https://github.com/narcode/codeklavier/tree/master/motippets) module to code in [Mercury](https://www.timohoogland.com/mercury-livecoding/). With thanks to Simon Kelaita and Patrick Borgeat for the audio and video editing respectively.\n\n### CodeKlavier in action\nCheckout our [videos page](https://codeklavier.space/videos) to see the Codeklavier in action or visit the [Activities page](https://codeklavier.space/activities) for info on past and future performances.\n\n### Goals\n\u003cdiv class='dream'\u003e\n\u003cdiv\u003e\u003cstrong\u003eThe dream:\u003c/strong\u003e\u003c/div\u003e\u003cdiv\u003e🐍🎹 An intuitive programming language with the piano as interface.\u003c/div\u003e\u003c/div\u003e\n\u003cdiv class='dream'\u003e\n\u003cdiv\u003e\u003cstrong\u003eThe starting-to-be-graspable dream:\u003c/strong\u003e\u003c/div\u003e\u003cdiv\u003e👩🏼‍💻 A programming language for the piano as interface\u003c/div\u003e\u003c/div\u003e\n\u003cdiv class='dream'\u003e\n\u003cdiv\u003e\u003cstrong\u003eThe long term goal:\u003c/strong\u003e\u003c/div\u003e\u003cdiv\u003e🎼🎧 a live coding music-domain programming language for the piano as interface\u003c/div\u003e\u003c/div\u003e\n\u003cdiv class='dream'\u003e\n\u003cdiv\u003e\u003cstrong\u003eThe mid term goal:\u003c/strong\u003e\u003c/div\u003e\u003cdiv\u003e💾📌 strategy-specific releases of mini-language approaches for live coding through the piano\u003c/div\u003e\u003c/div\u003e\n\u003cdiv class='dream'\u003e\n\u003cdiv\u003e\u003cstrong\u003eThe short term goal:\u003c/strong\u003e\u003c/div\u003e\u003cdiv\u003e📆📈 research-release-evaluation cycles of prototypes which tackle specific aspects of the system\u003c/div\u003e\u003c/div\u003e\n\n\n\n## Equipment\n1. An acoustic-MIDI piano such as a  Disklavier, any piano fitted with a silent system or an acoustic intrument in combination with a MOOG piano bar or other MIDI keyscanner. We use a MIDI KeyScanner developed by Andrew McPherson and his team at Queen Mary University of London. If an acoustic-MIDI piano is not available, any 88-key MIDI keyboard will suffice providing this instrument is of suitable sensitivity for the pianist.\n\n2. MIDI interface (if not integrated in the piano)\n\n## Libraries\nInstall with pip3\n\n1. python-rtmidi\n2. pynput\n3. sphinx\n4. numpy\n5. python-osc (if you want to use the AR module and Caffeine Extension)\n6. websockets (idem)\n\nRun ``pip3 install -r requirements.txt`` to install the required libraries.\n\n## Modules\n__For this version please add the CodeKlavier directory to your sys.path so the CK modules are recognized__\n\nYou can run the ``setPythonPath.sh`` every time you start a new shell (type ``. setPythonPath.sh`` - not the **dot-space** before the command), or put the following lines in your ``~/.bash_profile`` or ``~/.bashrc`` or equivalent add the following lines (make sure you have the correct path!):\n\n`# Modules for the CodeKlavier\nPYTHONPATH=\"/path/to/your/codeklavier/project/folder:$PYTHONPATH\"\nexport PYTHONPATH`\n\nAs an example, the path to the Codeklavier in my system looks like this:\n\n`\nPYTHONPATH=\"/Users/narcodeb/Development/Repos/codeklavier-python/CodeKlavier:$PYTHONPATH\"\n`\n## Extensions\n\nThere are a number of different code output extensions for the CodeKlavier. The loading ini file for these can be found in the CodeKlavier-Extensions repository[https://github.com/codeklavier/codeklavier-extensions]. You will need to download/clone this directory in order to run CodeKlavier.\n\nIf you are interested in collaborating on an extension for the CodeKlavier, don't hesitate to get in touch.\n\nCurrently, outpute extensions exist for SuperCollider, Mercury, JavaScript, Augmented Reality and Hydra.\n\n\n## Test run\nAfter installing the libraries, plug in your midi device and run the miditest by ``python3 miditest.py``. After you complete the setup and configuration, you will see the midi messages on the screen. After that run codeklavier.py -p hybrid -i base.ini (be sure to change the directory too match your setup  Try playing an upward  C major 3 note arpeggio starting on middle C. If everything works, your test is complete and you are ready to explore CK!\n\n\n## Watch\n[Codeklavier Videos](http://codeklavier.space/videos)\n\n## Publications\n[Publications page](https://codeklavier.space/publications)\n\n## Support\nThis project was made possible by the Creative Industries Fund NL, our angel sponsor and the festivals and venues that book us for paid concerts. However, our initial funding has come to an end so if you believe in the project and would like to support it, please consider \"buying us a coffee\". Every little bit counts and we greatly appreciate your support!\n\n[![ko-fi](https://www.ko-fi.com/img/donate_sm.png)](https://ko-fi.com/J3J7PGIE)\n","funding_links":["https://ko-fi.com/J3J7PGIE"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnarcode%2Fcodeklavier","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnarcode%2Fcodeklavier","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnarcode%2Fcodeklavier/lists"}