Created
December 23, 2017 19:24
-
-
Save tomaszrykala/d4dc5334ea86a1013349ee262d2a4d69 to your computer and use it in GitHub Desktop.
MidiControls.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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