Skip to content

Latest commit

 

History

History
183 lines (138 loc) · 7.53 KB

README.md

File metadata and controls

183 lines (138 loc) · 7.53 KB

Introduction

Here we collect (and learn about) all possible useful information.

When programming Internet-applications, some basic networking knowledge about https://en.wikipedia.org/wiki/Internet_protocol_suite can be useful.

When it comes to streaming audio/video or other realtime communications, some specific protocols have been developed over the years. We explore them a bit in StreamingProtocols.

One particular interesting use-case that has been researched by audio professionals (and is also implemented by Apple in their OS's and therefore also known as AppleMIDI) is RTP-MIDI.

All previous links serve more as background-information.

Next we collect what could actually be useful for our project:

WebRTC

  • uses SCTP: Stream Control Transmission Protocol (transport layer protocol)
  • uses DTLS: TLS for UDP- or SCTP-datagrams
  • several Javascript API's:
    • getUserMedia
    • RTCPeerConnection
    • RTCDataChannel (similar API to websocket but latency)
    • getStats
  • requires SIP, SIP over websockets (RFC7118), XMPP (Jabber), ... for signaling
  • The official examples:

Golang:

MIDI

Golang:

Music theory / math

Golang:

Front-end audio/midi

WASM and Golang

Audio processing

Golang:

Most likely all audio-stuff in golang requires some non-Go-code (cgo, clang, ...) under the hood. This is not ideal! We must consider this as potential time-stealing problems when building/testing and at a later stage supportability. TODO: keep track of additional dependencies on each platform!

Websockets

See Websockets.md for some notes on the Websocket-protocol as per RFC's and other useful websites.

Golang:

Websocket performance

SSE

Server-Sent Events

HTTP/2

Utility