SoundSystem Studio
Make music inside Minecraft, then play it on the DJ tables of SoundSystem. SoundSystem Studio adds a workstation block in the style of FL Studio: a step sequencer, a piano roll, a mixer with effects, and a playlist with tempo changes and automation. The song you make becomes a track you can play on a DJ computer, like any SoundCloud track.
SoundSystem Studio is an addon: it needs SoundSystem and SoundSystem Lib. Put the three jars in mods/, all made for the same loader, Fabric or NeoForge, on the server and on every player's client. Details in Installation below.
First release: 0.1.0. It works, but it is young: Status below says what has not been verified yet.
What it brings
The workstation — A studio desk: a keyboard and a pad controller on the top, a wide screen between two monitor speakers, and a rack with lit modules underneath. It faces you when you place it. It is in the SoundSystem creative tab, under the Studio banner.
Channel rack — A step sequencer: a click places a step, a drag paints several. Each channel is one of three kinds:
- Synth — two oscillators, a filter, envelopes
- Drum — kick, snare, hat, clap or tom, made by the studio itself, with no file
- Sampler — your own sounds, WAV or OGG
Piano roll — Velocity, snap, ghost notes from the other channels, notes moved and stretched with the mouse.
Mixer — 17 inserts, up to 4 effects on each, channel routing, mute and pan. Six effects: echo, filter, reverb, distortion, compressor and a 3-band equalizer.
Playlist — 16 tracks, patterns you place, move and stretch, tempo changes (up to 64) and automation (an insert's volume and pan, the main knob of an effect: 16 curves of 128 points).
Editing together — Up to 4 players (configurable) on the same project at once. What one does shows up for the others straight away.
Files — .ssproj projects (the project and its samples in one file), WAV export, MIDI import.
Built-in help — The ? button of the editor sums it all up on one page.
On the DJ tables
A project becomes a track on the DJ computer:
- In the editor, build a song in the playlist.
- On a DJ computer, the source switch (next to the link field) cycles from SoundCloud to Studio.
- The list shows the world's projects that have a song, with their tempo and length. + (or a double click) adds one to the library.
- Load it on a deck: pitch, loops, effects, speakers and acoustics work as they do for a normal track.
The audio is never sent. The server shares only the notes (a few kilobytes); every player in range renders the sound themselves, and the render is identical on every machine.
A track is one revision of a project: if the producer keeps editing while a DJ plays the song, the decks keep the revision they loaded. Adding the project again gives a new track.
Installation
- Minecraft 1.21.1
- Fabric (Loader 0.16.14+ and Fabric API) or NeoForge 21.1+
- SoundSystem 2.2.1 or newer
- SoundSystem Lib 0.2.0 or newer
- Java 21
Drop the jars in the mods folder. The same mods are needed on the server and for the players.
Getting started
- Open the SoundSystem creative tab, go to the Studio banner and take the Studio Workstation. It has no crafting recipe for now.
- Place it and right-click: the editor opens.
- Paint steps in the rack, open the Roll to write notes, press Play (or space).
- In the Playlist, place your patterns on the bars to build the song.
- Go to a DJ computer, pick the Studio source, add your project and play it.
The Loop / Song button decides what Play plays: the selected pattern in a loop, or the whole song. The full guide is in docs/STUDIO.md.
Samples
The studio ships none: a sample is a file that you put in <game folder>/soundsystem-studio/library (WAV in 8 to 32 bits, or OGG, 20 seconds at most). In the editor, + Sample lists them; you can also pick a file elsewhere (Browse…) or drop it on the window.
The sample is sent to the server once, which keeps it; the other players get it by themselves when they open or hear a project that uses it. Only send what you may redistribute.
Files
Everything lives in <game folder>/soundsystem-studio/: projects (.ssproj), exports (.wav), midi (.mid) and library (samples). A name that is taken is never overwritten (name (2).ssproj).
- Opening a
.ssprojreplaces the project for everybody: the editor asks first. - Exporting a WAV: 16-bit, stereo, 44.1 kHz, through the same engine as the DJ tables. At most 30 minutes of song.
- Importing a MIDI file: the notes go to a new pattern on the selected channel. A file with more than 4096 notes or more than 64 bars is refused, not cut.
For the server's owner
config/soundsystemstudio.json is written with its defaults the first time the game starts.
| Option | Default | Meaning |
|---|---|---|
editPermission |
everyone |
Who may open a workstation: everyone, creative or op |
maxEditors |
4 |
How many players may have one project open (1 to 16) |
uploadPermission |
creative |
Who may send samples: off, creative, op, everyone |
maxSamplesPerPlayer |
64 |
Samples per player |
maxBytesPerPlayerMb |
64 |
MB per player |
maxStoreMb |
2048 |
Total size of the samples folder |
maxConcurrentUploads |
4 |
Uploads at the same time |
unusedDays |
30 |
Age after which an unused sample may be purged |
Commands
For operators:
/soundsystemstudio samples list— lists the server's samples/soundsystemstudio samples remove <hash>— removes a sample/soundsystemstudio samples purge-unused— deletes the samples no project uses any more/soundsystemstudio snapshots— shows how many revisions the world keeps for its DJ tables/soundsystemstudio snapshots purge <keep>— forgets all but the newest<keep>revisions of each project
A track made from a forgotten revision can no longer be played.
Limits
| Inserts | 17 (master included) |
| Effects | 4 per insert, 6 kinds |
| Playlist | 16 tracks |
| Tempo | 64 changes per song |
| Automation | 16 curves of 128 points |
| Sample | 20 seconds, 4 MB |
.ssproj project |
48 MB |
| Long-tailed effect | refused if it rings for more than 4 seconds |
The last one is on purpose: it lets a DJ table start anywhere in a song and hear exactly the same thing. An echo at low tempo with a lot of feedback, or a big reverb on an insert and the master, is the usual cause.
Status
Version 0.1.0 is out, for Fabric and NeoForge. Phases 0 to 8 of the plan are done in the code and tested in the game with a development client. The engine's tests cover rendering, projects, samples and robustness (fuzzing of every reader).
Not done or not verified yet:
- key-locked tempo on the decks (it needs a change in the lib)
- a test with two real players and on a dedicated server
- what it sounds like: the tests check that the render is identical from one machine to another, not that it sounds good
Documentation
- docs/STUDIO.md — the editor's guide
- docs/DJ.md — the studio on the DJ tables
- docs/SAMPLES.md — samples, from upload to storage
- docs/ENGINE.md — the renderer
- docs/DESIGN.md — the design
- docs/DEVELOPMENT.md — building and testing
Samples are files the players bring; the addon ships and hosts no audio itself.

