go - MIDI 消息的 OSC 消息格式

标签 go midi osc ableton-live

我正在使用 github.com/hypebeast/go-osc/osc 包将 OSC 消息发送到 OSC 服务器。为此,我使用了 OSCulator,这样我就可以将数据作为 MIDI 发送到 Abelton Live。

我遇到的问题是我找不到任何关于消息格式的信息,比如音符开始、音符关闭、持续时间等。我在 OSCulator 网站上找到了一个指南,它有点帮助,但它没有用详细了解消息传递:http://s3.amazonaws.com/osculator/doc/OSCulator+2.12+Manual.pdf

例如,下面的函数工作得很好,但我不知道消息到底在做什么:

func note(pitch float32 , velocity float32) {

    // TODO: Pass client into function. Find out it's type.
    client := osc.NewClient("localhost", 8765)     

    noteMsg := osc.NewMessage("/4/toggle2")
    client.Send(noteMsg)

    msg := osc.NewMessage("/4/xy")
    msg.Append(pitch)
    msg.Append(velocity)
    client.Send(msg)
}

我的意思是,4 在其中起什么作用,xy 是什么?此外,除了 toggle2 之外还有哪些其他消息可用?我以为会有某种在线文档,其中包含可用于 MIDI 类型应用程序的所有不同类型的消息。

最佳答案

您的问题似乎与 OSC 本身更相关。

OSC 是这样工作的:

您向服务器发送消息。一条消息由一个地址和一些值组成。

在这种情况下,/4/xy 是地址。 4 和您定义的斜杠将是什么。当你在另一边收到它时,你就会知道你想要收到什么,这意味着你要发送的地址。因此,您将配置服务器或接收方在从特定地址接收到消息时执行某些操作。

以同样的方式,您将值附加到消息中。您已经知道的值的数量,因此您只需要在收到它们时对它们执行您想要的操作即可。

基本上,如果你决定让键盘发送音符,你会使用像 /keyboard/note 这样的地址作为地址并一次发送一个值,所以你会读取这个值并做一些事情用它。

关于go - MIDI 消息的 OSC 消息格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36217924/

相关文章:

java - 将开放声音控制 (OSC) 与多播结合使用

python - 当我不知 Prop 体编码时如何解码数据

go - Golang MySQL驱动程序不允许使用ProxySQL进行数据库更改

go - 有没有办法在不停机的情况下更新 net/http 服务器中的 TLS 证书?

python - 如何使用 pyPortMidi 或 pygame 发送 midi 控制更改消息 (CC)?

python - 在 Python 和 Mac Lion 中写入 MIDI 端口

java - 调用 `setText()` 时 JTextfield 未更新

go - 为什么在 Go 的 if 语句中创建结构是非法的?

go - 在 go 中,如果我们想使用该文件中定义的函数,是否不需要在同一目录中导入另一个文件?

Node.JS 通过 UDP 到 OSC