Also search on name when setting midi port
This commit is contained in:
@@ -1,3 +1,7 @@
|
||||
@file:OptIn(ExperimentalKotlinGradlePluginApi::class, ExperimentalDistributionDsl::class)
|
||||
|
||||
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
|
||||
import org.jetbrains.kotlin.gradle.targets.js.dsl.ExperimentalDistributionDsl
|
||||
import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackOutput
|
||||
|
||||
buildscript {
|
||||
|
||||
@@ -7,6 +7,8 @@ data class PatchDTO(
|
||||
val waveform: Int = 0,
|
||||
@JsName("midiId")
|
||||
val midiId: String = "",
|
||||
@JsName("midiName")
|
||||
val midiName: String = "",
|
||||
@JsName("midiChannel")
|
||||
var midiChannel: Int = 0,
|
||||
@JsName("volume")
|
||||
|
||||
@@ -74,11 +74,37 @@ object Midi {
|
||||
)
|
||||
}
|
||||
|
||||
fun setInput(id: String) {
|
||||
val selected = inputs.find { it.id == id }
|
||||
if (selected != null) {
|
||||
setInput(selected)
|
||||
fun setInput(id: String, name: String = "") {
|
||||
var selected = inputs.find { it.id == id }
|
||||
if (selected == null) {
|
||||
var maxMatchChar = 0
|
||||
inputs.forEach {
|
||||
val matchChars = matchChars(it.name, name)
|
||||
if (matchChars > maxMatchChar) {
|
||||
selected = it
|
||||
maxMatchChar = matchChars
|
||||
}
|
||||
}
|
||||
}
|
||||
setInput(selected)
|
||||
}
|
||||
|
||||
private fun matchChars(str1: String, str2: String): Int {
|
||||
var result = 0
|
||||
if (str1.length > str2.length) {
|
||||
for (ch in str1.toCharArray()) {
|
||||
if (str2.contains(ch)) {
|
||||
result++
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for (ch in str2.toCharArray()) {
|
||||
if (str1.contains(ch)) {
|
||||
result++
|
||||
}
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
fun setInput(input: MIDIInput?) {
|
||||
|
||||
@@ -175,7 +175,10 @@ object MainView : Komponent(), CssName {
|
||||
span(ButtonBarCss.name) {
|
||||
+"SAVE"
|
||||
onClickFunction = {
|
||||
val patch = VstChipWorklet.save().copy(midiId = Midi.currentInput?.id ?: "")
|
||||
val patch = VstChipWorklet.save().copy(
|
||||
midiId = Midi.currentInput?.id ?: "",
|
||||
midiName = Midi.currentInput?.name ?: ""
|
||||
)
|
||||
|
||||
WebsocketClient.send("SAVE\n${JSON.stringify(patch)}")
|
||||
}
|
||||
|
||||
@@ -86,7 +86,7 @@ object WebsocketClient {
|
||||
val patchJson = data.substring(5)
|
||||
val patch = JSON.parse<PatchDTO>(patchJson)
|
||||
|
||||
Midi.setInput(patch.midiId)
|
||||
Midi.setInput(patch.midiId, patch.midiName)
|
||||
VstChipWorklet.load(patch)
|
||||
MainView.requestUpdate()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user