Coder Social home page Coder Social logo

midipool's Introduction

midiPool

another attempt to build a midi/audio syncing thing with computers

long term/no term goals
  • stable enough that it's usable for online jam sessions
  • server/client architecture
  • client spawns two virtual midi devices (send/recv.) with rtmidi.
  • json msg bus
  • users can join broadcast rooms
  • server sends 'bar_sync_msg' to all clients, the msg contains {target_send_timestamp,bpm,position}. client generates a stack of 0xFB and 0xF8 midi messages. this messages will kept in buffer. every message contains a target_send_timestamp. a dedicated clock message spooler pipes the messages into the virtual midi input device. every client receives tick/continue messages simultaneously. clock slave sequencers should be bpm/tick/position synced
  • clients can send midi messages to the virtual midi output device. this messages will be filtered by type (bpm change/pos. change/start/stop/loop area change). this messages will be send to the server which broadcasts it ot all clients. this messages will be send directly to the clients virtual input device. if so that changes other then tempo and sync are received immediately by the clients sequencer
  • 50% done. client spawns virtual audio devices (send/recv.). audio output of all users is send to the server, and returned to the audio input device of all clients
  • audi mixer interface for clients
technologies
  • https://www.boost.org. c++, crosscompiling, lightweight, async tcp sockets, latest threading/async/coroutine clang features, static linked binaries probably possible
  • https://github.com/thestk/rtmidi /rtaudio crossplatform layer. portaudio/asio/alsa/core audio support
  • json/?protobuf. simple msg datastructures. midi messages generated on client side
  • https://roc-streaming.org FECFRAME/RTP network audio streaming. c library, lightweight, crosscompiling
  • https://github.com/thestk/rtmidi /nanovg. vst client intergration
  • udp hole punching. configuration free accessibility for noobs

midipool's People

Contributors

gavv avatar my5t3ry avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.