{"id":37021515,"url":"https://github.com/cassaundra/rocket","last_synced_at":"2026-01-14T02:32:52.323Z","repository":{"id":57731539,"uuid":"140226667","full_name":"cassaundra/rocket","owner":"cassaundra","description":"Java/Kotlin client for the Novation Launchpad MK2","archived":true,"fork":false,"pushed_at":"2021-12-14T00:20:30.000Z","size":323,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-08-16T14:37:33.385Z","etag":null,"topics":["java","kotlin","midi","novation-launchpad-mk2"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cassaundra.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}},"created_at":"2018-07-09T03:28:39.000Z","updated_at":"2025-01-10T04:15:48.000Z","dependencies_parsed_at":"2022-09-07T19:41:12.383Z","dependency_job_id":null,"html_url":"https://github.com/cassaundra/rocket","commit_stats":null,"previous_names":["actuallycass/rocket"],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/cassaundra/rocket","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cassaundra%2Frocket","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cassaundra%2Frocket/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cassaundra%2Frocket/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cassaundra%2Frocket/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cassaundra","download_url":"https://codeload.github.com/cassaundra/rocket/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cassaundra%2Frocket/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28408711,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T01:52:23.358Z","status":"online","status_checked_at":"2026-01-14T02:00:06.678Z","response_time":107,"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":["java","kotlin","midi","novation-launchpad-mk2"],"created_at":"2026-01-14T02:32:51.502Z","updated_at":"2026-01-14T02:32:52.311Z","avatar_url":"https://github.com/cassaundra.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build Status](https://travis-ci.com/cassaundra/rocket.svg?branch=master)](https://travis-ci.com/cassaundra/rocket)\n[![Maven Central](https://img.shields.io/maven-central/v/io.cassaundra/rocket.svg)](https://search.maven.org/artifact/io.cassaundra/rocket)\n[![Javadocs](https://www.javadoc.io/badge/io.cassaundra/rocket.svg)](https://www.javadoc.io/doc/io.cassaundra/rocket)\n\n\u003cimg src=\"Logo.png\" width=192 height=192\u003e\n\n## Table of Contents\n- [Setup](#setup)\n- [Getting Started](#getting-started)\n- [Colors](#colors)\n- [Displaying Text](#displaying-text)\n  - [Basics](#basics)\n  - [Speed](#speed)\n  - [Completion](#completion)\n- [TODO](#todo)\n\n## Setup\n\nAdd this to your pom.xml:\n\n```xml\n\u003cdependency\u003e\n  \u003cgroupId\u003eio.cassaundra\u003c/groupId\u003e\n  \u003cartifactId\u003erocket\u003c/artifactId\u003e\n  \u003cversion\u003e2.0.0\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\nAlternatively, with Gradle:\n\n```gradle\ndependencies {\n  compile 'io.cassaundra:rocket:2.0.0'\n}\n```\n\n## Getting Started\n\n```kotlin\nval rocket = Rocket()\n\nwith(rocket) {\n\t// Allow MIDI scanning to begin\n\tbeginMidiScan()\n\t\n\t// Listen for input events\n\taddListener(object : LaunchpadListener {\n\t\toverride fun onPadDown(pad: Pad) {\n\t\t\tsetPad(pad, Color.WHITE)\n\t\t}\n\t\n\t\toverride fun onPadUp(pad: Pad) {\n\t\t\tsetPad(pad, Color.OFF)\n\t\t}\n\t\n\t\toverride fun onButtonDown(button: Button) {\n\t\t\tif(button.isTop)\n\t\t\t\tsetButton(button, Color.RED)\n\t\t\telse\n\t\t\t\tsetButton(button, Color.BLUE)\n\t\t}\n\t\n\t\toverride fun onButtonUp(button: Button) {\n\t\t\tsetButton(button, Color.OFF)\n\t\t}\n\t})\n}\n\n```\n\nSimilarly, in Java...\n\n```java\nRocket rocket = new Rocket();\n\n// Allow MIDI scanning to begin\nrocket.beginMidiScan();\n\n// Listen for input events\nrocket.addListener(new LaunchpadListener() {\n    public void onPadDown(Pad pad) {\n        rocket.setPad(pad, Color.WHITE);\n    }\n\n    public void onPadUp(@NotNull Pad pad) {\n        rocket.setPad(pad, Color.OFF);\n    }\n\n    public void onButtonDown(@NotNull Button button) {\n        if(button.isTop())\n            rocket.setButton(button, Color.RED);\n        else\n            rocket.setButton(button, Color.BLUE);\n    }\n\n    public void onButtonUp(@NotNull Button button) {\n        rocket.setButton(button, Color.OFF);\n    }\n});\n```\n\nNow you're on your way to creating a full Launchpad app!\n\n## Colors\n\nYou can use custom colors by specifying RGB int values between 0 and 63 inclusive.\n\n```kotlin\nval color = Color(42, 0, 30)\n```\n\nIn Java,\n\n```java\nColor color = new Color(42, 0, 30);\n```\n\nIf you want to convert an HSV value to a Launchpad color, use `Color.fromHSV`, with each value a float in the range 0 to 1.\n\n```kotlin\nColor.fromHSV(.5f, 1f, 1f)\n```\n\n## Displaying Text\n\n### Basics\n\nYou can call the Launchpad's built-in MIDI command for displaying text with `Launchpad.displayText`.\n\n```kotlin\nrocket.displayText(\n    \"Hello world!\"\n)\n```\n\nIn Java,\n\n```java\nrocket.displayText(\n    \"Hello world!\"\n);\n```\n\n### Speed\n\nYou can control the text scrolling speed per-character with seven different available speeds in `TextSpeed`.\n\n```kotlin\nrocket.displayText(\n    \"Hello! ${TextSpeed.SPEED_1}Let's take this slower.\"\n)\n```\n\nIn Java,\n\n```java\nrocket.displayText(\n    \"Hello! \" + TextSpeed.SPEED_1 + \"Let's take this slower.\"\n);\n```\n\n### Completion\n\nIf you need to know when text has finished scrolling, you can use the onComplete argument.\n\n```kotlin\nrocket.displayText(\n    \"Hello world!\",\n    onComplete = Runnable { println(\"Done!\") }\n)\n\n```\n\nIn Java,\n\n```java\nrocket.displayText(\n    \"Hello world!\"\n);\n```\n\n## Utils\n\n`Pad.Util` provides several useful utility functions, like rectangles, line segments, and more.\n\n## TODO\n* Add contributing documentation\n* Add support for multiple Launchpads (I have only one)\n* Use Gradle instead of Maven\n* Add more unit tests!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcassaundra%2Frocket","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcassaundra%2Frocket","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcassaundra%2Frocket/lists"}