Skip to content

Windfisch/loopfisch

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

loopfisch

An audio and MIDI loop machine written in Rust.

This is still in active development, but the basic functionality already works.

build test suite codecov

Features

  • JACK Audio output
  • Audio and MIDI support
  • Simultaneous recording of both Audio and MIDI at a time
  • As seamless as possible switching between both
  • Multiple audio chains (implemented by having multiple JACK ports)
  • separate "Main speakers" and "Monitoring headphones" output chains (not yet)
  • Browser-based user interface
  • Fully (PC-)keyboard-controllable (not yet)
  • MIDI clock master
  • MIDI transport slave (not yet)
  • Close-to-full unit test coverage for the engine

Build instructions

Currently, you need to use the unstable Rust toolchain, version 1.50 or later. You can add a per-directory override using

rustup override set nightly
rustup update # might or might not be needed

You might need to update rust, for more information, you can refer to https://rocket.rs/v0.4/guide/getting-started/.

Usage

Start a jack server, then launch the engine using cargo run. You should now be able to make REST requests like curl localhost:8000 /api/synths.

In order to be able to use the GUI, change to the web directory and run yarn serve. (You might need to yarn install before). Then access http://localhost:8080 in your web browser.

Test suite

Run the tests with cargo test.

Note that the outsourced_allocation_buffer tests are inherently racy and it might be needed to increase sleep time in fn wait(). There is nothing we can do about this, as this is the intended use case for outsourced_allocation_buffer. In normal situations, the allocator thread has between 0.2 to 2 seconds to react, but this would slow the test suite down heavily.