-
Notifications
You must be signed in to change notification settings - Fork 13
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
30 changed files
with
417 additions
and
321 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
package baaahs.rpc | ||
|
||
import kotlin.coroutines.CoroutineContext | ||
|
||
public class RpcClientId(public val id: String) : CoroutineContext.Element { | ||
override val key: CoroutineContext.Key<*> | ||
get() = Key | ||
|
||
public companion object Key : CoroutineContext.Key<RpcClientId> | ||
} |
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
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
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
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
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,27 +1,27 @@ | ||
package baaahs.midi | ||
|
||
import baaahs.PubSub | ||
import baaahs.plugin.Plugins | ||
import kotlinx.serialization.builtins.ListSerializer | ||
import kotlinx.serialization.builtins.serializer | ||
|
||
class MidiCommandPorts(plugins: Plugins) { | ||
val listTransmittersCommandPort = PubSub.CommandPort( | ||
"/midi/listTransmitters", | ||
RemoteMidiDevices.ListTransmittersCommand.serializer(), | ||
ListSerializer(RemoteMidiDevices.RemoteMidiDeviceInfo.serializer()), | ||
plugins.serialModule | ||
) | ||
val listenToTransmitterCommandPort = PubSub.CommandPort( | ||
"/midi/listenToTransmitter", RemoteMidiDevices.ListenToTransmitterCommand.serializer(), Unit.serializer(), | ||
plugins.serialModule | ||
) | ||
val midiEventCommandPort = PubSub.CommandPort( | ||
"/midi/event", RemoteMidiDevices.MidiEventCommand.serializer(), Unit.serializer(), | ||
plugins.serialModule | ||
) | ||
val closeTransmitterCommandPort = PubSub.CommandPort( | ||
"/midi/closeTransmitter", RemoteMidiDevices.CloseTransmitterCommand.serializer(), Unit.serializer(), | ||
plugins.serialModule | ||
) | ||
} | ||
//package baaahs.midi | ||
// | ||
//import baaahs.PubSub | ||
//import baaahs.plugin.Plugins | ||
//import kotlinx.serialization.builtins.ListSerializer | ||
//import kotlinx.serialization.builtins.serializer | ||
// | ||
//class MidiCommandPorts(plugins: Plugins) { | ||
// val listTransmittersCommandPort = PubSub.CommandPort( | ||
// "/midi/listTransmitters", | ||
// RemoteMidiDevices.ListTransmittersCommand.serializer(), | ||
// ListSerializer(RemoteMidiDevices.RemoteMidiDeviceInfo.serializer()), | ||
// plugins.serialModule | ||
// ) | ||
// val listenToTransmitterCommandPort = PubSub.CommandPort( | ||
// "/midi/listenToTransmitter", RemoteMidiDevices.ListenToTransmitterCommand.serializer(), Unit.serializer(), | ||
// plugins.serialModule | ||
// ) | ||
// val midiEventCommandPort = PubSub.CommandPort( | ||
// "/midi/event", RemoteMidiDevices.MidiEventCommand.serializer(), Unit.serializer(), | ||
// plugins.serialModule | ||
// ) | ||
// val closeTransmitterCommandPort = PubSub.CommandPort( | ||
// "/midi/closeTransmitter", RemoteMidiDevices.CloseTransmitterCommand.serializer(), Unit.serializer(), | ||
// plugins.serialModule | ||
// ) | ||
//} |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,9 +1,25 @@ | ||
package baaahs.midi | ||
|
||
import baaahs.rpc.Service | ||
|
||
@Service | ||
interface MidiDevices { | ||
suspend fun listTransmitters(): List<MidiTransmitter> | ||
suspend fun listTransmitters(): List<MidiPort> | ||
|
||
companion object { | ||
val IMPL by lazy { MidiDevices.getImpl("pinky/midiDevices") } | ||
} | ||
} | ||
|
||
//class MidiManager( | ||
// rpcEndpoint: RpcEndpoint | ||
//) : MidiDevices { | ||
// val midiDevicesService = MidiDevices.IMPL.createReceiver(rpcEndpoint, object : MidiDevices { | ||
// override suspend fun listTransmitters(): List<MidiPort> { | ||
// TODO("not implemented") | ||
// } | ||
// }) | ||
//} | ||
class NullMidiDevices : MidiDevices { | ||
override suspend fun listTransmitters(): List<MidiTransmitter> = emptyList() | ||
override suspend fun listTransmitters(): List<MidiPort> = emptyList() | ||
} |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
package baaahs.midi | ||
|
||
import baaahs.rpc.Service | ||
import kotlinx.coroutines.CoroutineScope | ||
import kotlinx.coroutines.launch | ||
import kotlinx.datetime.Instant | ||
import kotlinx.serialization.Serializable | ||
|
||
@Service | ||
interface MidiGatewayApi { | ||
suspend fun deviceOnline(midiDeviceId: Int, midiDevice: MidiDevice) | ||
suspend fun receivedEvent(midiDeviceId: Int, midiEvent: MidiEvent) | ||
suspend fun deviceOffline(midiDeviceId: Int) | ||
|
||
companion object { | ||
val IMPL by lazy { MidiGateway.getImpl("pinky/midiGateway") } | ||
} | ||
} | ||
|
||
@Service | ||
interface MidiGateway { | ||
suspend fun receivedEvent(midiDevice: MidiDevice, midiEvent: MidiEvent) | ||
suspend fun deviceOffline(midiDevice: MidiDevice) | ||
|
||
companion object { | ||
val IMPL by lazy { MidiGateway.getImpl("pinky/midiGateway") } | ||
} | ||
} | ||
|
||
class MidiGatewayServer : MidiGateway { | ||
override suspend fun receivedEvent(midiDevice: MidiDevice, midiEvent: MidiEvent) { | ||
TODO("not implemented") | ||
} | ||
|
||
override suspend fun deviceOffline(midiDevice: MidiDevice) { | ||
TODO("not implemented") | ||
} | ||
} | ||
|
||
class MidiGatewayClient( | ||
private val midiGateway: MidiGateway, | ||
private val scope: CoroutineScope | ||
) { | ||
fun receivedEvent(midiDevice: MidiDevice, midiEvent: MidiEvent) { | ||
scope.launch { | ||
midiGateway.receivedEvent(midiDevice, midiEvent) | ||
} | ||
} | ||
} | ||
|
||
@Serializable | ||
data class MidiDevice( | ||
val id: String, | ||
val name: String, | ||
val vendor: String, | ||
val description: String, | ||
val version: String | ||
) | ||
|
||
@Serializable | ||
data class MidiEvent( | ||
val instant: Instant, | ||
val channel: Int, | ||
val command: Int, | ||
val data1: Int, | ||
val data2: Int | ||
) |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
package baaahs.midi | ||
|
||
interface MidiPort |
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.