Giter VIP home page Giter VIP logo

hero-studio's Introduction

Hero Studio

This project is an attempt to build a music studio similar to Ableton Live or Bitwig Studio.

The initial scope will be to output only MIDI events, with the simplest way to arrange clips.

UI development

All related to the UI is still very uncertain. I've been exploring several options but I don't feel like buying anyone of them yet. The one that I will be exploring consists on building the UI with Electron which would delegate to the core logic in rust. More information about the development of the idea here.

Suggestions are welcome.

Organisation

This is a multi-project composed by:

  • core: The core data model and logic.
  • app-native: The native application that handles Audio/MIDI and uses the core.

More sub-projects will come depending on how I decide to build the UI.

Running

You will need to install PortAudio before running the project as we're using the portaudio crate which has a dependency on it.

If you get this error:

error while loading shared libraries: libportaudio.so.2: cannot open shared object file: No such file or directory

then you should install libportaudio:

# ubuntu
sudo apt-get install libportaudio2

Finally, you can run the project:

cd app-native
cargo run --release

Tests

Tests can be run with:

cargo test

Roadmap

  • core: Basic transport logic with accurate timing: play, stop, loop
  • app-native: Allow MIDI configuration through studio.toml
  • core: MIDI bus system
  • core: Implement a basic metronome using MIDI notes
  • core: Management of time and sync between different clocks: Audio, Midi, Host, Ticks
  • app-native: Build MIDI output abstraction to send MIDI events to a device using CoreMIDI as an initial impl (in progress)
  • core: Filling MIDI output buffers from the Song clips (initially choose one type of clip between pianoroll, step-sequencer, drum-box).
  • Start exploring UI integration
  • ...

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.