From bc7b5bba2d6d319b0287692c87edee7201d457ea Mon Sep 17 00:00:00 2001 From: Edwin Jakobs Date: Wed, 26 Apr 2023 10:53:11 +0200 Subject: [PATCH] [orx-midi] Fix problem in bindMidiNote --- .../orx-midi/src/main/kotlin/MidiBindings.kt | 3 +-- .../orx-midi/src/main/kotlin/MidiConsole.kt | 18 ++++++++++-------- .../src/main/kotlin/MidiTransceiver.kt | 8 ++++---- 3 files changed, 15 insertions(+), 14 deletions(-) diff --git a/orx-jvm/orx-midi/src/main/kotlin/MidiBindings.kt b/orx-jvm/orx-midi/src/main/kotlin/MidiBindings.kt index 5267cae3..74009078 100644 --- a/orx-jvm/orx-midi/src/main/kotlin/MidiBindings.kt +++ b/orx-jvm/orx-midi/src/main/kotlin/MidiBindings.kt @@ -22,12 +22,11 @@ fun bindMidiNote(on: () -> Unit, off: () -> Unit, transceiver: MidiTransceiver, } transceiver.noteOff.listen { if ((channel == -1 || it.channel == channel) && it.note == note) { - on() + off() } } } - @JvmName("bindMidiControlDouble") fun Program.bindMidiControl( property: KMutableProperty0, diff --git a/orx-jvm/orx-midi/src/main/kotlin/MidiConsole.kt b/orx-jvm/orx-midi/src/main/kotlin/MidiConsole.kt index d4bba268..9b919336 100644 --- a/orx-jvm/orx-midi/src/main/kotlin/MidiConsole.kt +++ b/orx-jvm/orx-midi/src/main/kotlin/MidiConsole.kt @@ -48,14 +48,16 @@ class MidiConsole: Extension { override fun afterDraw(drawer: Drawer, program: Program) { drawer.defaults() - box = Rectangle(drawer.width - box.width, 0.0, box.width, drawer.height*1.0) - val positions = List(messages.size) { index -> - Vector2(box.x, box.y + index * 16.0 + 16.0) + synchronized(messages) { + box = Rectangle(drawer.width - box.width, 0.0, box.width, drawer.height * 1.0) + val positions = List(messages.size) { index -> + Vector2(box.x, box.y + index * 16.0 + 16.0) + } + if (demoFont) { + drawer.fontMap = loadFont("demo-data/fonts/IBMPlexMono-Regular.ttf", 16.0) + } + drawer.fill = ColorRGBa.WHITE + drawer.texts(messages, positions) } - if (demoFont) { - drawer.fontMap = loadFont("demo-data/fonts/IBMPlexMono-Regular.ttf", 16.0) - } - drawer.fill = ColorRGBa.WHITE - drawer.texts(messages, positions) } } \ No newline at end of file diff --git a/orx-jvm/orx-midi/src/main/kotlin/MidiTransceiver.kt b/orx-jvm/orx-midi/src/main/kotlin/MidiTransceiver.kt index 81ac1716..1d001729 100644 --- a/orx-jvm/orx-midi/src/main/kotlin/MidiTransceiver.kt +++ b/orx-jvm/orx-midi/src/main/kotlin/MidiTransceiver.kt @@ -65,7 +65,7 @@ data class MidiDeviceDescription( class MidiTransceiver(program: Program, val receiverDevice: MidiDevice?, val transmitterDevicer: MidiDevice?) { companion object { - fun fromDeviceVendor(program: Program, name: String, vendor: String): MidiTransceiver { + fun fromDeviceVendor(program: Program, name: String, vendor: String? = null): MidiTransceiver { val infos = MidiSystem.getMidiDeviceInfo() var receiverDevice: MidiDevice? = null @@ -75,17 +75,17 @@ class MidiTransceiver(program: Program, val receiverDevice: MidiDevice?, val tra try { val device = MidiSystem.getMidiDevice(info) if (device !is Sequencer && device !is Synthesizer) { - if (info.vendor == vendor && info.name == name) { + if ((vendor == null || info.vendor == vendor) && info.name == name) { logger.info { "found matching device $name / $vendor" } if (device.maxTransmitters != 0 && device.maxReceivers == 0) { transmitterDevice = device - logger.info { + logger.debug { "found transmitter" } } if (device.maxReceivers != 0 && device.maxTransmitters == 0) { receiverDevice = device - logger.info { + logger.debug { "found receiver" } }