2
3
Fork
You've already forked moire
0
forked from moire/moire
Moiré is a musical live performance application with a DAW-like timeline interface
  • Rust 100%
2022年08月06日 14:05:52 +02:00
assets rename to Moiré and revise roadmap 2021年12月09日 15:12:32 -06:00
containers add Cargo config.toml to macOS container 2022年02月18日 12:24:30 -06:00
crates Rename constant 2022年08月06日 12:20:04 +02:00
.codespellignore Add .justfile and various config files 2022年07月06日 00:35:14 +02:00
.commitlintrc.json Add .justfile and various config files 2022年07月06日 00:35:14 +02:00
.gitignore add Containerfiles for cross compiling 2022年02月14日 02:46:46 -06:00
.justfile Delete obsolete exclusions for cargo upgrade 2022年07月26日 15:18:54 +02:00
.markdownlint-cli2.yaml Add .justfile and various config files 2022年07月06日 00:35:14 +02:00
.pre-commit-config.yaml Convert u64 value to i32 property in UI 2022年07月28日 10:28:00 +02:00
.rustfmt.toml Add .justfile and various config files 2022年07月06日 00:35:14 +02:00
Cargo.lock Update aoide dependencies: Hash chain of track search results 2022年08月06日 14:05:52 +02:00
Cargo.toml Split library into frontend and backend 2022年07月21日 11:02:06 +02:00
Cross.toml add Cross.toml to pass through environment variables 2022年02月17日 18:48:31 -06:00
LICENSE.txt initial commit with a README, ROADMAP, and GPLv3 license 2021年11月30日 21:13:56 -06:00
README.md Fix codespell issues 2022年07月06日 00:45:58 +02:00
ROADMAP.md Fix markdownlint-cli2 issues 2022年07月06日 00:45:58 +02:00

Moiré

Moiré will be a new DJ application written in Rust with a DAW-like timeline interface. Refer to the roadmap.

Come say hi on the Zulip chat.

A moiré is "an interference pattern produced by overlaying similar but slightly offset templates".

♫ When the spacing is tight / And the difference is slight / That's a moiré ♫

XKCD comic by Randall Munroe licensed under Creative Commons Attribution-NonCommercial 2.5 License.

Moiré is licensed under the GNU General Public License version 3 or later.

Building & running

Moiré is written in Rust and has few C dependencies.

JACK is required on all operating systems. On Windows and macOS, libjack does not need to be available at build time, only at runtime. On Linux, Pipewire JACK can be used instead of JACK1 or JACK2 (pipewire-jack-audio-connection-kit-devel package on Fedora). JACK/Pipewire needs to be running before running Moiré.

On Linux, at least one of the x11 or wayland Cargo features must be enabled. Both are enabled by default. The x11 feature requires the xcb library (libxcb-devel package on Fedora).

On Linux, fontconfig is required. Also, an XDG Desktop Portal implementation that supports the org.freedesktop.portal.FileChooser D-Bus API needs to be available at runtime. The KDE, GNOME, and GTK XDG Desktop Portal backends provide this, but the wlroots backend does not. The wlroots backend can be installed simultaneously with another backend that provides the FileChooser API.

After these dependencies are installed, building is as simple as:

cargo build

and running is as simple as:

cargo run

Development

Various development tasks are automated using just recipes that are configured in .justfile.

Use Cargo for installing the just command:

cargo install just

Get started by installing (or updating) the dev tools required for the project:

just setup

List the available recipes:

just

Upgrade all dependencies periodically:

just upgrade

Check that all crates can be built independently after modifying dependencies:

just check

Each commit should pass the pre-commit hook checks:

just pre-commit

Goals

  • Equally usable as a casual music player application on a phone in a pocket or a full fleged DJ software on a laptop
  • Support features common on commercially available contemporary DJ controllers from popular manufacturers
  • Eventually support timecode vinyl control
  • Eventually crossplatform (Linux, Windows, potentially Android) but focusing on Linux first (desktop and mobile Linux)
  • Strive for designs that work for a wide variety of use cases before resorting to adding options
  • Actively work to solve problems upstream and collaborate with other projects
  • Purely FOSS without proprietary dependencies beyond operating system APIs
  • Use FOSS infrastructure as much as practical (exceptions can be made, for example, for building the application on proprietary operating systems)
  • Consensus-based decision making and cooperative, nonhierarchical governance. Irreconcilable disagreements will be decided promptly by voting. Details will be worked out as more people join.

Non-goals

  • Video playback, mixing, manipulation, or generation. Communication with external video applications over standard protocols would be welcome though.
  • Imitating other DJ software verbatim. This is its own application. Proposals will be evaluated on their own merits, not simply because another software does it that way.
  • Antifeatures (functionality that acts against the interest of the user), for example DRM. Antifeatures also include interacting with any network services such as music streaming services whose terms of service would require implementing artificial restrictions.