{"id":19968723,"url":"https://github.com/torydebra/casio_cts1_midi_controller","last_synced_at":"2026-06-02T20:31:54.234Z","repository":{"id":243417133,"uuid":"794675026","full_name":"torydebra/casio_cts1_midi_controller","owner":"torydebra","description":"Midi Controller app to split the Casio CT-S1","archived":false,"fork":false,"pushed_at":"2025-12-10T16:35:19.000Z","size":6298,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-12-11T02:15:48.880Z","etag":null,"topics":["casio-cts1","casiotone","keyboard","midi","music","musical-instrument","piano","piano-keyboard"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/torydebra.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":"2024-05-01T18:01:29.000Z","updated_at":"2025-12-10T16:35:24.000Z","dependencies_parsed_at":"2024-06-08T18:54:09.446Z","dependency_job_id":"c7824d07-4627-472f-be45-f2d09efba255","html_url":"https://github.com/torydebra/casio_cts1_midi_controller","commit_stats":null,"previous_names":["torydebra/casio_cts1_midi_controller"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/torydebra/casio_cts1_midi_controller","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/torydebra%2Fcasio_cts1_midi_controller","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/torydebra%2Fcasio_cts1_midi_controller/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/torydebra%2Fcasio_cts1_midi_controller/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/torydebra%2Fcasio_cts1_midi_controller/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/torydebra","download_url":"https://codeload.github.com/torydebra/casio_cts1_midi_controller/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/torydebra%2Fcasio_cts1_midi_controller/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33835766,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-02T02:00:07.132Z","response_time":109,"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":["casio-cts1","casiotone","keyboard","midi","music","musical-instrument","piano","piano-keyboard"],"created_at":"2024-11-13T02:47:43.977Z","updated_at":"2026-06-02T20:31:54.210Z","avatar_url":"https://github.com/torydebra.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# casio_cts1_midi_controller\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"img/cts1.png\" width=\"500\" /\u003e\u003c/br\u003e\n  \u003cimg src=\"img/app1.jpeg\" width=\"400\" /\u003e \n  \u003cimg src=\"img/app2.jpeg\" width=\"400\" /\u003e\n\u003c/p\u003e\n\n\n\nI have a [Casio Casiotone CT-S1](https://www.casio.com/it/electronic-musical-instruments/product.CT-S1BKSET/) keyboard but it is not \"officially\" \npossible to split the keys and having multiple voices in different parts of the keyboard. It is possible with this app now.\n\n## Instruction\nDownload the [apk](https://github.com/torydebra/casio_cts1_midi_controller/releases/tag/v1.0), or clone the repo and build with android studio.  \nApp is very basic but *it works on my phone*. Only wired connection (usb) is available, and you must keep \nthe phone connected to the keyboard. I feel no latency buy I am not absolutely an expert. Also, you should mute the first sound layer by pressing ```function + F#2```\n\n## Features\nImage should be self explanatory.\n- Two different channels (bottom and upper part of the keyboard) can play different voices.\n- Selectable split point\n- Octave shift for the lower and upper voice indipendently\n- 4 buttons per channel for fast voice change. Each voice in each button can be changed with the dropdown menu aside the button\n- All Casio voices (61)+1 implemented.\n- The +1 is the [standard MIDI drum set](https://en.wikipedia.org/wiki/General_MIDI#Percussion) :sunglasses:\n- Activable debug prints for eventual problems\n\n## Description\nCasio is also a midi keyboard: you can connect to a device and let be exchange midi data. Hence, it is indeed possible to hack it a bit.\nAccording to some forums online, this casio has two \"sound layers\". It is not possible to control the top one through midi (which is the one controllable by the keyboard buttons) \nbut the second one is controllable. So, as suggested online, you can play any kind of sounds with a *loopback* midi: key pressure is detected by the app, which command back to the key to\nplay the note but with the voice choosen. Since in this way both sound layers will play, you have to deactivate the first one with ```function + F#2``` (check the manual, I am not 100% sure this is the correct key)\nThe presence of the two sound layers is also the reason why you need to keep the phone connected: through MIDI it is not possible to change the first layer voice (AFAIK), which is\nthe one that \"memorize\" the voice change with the keyboard buttons themselves.\n\nThe app is basically a webview that runs the [webmidi.js](https://github.com/djipco/webmidi) library. You can also run it opening the html (in www folder) on a pc. On the phone, I can not find a method\nto open interpet the html, so I localhost server was always necessary, but MIDI api does not allow to pass through localhost if this is\nfor some [secure issues](https://stackoverflow.com/questions/63026587/web-midi-on-chrome-works-with-local-server-but-not-when-served-in-the-cloud).\nSo the app. \n\n## TODOs\nApp is very basic and with for sure improvable design. Even the repo may be a bit messy. Since I have not so much time for this but it is anyway working I am releasing as it is for now.  \nI would like to improve it one day adding:\n- Pitch/modulation wheels\n- Save configuration file to keep the \"shortcut voices\"\n- *other pages?*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftorydebra%2Fcasio_cts1_midi_controller","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftorydebra%2Fcasio_cts1_midi_controller","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftorydebra%2Fcasio_cts1_midi_controller/lists"}