Skip to content

Instantly share code, notes, and snippets.

@tomaszrykala
Created December 23, 2017 19:24
Show Gist options
  • Save tomaszrykala/d4dc5334ea86a1013349ee262d2a4d69 to your computer and use it in GitHub Desktop.
Save tomaszrykala/d4dc5334ea86a1013349ee262d2a4d69 to your computer and use it in GitHub Desktop.
MidiControls.kt
class MidiControls(presenter: MidiControllerContract.Presenter) {
private val driver: Driver = Driver()
private val mcpDriverManager: McpDriverManager = McpDriverManager(presenter, driver)
private val midiButtonDrivers: MutableList<ButtonInputDriver> = mutableListOf()
private val midiButtonMapping: Map<String, Int> = mapOf(
driver.getBtn0() to KeyEvent.KEYCODE_0,
driver.getBtn1() to KeyEvent.KEYCODE_1,
driver.getBtn2() to KeyEvent.KEYCODE_2,
driver.getBtn3() to KeyEvent.KEYCODE_3
)
val midiButtons: MutableList<MidiButton> = mutableListOf()
fun onStart() {
midiButtonMapping.asIterable().forEachIndexed { index, entry ->
midiButtonDrivers.add(buttonInputDriver(entry.key, MidiButton(entry.value, index.toByte())))
}
mcpDriverManager.start()
}
private fun buttonInputDriver(pin: String, midiButton: MidiButton): ButtonInputDriver {
return ButtonInputDriver(pin, Button.LogicState.PRESSED_WHEN_LOW, midiButton.keyCode).apply {
register()
midiButtons.add(midiButton)
}
}
fun onClose() {
midiButtonDrivers.forEach {
it.unregister()
it.close()
}
mcpDriverManager.stop()
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment