Code Monkey home page Code Monkey logo

flow-synth's Introduction

flow-synth

A modular digital audio workstation for synthesis/sequencing/live coding/visuals/etc.

This project is on hiatus while I'm busy with school. It's also at a very early stage. It is currently not useful for anything. APIs and use cases can/will change tremendously.

Documentation is currently hosted on the wiki.

Development follows nightly Rust. To test it out, do

$ rustup run nightly cargo run --release

If you get errors, it's probably either because your rustc is out of date, or because I haven't updated the project yet after some breaking change. Grabbing the nightly at the time of the most recent commit should resolve the issue.

flow-synth's People

Contributors

nwoeanhinnogaehr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

flipscholtz

flow-synth's Issues

Graph save/load

To have any practical use, we clearly need to be able to save and restore projects.

Text editing

I've been thinking about perhaps embedding alacritty once they support embedding. But perhaps writing an Xi frontend would be better. Anything beats rolling our own text boxes - the quick implementation I have now will probably not be extended to multiline in favor of embedding something that is externally maintained and comfortable to use for long periods of time.

Use gfx_glyph for text rendering

Currently, gfx_text is used, but it is very inflexible. gfx_glyph is lower level but should satisfy flexibility needs.

Bitmap fonts / pixel perfect TTF is not supported in gfx_glyph as well as gfx_text. We can live without.

Dynamic module loading

To begin with, dynamic reloading should perhaps be avoided, but we should certainly be able to load new modules at runtime. Or at least at startup, but from a shared library.

Embed Gluon

I think that http://gluon-lang.org/ would make a good language for live coding. It has excellent rust interop and the operator overloading we need to live coding smooth.

Once we have #2, text editing, this is probably the next step.

I hope to have a simple way to transparently write modules in gluon. Only the most performance critical modules will need to be written in rust directly.

async/await

Using Future combinators can be quite unwieldy (see audio io for example) so writing modules is currently awkward. Data must be moved between processing stages explicitly in the current model. Async/await should improve this.

Ideally I think the module could be polled repeatedly until it is closed, in contrast to how the module is currently polled infinitely by the executor until it decides to stop itself. Maybe some kind of custom executor could handle that.

Consider factoring essential functionality out of the GUI

I don't know if headless mode is ever going to be a thing, but regardless it should be possible to do save/load, module creation/deletion, connection, etc without explicitly going through the GUI. Maybe via some kind of generic frontend trait. This will aid with testing and hopefully improve readability.

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.