[orx-midi] Fix problem in bindMidiNote

This commit is contained in:
Edwin Jakobs
2023-04-26 10:53:11 +02:00
parent 1f6e60faa0
commit bc7b5bba2d
3 changed files with 15 additions and 14 deletions

View File

@@ -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<Double>,

View File

@@ -48,6 +48,7 @@ class MidiConsole: Extension {
override fun afterDraw(drawer: Drawer, program: Program) {
drawer.defaults()
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)
@@ -59,3 +60,4 @@ class MidiConsole: Extension {
drawer.texts(messages, positions)
}
}
}

View File

@@ -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"
}
}