Music Set Scripting language
Find a file
2022-02-23 16:06:20 -05:00
bliss-rs@1f101b5975 Upgrade some components to symphonia v0.5 2022-02-03 16:56:17 -05:00
extras Version bump and update README 2022-01-26 15:42:28 -05:00
mpris-player@2e843ec8d9
mps-interpreter Add unique filters 2022-02-23 16:06:20 -05:00
mps-m3u8 Fix license string for all packages 2022-02-02 16:08:10 -05:00
mps-player Create non-iter operations and implement basics for Turing completeness 2022-02-19 20:17:31 -05:00
src Document iter block functionality and cargo fmt 2022-02-23 11:33:45 -05:00
tests Implement simple CLI for executing scripts 2022-01-02 20:20:09 -05:00
.gitignore
.gitmodules Switch over to symphonia-based bliss to simplify compiling and dependency tree 2022-01-26 13:28:15 -05:00
Cargo.lock Refactor music analysis functionality to add to MpsContext 2022-02-04 21:49:13 -05:00
Cargo.toml Fix license string for all packages 2022-02-02 16:08:10 -05:00
LICENSE Create LICENSE 2022-01-01 04:30:05 +00:00
ngnius.mps.desktop Add desktop info/icon to OS controls (and leave hint for way to improve REPL UX, disabled because extensive and incomplete) 2022-01-16 21:00:00 -05:00
README.md Fix license string for all packages 2022-02-02 16:08:10 -05:00
README.tpl Update licensing info 2022-01-31 16:37:24 -05:00

mps

repl_demo

A language all about iteration to play your music files. This project implements the interpreter (mps-interpreter), music player (mps-player), and CLI interface for MPS (root). The CLI interface includes a REPL for running scripts. The REPL interactive mode also provides more details about using MPS through the ?help command.

Usage

To access the REPL, simply run cargo run. You will need the Rust toolchain installed.

Examples

For now, check out ./src/tests, ./mps-player/tests, and ./mps-interpreter/tests for examples. One day I'll add pretty REPL example pictures and some script files... // TODO

FAQ

Is MPS Turing-Complete?

No. It can't perform arbitrary calculations (yet), which easily disqualifies MPS from being Turing-complete.

Can I use MPS right now?

Sure! It's not complete, but MPS is completely useable for basic music queries right now. Hopefully most of the bugs have been ironed out as well...

Why write a new language?

I thought it would be fun. I also wanted to be able to play my music without having to be at the whim of someone else's algorithm (and music), and playing just by album or artist was getting boring. I also thought designing a language specifically for iteration would be a novel approach to a language (though every approach is a novel approach for me).

What is MPS?

Music Playlist Script (MPS) is technically a query language for music files. It uses an (auto-generated) SQLite3 database for SQL queries and can also directly query the filesystem. Queries can be modified by using filters, functions, and sorters built-in to MPS (see mps-interpreter's README.md).

Is MPS a scripting language?

No. Technically, it was designed to be one, but it doesn't meet the requirements of a scripting language (yet). One day, I would like it be Turing-complete and then it could be considered a scripting language. At the moment it is barely a query language.

License

LGPL-2.1-only OR GPL-3.0-only

NOTE: When advanced features are enabled, GPL-3.0 must be used.

Contribution

This is a hobby project, so any contribution may take a while to be acknowledged and accepted.