Skip to content
MusicStation – Home

Release history

Every release of MusicStation with the notes that shipped with it. The version this website describes is marked as the current one.

Go to the download

MusicStation 0.4.0Current version

This release makes the window yours and gives MusicStation a memory. The window is built from panels you dock, resize and arrange into workspaces; the keyboard follows a shortcut map of your own; a third theme and track colours make a large session readable at a glance. And MusicStation saves: a project file holds your clips, the tempo, the launch quantisation and the track colours, a version history keeps named snapshots of it, and you can compare two of those snapshots and go back to one of them without losing the state you are on. The release notes in the About dialog are searchable now, and an optional update check can tell you when a newer version exists. The product website with the complete manual, the feature overview and the release history is online too.

New

  • Dockable, resizable panels: every movable view of the window is a panel, and every panel sits in one of the three dockable regions Left, Right and Bottom or in the Centre. Its header carries the Region menu, which docks it into another region, and the Hide button, which closes it. A region stacks the panels docked in it in the order they arrived, and only one panel fits into the centre: docking another one there closes the panel that was there. Between every region and the centre sits a splitter: drag it with the pointer, or focus it and use the arrow keys (one percent of the window per press, Shift five percent), and Home snaps the region to its documented minimum. A region is never narrower than 120 px and never takes more than half of the window, so the other half always stays for the centre - and when less than 120 px are left for it, the centre is not rendered at all.
  • The Panels menu: the header carries a Panels menu, and the menu bar lists the same set under View ▸ Panels. Both show one entry per panel, engaged while the workspace in effect shows that panel, and a press closes or opens it - opening one puts it back into the left region, where you dock it where you want it. A closed panel is not rendered at all; its content keeps its state, so the settings panel keeps your settings and the history panel keeps your versions while it is closed. The five panels of this build are Session, Settings, Browser, Inspector and History.
  • Browser: lists the clips the session holds, grouped by track and in ascending scene order, under a header line that counts them - 3 clips from 2 files means three slots carry clips and two of them were loaded from the same file. A row shows the colour of its track, the scene, the clip's name and length, the marker same file while another clip shares that file, and whether the clip loops or plays once. The list follows the engine without a refresh of its own; a session without a single clip says so.
  • Inspector: shows the details of the slot that is selected in the grid - the grid address, the clip's name, its length, its sample rate, its loop flag, its play state and the colour of its track. Select another slot with a click or with the arrow keys and every row follows. The one gesture of the panel is the colour control of the selected track; everything else is read-only data.
  • Four workspaces, and your own: a workspace is the arrangement of the window, and four of them ship with every build. Default shows the session grid in the centre and the settings panel on the right, Recording puts the Browser on the left, the grid in the centre and the Inspector with the History panel on the right, Mix puts the Browser on the left, the grid in the centre and the settings panel with the History panel on the right, and Live shows the session view alone. The Workspace menu in the header and View ▸ Workspace switch between them, and both end in Manage Workspaces…, the manager: Save current as… stores the arrangement you see right now under a name of 1 to 60 characters, Rename changes a name you gave, Delete removes one (asking first), Reset to built-ins drops your workspaces and restores the four shipped ones (asking first), and Export… / Import… carry a single workspace as a .mshworkspace.json file to another machine and back. An imported workspace becomes the active one at once; a file that names a workspace you already have asks before it is replaced, and one written by a newer version of MusicStation is rejected as a whole. The four shipped workspaces cannot be renamed or deleted, their arrangement is yours to change, and the document holds up to 60 workspaces of your own. Your arrangements are stored in the application's config directory and read again at the next start, so a panel you dock today is where you left it tomorrow.
  • High contrast theme: beside Dark and Light there is a third theme for maximum legibility: black surfaces with dark grey raised areas, white text and light-grey borders, plus a saturated amber accent that cannot be mistaken for text. It exists for working in a very bright room, on a projector or with reduced vision, where the softer contrast of the other two themes stops being comfortable. A theme is a complete set of design tokens: it applies to the whole window at once, covers text, borders, focus rings and the track colour palette, is remembered for the next start, and changes nothing about your music. Your own accent colour can be laid over any of the three themes.
  • Track colours: each of the 16 tracks can carry a colour - Blue, Teal, Green, Amber, Red, Violet, Neutral or no colour at all, and Default in the palette clears the colour of that one track. You set it with the swatch at the end of the track's column header in the grid or with the Track colour row of the Inspector; the Browser shows the colour of every clip read-only. Clips paint the colour of their track as a slim bar, so a whole column reads as one track, and the four slot states stay readable on top of it. A track colour is project data: it belongs to the file you save, travels with it, and the colours themselves come from the active theme, so switching the theme swaps the palette underneath your choices without changing the choices.
  • Keyboard shortcuts you define: the window's own keys come from a shortcut map you edit in the Keyboard shortcuts section of the settings panel (or via Keyboard Shortcuts… in the menu, which brings you there). Six bindings cover five actions: Play/Stop (Space), Go to bar 1 (Enter), Launch the focused clip slot (Enter inside the grid), Toggle the loop of the focused clip slot (L) and Help for the control under the pointer (F1 and ⌘? / Ctrl+?). Press Capture in a row and then press the keys - the row shows Press keys… while it waits, and the captured press does not run the action it used to. A binding is one key plus the modifiers you hold with it; a modifier on its own is not a binding, Escape cancels the capture and Tab leaves it. The switch Disable switches a shortcut off entirely: it never fires and its keys are free for another action. Two actions that end up on the same combination are both flagged with the warning that the first one in the list wins - the map is saved as you made it, a conflict is reported and never blocked. A Search field at the head of the list filters it by the action's name and by the key it prints, so "loop" and "space" both find what you are looking for.
  • Presets, reset and exchange for the shortcut map: the Preset select offers MusicStation (the shipped map), Ableton-like and Logic-like - a preset is a complete map, so choosing one replaces your own bindings and disabled entries. Reset in a row returns that one shortcut to the preset's key, and Reset all shortcuts asks once (Reset all now?) and then returns the whole map to the shipped one. Import… and Export… exchange the map as a JSON file: an import replaces the whole map and leaves it untouched when the file cannot be read or is not a shortcut file, and a file that names shortcuts this build does not know keeps them for a newer one. Every change is written at once and takes effect immediately, without a restart.
  • Projects: Save, Save As… and Open…: MusicStation saves its state into a .mshproj file - one readable JSON document that holds the clips with the paths they were loaded from and their loop flags, the tempo, the launch quantisation and the 16 track colours. The file names the format version it was written in, and an older file is brought to the current one when it is opened; a file written by a newer version of MusicStation is refused with a translated message when it is opened, instead of being half-read. Open… (⌘O / Ctrl+O) asks for a file with the shell's native dialog and replaces the whole session: every slot the document does not list is cleared, and every clip the document adds or lists with a different source is decoded again, while a clip the session already holds from the same source keeps its buffer - the answer can take a moment for a large project. A source file that is missing or cannot be decoded leaves its slot empty and everything else is applied. Save (⌘S / Ctrl+S) writes to the file the project already has, or asks for one when it has none yet, and Save As… (⌘⇧S / Ctrl+Shift+S) always asks, suggesting the name the project has plus .mshproj. The header shows which project the state belongs to - the base name of the file, or Untitled while there is none - and the full path while you point at it.
  • The unsaved marker and the question before an open: as soon as the state differs from the file it was saved to, the word unsaved appears next to the project name in the accent colour; it disappears again when the engine reports the state as matching its file. What counts is what the file really holds - a marker is not raised by a change the file deliberately ignores, such as a re-decode at another device sample rate. Opening another project while the marker stands asks first: Save writes the current state and opens the other project only once the write is through, Discard opens it without writing, Cancel does nothing at all - and so do Escape and a click beside the dialog.
  • Snapshot on save: the preference in the settings panel is engaged by default and decides whether saving a project also stores a snapshot in its version history. With it on, every save records the document it just wrote as an automatic version labelled Snapshot on save, so a save is always a checkpoint you can return to; with it off, a save writes the file and records no version at all. The preference never deletes a version that already exists, its own Reset snapshot on save returns it to on, and it is shared by every project rather than kept per project.
  • The version history: the History panel - reached through Project ▸ Version History, the Panels menu or a workspace that docks it - lists the stored versions of the current project, newest first, each with the name you gave it or the label of an automatic marker, the date and time it was created, the note you stored with it, the marker automatic while the engine created the entry itself and the marker current on the row the state you are looking at corresponds to. New snapshot stores the state you see right now under a name of 1 to 120 characters and an optional note of up to 2000 characters; Rename changes name and note of a stored version, and Delete removes one after a confirmation that says plainly that this cannot be undone. The engine keeps at most 200 versions per project and prunes older entries on its own, its own automatic entries first, so a long series of saves does not eat the checkpoints you named.
  • Compare two versions: press the row of one version, press the row of another, then press Compare - the dialog shows the change from the older version to the newer one, grouped into Clips, Tempo, Quantisation and Track colours tables with the columns Slot, Property, Before and After. Only what really differs is listed, a value that does not exist on one side reads as not set, and two versions that hold the same document answer with the sentence that they have no differences. A comparison never touches the session: no clip is loaded or stopped, no tempo is set, nothing is sent to the engine beyond the one read.
  • Restore a version: Restore puts a stored version back into the session, and it is deliberately harmless. The confirmation spells it out - the current state is kept as a new version labelled Before the restore before anything is applied, so nothing you have now is lost, and the way back exists even if the restore fails halfway. Then the version is applied exactly like an open: every affected clip is decoded again, the answer follows once those decodes settled, and the transport and the playhead keep running right through it.
  • Searchable release history: the About dialog carries the notes of every version this build ships, in the language the dialog shows, and it now has a Search release notes field above them. The search filters as you type - every word you enter has to appear in a version's number or its text, so a second word narrows the list instead of widening it - and Escape clears the field and restores the whole history. Nothing matches: No release note matches this search.
  • Optional update check: the preference Check for updates in the About dialog is off by default - MusicStation contacts no release source unless you ask for it. With it on, opening the About dialog asks the release feed the build was made with, once per session, and shows one quiet status line: MusicStation is up to date., Version x.y.z is available. with an Open download page button that hands the address to your browser, or the line that no update information is available right now, with a Retry button that is the only gesture that asks again. The check never runs at start-up, it downloads and installs nothing, and a build made without a feed address answers the neutral line instead.
  • Website and brand: https://daw-musicstation.de is online in German and English, with a language chooser, a language switch on every page and the language as part of the address. It offers the feature overview with a page per feature and an availability badge, the release history with the same notes the application shows plus an Atom feed per language, the online manual with a table of contents on every page, permanent links into every section and a search that runs in your browser, the download page for macOS on Apple Silicon with the waitlist as its fallback, the beta waitlist form and the contact, privacy and imprint pages. No page sets a cookie, loads anything from another origin or needs JavaScript - the manual's search field is the one extra that does. The site carries the brand as well: the clip-grid mark with its MusicStation word mark in the self-hosted typeface, the favicons, the touch icon and the preview images of a shared link.
  • Engine, protocol and remote: the engine publishes the project state as a third state domain next to transport and session, and the nine project.* operations between app and engine save, open, list, create, rename, delete, compare, restore and colour a project. The bridge keeps the whole project surface off the network: a paired iPad client never sees which project file the engine has open and can never save, open or version a project on the host, while transport and session keep working as before. The iPad app carries the app icon of the product, taken from the same mark as the macOS icon.

Improved

  • Nothing in the workspace disturbs the music: applying a workspace, docking, hiding or resizing a panel, switching the theme and colouring a track are pure window gestures. No clip stops, the tempo does not change and no command is sent to the engine - playback and the playhead run on while the window rearranges itself around them.
  • Your settings from the previous version are carried over: the settings document is versioned and migrated on load, so language, theme, accent colour and UI scale keep the value you gave them and the two new preferences arrive at their defaults. A single malformed value falls back to its own default instead of discarding the rest, and a document from a newer build is read as the defaults rather than guessed at. Each setting still has its own reset next to it, and Reset all to defaults puts the whole column back - the keyboard and the workspace have their own resets.
  • A remapped shortcut is live at once: the map is written the moment you change it and the window's keys use it immediately, the old key is gone, and a disabled binding stops firing without a restart.
  • The manual knows all of it: the workspace and its panels, the workspace manager, the shortcut editor, the Browser and the Inspector, the project menu, the version history with its comparison and restore and the two new preferences are described in English and in German, and F1 deep-links into the new sections.
  • The release history stays part of the application: every note is bundled with the build and renders without a network, in both languages. Only the optional update check ever opens a connection, and only while you have it switched on.
  • A save writes its file atomically: the document goes to a temporary file and is renamed onto the target, so an interrupted save leaves the previous file intact. The automatic snapshot a save owes is recorded right after the successful write; a version store that cannot keep it is reported as a diagnostic while the project file itself is written and acknowledged.

Fixed

  • Resetting the workspaces to the built-ins keeps the built-in you are working in active instead of switching you to Default: the reset puts the four shipped arrangements back and leaves your current built-in selected.
  • A client that sends an operation the bridge does not forward - a project operation above all - is answered like an unknown operation without spending command budget and without counting as a dropped command, so a client is never pushed towards a disconnect by operations that were never forwarded in the first place.
  • The home page keeps no empty place for a screenshot: as long as no capture of the session view is published, the hero ends with the animated clip grid, without a placeholder drawing and without a caption waiting for an image.

Known limits

  • The Mixer, the Editor and the Arrangement are not there yet: the three panel ids are reserved and a stored layout may name them, but this build renders nothing for them, and there is no panel, no menu entry and no button that opens one - so no per-track gain, pan, mute/solo, sends or inserts, no MIDI or audio editing and no timeline.
  • No audio in the project file and no streaming from disk: a project references its audio files by their absolute path and their size; nothing is embedded, copied, packed or streamed, so a project stays a few kilobytes and a file you move is found by its stored path or not at all. A clip is still decoded completely before it can play - up to five minutes of audio at the engine's sample rate, at most two channels and 2 GiB of decoded clips in total.
  • The comparison covers clips, the tempo, the launch quantisation and the track colours - that is everything the project file holds. Mixer values and plugin state are neither stored nor compared yet, and each of them needs its own format version and migration before it can be added.
  • Only the window's own six bindings are yours: menus, panels, workspaces and the project commands have no remappable shortcut, and the fixed accelerators of the menu bar - Settings, What's New, Open/Save/Save As and the context help - stay as they are. Escape and Tab can never be bound, a modifier on its own is never a binding, and the capture always writes exactly one key; a shortcut map that names several keys per action can only arrive by an import.
  • Docking happens through the Region menu of a panel header; dragging a panel by its header is not part of this build, and neither is a per-workspace "reset layout" or a "duplicate workspace" - the manager saves, renames, deletes, resets and exchanges workspaces, nothing more.
  • A version is not an undo: the history holds the checkpoints you asked for, it is not a list of steps you can walk backwards through, and a deleted version is gone. There is no recent-projects list, no autosave interval and no backup job either, no lock against a second engine instance, no cloud sync and no merge of two projects - the only automatic versions are the two a command asks for, on a save and before a restore.
  • The update check is a notification, nothing more: it tells you that a newer version exists and opens the download page in your browser; MusicStation downloads and installs nothing itself. Its address is baked into the build, so a build made without one always answers that no update information is available right now.
  • The iPad remote has none of this: it has no panels, no workspaces, no themes and no track colours, and it has no project surface at all - it neither saves, opens nor versions a project, and a restore carried out on the desktop is simply the session the remote sees afterwards.

MusicStation 0.3.0

This release adds the session view: MusicStation works with clips now. Under the transport bar sits a grid of tracks and scenes whose clips you launch, stop and loop - on the desktop and, mirrored live, on the remote app for the iPad. Engine, interface and remote share one session state, so the grid you are looking at is the state the engine reports.

New

  • Session view under the transport bar: the tracks are the columns, the scenes are the rows, and the scene column on the left starts a whole row. In this version the grid is fixed to 16 tracks by 16 scenes (256 slots), its labels count from 1 (Track 1, Scene 1), and an occupied slot shows the name of its audio file without folder and extension and the length of the clip as m:ss.d.
  • Four slot states: empty (the engine's snapshot does not list the slot, and a click sends no command), stopped (holds a clip that produces no samples), playing (produces samples, fade-in and fade-out included; the cell wears the accent colour) and waiting for its start (armed: an accent outline that blinks until the engine starts the clip; with reduce motion the outline stays and the blink is left out).
  • Launching a clip: click a slot, or focus it and press Enter. A stopped slot is armed and starts at the next quantisation boundary with a 5 ms fade-in; a slot that is already playing keeps sounding until that boundary and then restarts from its first frame. Launching a different clip of the same track stops the clip that runs there at the very same boundary - at most one clip per track plays, and both transitions share one frame.
  • Stopping: Stop in the transport bar ends playback and stops every sounding clip, each with its 5 ms fade-out, and cancels every armed launch. On the remote a tap on a playing slot stops it at the next boundary, while a tap on a waiting slot cancels the armed launch right away.
  • Scene launch: the button at the left of a row starts every clip of that scene at the same boundary, in ascending track order. Empty slots of the scene are left alone, so they never stop what happens to be playing on their track; one press is one gesture, even if the key is held.
  • Quantisation (the select in the header line of the session view): Off, 1/16, 1/4, 1 bar, 2 bars, 4 bars and 8 bars; a fresh session reports Off. It decides where a launch, a stop and a scene launch land, applies from the moment the engine applies the change, and never moves a gesture that is already armed. MusicStation counts in quarter notes and assumes a 4/4 bar.
  • Loop per clip: the switch in an occupied slot, or L on the focused slot. With Loop on the clip wraps at its end, with the switch off it plays through once and the slot stops at the end of its material with the 5 ms fade-out; every clip keeps its own flag. A file that arrives by drag and drop is loaded with Loop on.
  • Files from Finder: drag a WAV, AIFF or FLAC file onto a slot. The engine decodes the whole file in the background - resampled to the sample rate of the engine, up to five minutes of audio and at most two channels - and the addressed slot pulses while it works; the slot keeps its previous content until the answer arrives. More than five minutes, an unreadable or unsupported file, more than two channels, or more than 2 GiB of decoded clips in total are rejected, and the header line of the session view shows the translated reason; of several files dropped at once, only the first one is loaded.
  • Keyboard in the grid: Tab reaches the grid once; the arrow keys walk it and wrap around its edges, Home and End jump to the first and the last track of the row, PageUp and PageDown to the first and the last scene, Enter launches the focused slot or the focused scene, and L flips the loop of the focused slot. Space stays the transport's key, and F1 still opens the manual of the control under the pointer.
  • Remote app for the iPad (MusicStationRemote): the app finds bridges over Bonjour, pairs with the 32-character pairing token of the bridge and shows the session grid of the running MusicStation, mirrored live. A tap on a stopped slot launches it; a tap on a playing slot stops it at the next boundary, and a tap on a waiting slot cancels its armed launch. A tap on the play symbol of a scene launches the whole row, and the quantisation picker changes the value for every client. The texts of the app are English and German, follow the language of the device and can be switched in the app itself.
  • Engine and bridge carry the session: the engine holds the slots, resolves launches, stops and scene launches sample-accurately inside the audio block and sends the whole session state as a snapshot at most 30 times a second; the bridge passes that snapshot on to every paired client and forwards the clip and scene commands unchanged.

Improved

  • The grid shows the engine's state and never a copy of its own: every snapshot replaces the whole grid, and a gesture is only shown ahead of the answer for as long as it takes to bridge the moment between your click and the engine's reply. A rejected command is taken back and named in the header line of the session view.
  • Files are decoded completely before a clip exists, so playback never reads from the disk and the interface stays usable while a decode runs.
  • Dragging a file over the grid marks the addressed slot with the accent ring and does not flicker while you move inside one cell; outside the grid the mark disappears again.
  • Every rejection is visible: the header line of the session view names the reason in the language of the interface (for example a file that cannot be loaded, or an engine that is busy) instead of failing silently.
  • The manual knows the session view: launching and stopping, the quantisation values, the loop switch, files by drag and drop, the keyboard of the grid and the grid of the remote are described in English and in German, and F1 deep-links into the new sections.

Fixed

  • A clip that is relaunched while it is already playing stays shown as playing until its boundary: the grid no longer presents a sounding slot as waiting for its start, which would have claimed a silence that is not there. The same holds for the sounding slots of a scene that is launched.

Known limits

  • No streaming from disk: a clip is decoded completely before it can play, which is why a clip is limited to five minutes of audio at the sample rate of the engine, at most two channels, and 2 GiB of decoded clips in total.
  • No clip editing: a slot cannot be cleared, renamed, moved, transposed, warped or stretched, and a clip has no gain of its own; its file and its loop flag are its whole content.
  • No arrangement, no MIDI, no mixer: the session grid is the only clip surface, and there is no timeline, no recording, no MIDI, no track gain, pan, mute/solo, sends or inserts, no plugin hosting and no project files to save.
  • The grid is fixed: 16 tracks by 16 scenes. Track and scene names do not travel between engine and interface, so the headings are numbers and a slot shows the file name of its clip.
  • Loading files needs the application: the path of a dropped file is handed from the shell of the MusicStation application to the engine, so a drop onto the grid in a browser preview of the interface does nothing. The remote cannot load files at all, because the file lives on the machine that runs the engine, and it has no loop switch.
  • An armed start or stop needs a moving playhead: while the transport stands still, a launch or the stop of a sounding clip is carried out at once only if the playhead already sits exactly on the chosen boundary (bar 1 after Enter, or any other boundary of the chosen value); otherwise the slot stays armed - it keeps blinking - until you start playback. The clock that would carry an armed gesture to its boundary while the transport is stopped is not built yet.
  • Stop is immediate: the session-wide Stop stops the sounding clips at once instead of at the chosen quantisation boundary; only a stop of a single slot (a tap on the remote) waits for a boundary.
  • The remote app is built for the iPad in this version: the remote UI and the library behind it are an iOS package that is meant to run on the iPhone as well, so a layout for the iPhone and the remote's own About and "What's new" screens follow later.

MusicStation 0.2.0

New

  • Project foundation, made usable: the real-time safe engine core (transport, lock-free queues), the desktop interface shell, the remote bridge and the remote library of 0.1.0 are no longer separate pieces - this release joins them into one application you can start and work with.
  • MusicStation runs: the audio engine is a program of its own that opens the default output device of your Mac, plays the reference tone through it whenever the test tone is on, and can also run completely without a device for tests. It stays on your machine - the desktop application reaches it over the local address only.
  • Native application for macOS on Apple Silicon: MusicStation ships as an arm64 bundle for macOS 13 and later.
  • Transport bar: the Play and Stop buttons with their latched highlighting, the playhead position in bars.beats.ticks, the Tempo field (20 to 999 BPM, default 120.00 BPM), the Test tone switch and the engine status at its right end.
  • Reference tone: Test tone puts a 440 Hz sine (concert A) at -20 dBFS on the master output. That is the quickest way to check the device, the level and the monitoring path, and it is faded in and out over 5 ms, so the tone never clicks.
  • Keyboard shortcuts: Space starts and stops playback, Enter moves the playhead to bar 1, F1 (or the key combination named in the menu) opens the manual section of the control under the pointer or of the focused control.
  • Native menu bar in English and German with MusicStation, Edit, View, Window and Help: the about dialog, the release notes, the settings, the context help, the manual and the standard editing and window entries. The whole menu follows a change of the language at once.
  • About dialog: the product name, the version of the running build, the build commit, the control protocol version and the release-note history of every bundled version. Its own Language switch shows the history in the other language without closing the dialog.
  • "What's New": the release notes of the running version open by themselves once after an update and can be opened again at any time from the menu.
  • Settings: Language (English or Deutsch), Theme (Dark or Light), Accent colour (six colours plus a hex colour of your own) and UI scale (75 % to 200 %, default 100 %). Every setting applies at once and is remembered for the next start; Theme, Accent colour and UI scale each have their own reset next to them, plus one reset for everything, which also returns the language to the one your system uses. The settings are stored in the config directory of the application.
  • Built-in manual: the complete manual in English and German comes with the application, works offline and opens in the help panel at the control you ask about.
  • Remote for iPad and iPhone: the bridge runs next to MusicStation, connects to it locally and is the only part of the program that is visible in your network. It advertises itself over Bonjour, pairs a remote after you enter its 32-character pairing token (shown when it starts, printed again on request and replaceable at any time) and answers OSC control commands on UDP port 9000.
  • Remote library for iPad and iPhone (MSHRemoteKit): it finds bridges over Bonjour, pairs with the pairing token and drives the transport (play, stop, tempo and test tone) while following the playhead.

Improved

  • The transport follows the engine and stays honest: a button reacts immediately, the engine's next state confirms it, and a command the engine rejects takes the display back and shows a translated message instead of failing silently.
  • The playhead readout keeps moving smoothly between the engine's states instead of stepping 30 times a second, freezes as soon as the connection is gone, and stays where it is when you send a command.
  • The interface reconnects on its own after a lost connection: the first attempt follows after about 250 ms, every further one doubles the wait up to 10 s, and a stable connection resets it. An engine with a different protocol version is reported instead of being retried forever.
  • The engine sends its transport state at most 30 times per second and merges quick changes, so even fast movement cannot flood the connection.
  • The bridge limits what it passes on: it throttles the state for each client in the network, limits how many commands one client may send and answers a command it cannot take with a message that it is busy instead of losing it.
  • Tempo changes keep the musical position: a new tempo takes effect at the start of the next audio block and does not make the playhead jump.
  • Language, theme, accent colour and UI scale apply without a restart, and a setting stored by an older build is carried over instead of being dropped.
  • The help panel is a proper overlay: it takes the keyboard while it is open, keeps Tab inside itself and follows the language you have chosen for the interface.

Fixed

  • The Tempo and UI scale fields no longer change a value you did not enter: looking into a field and leaving it again keeps the engine's value. Numbers you type are rounded before they are limited to the allowed range, and a value that is not a number never appears in the field as technical text.
  • Holding a key down no longer repeats a transport command, and the play/stop key no longer runs the action of a focused button on top of its own.
  • Menu entries reliably carry out their action; a click can no longer be dropped without a trace.
  • The manual help returns you where you were: after the panel is closed, the same key again opens the control you were pointing at, even if you did not move the pointer in between, and the keyboard focus returns to the control you came from.
  • The remote reports a command that never reached the engine instead of staying silent, and takes its display back to the engine's last confirmed value.

MusicStation 0.1.0

New

  • Project foundation: real-time safe engine core (transport, lock-free queues), desktop interface shell, remote bridge and iOS remote library.
  • The interface can be switched between English and German at any time.
  • Dark and light themes.
  • Transport bar: play and stop, the playhead position in bars.beats.ticks, the tempo field (20 to 999 BPM, default 120.00 BPM), the 440 Hz test tone at -20 dBFS and the engine status.
  • Keyboard shortcuts: Space starts and stops playback, Enter moves the playhead to bar 1, F1 (or ⌘?/Ctrl+?) opens the manual section of the control under the pointer.
  • Settings for language, theme, accent colour (six colours or your own hex value) and UI scale (75 % to 200 %), each with its own reset and one reset for everything; every setting is applied at once and remembered for the next start.
  • Native menu bar with About, What's New, Settings, the editing and window commands and the manual.
  • About dialog with the version, the build commit, the control-protocol version and the release-note history of every shipped version; "What's New" opens once per version, and both dialogs can be opened again at any time.
  • Built-in help panel: the complete English and German manual ships with the application, works offline and opens at the control you ask about.
  • Remote library for iPad and iPhone: it finds bridges with Bonjour, pairs a LAN connection with the bridge's pairing token and drives the transport (play, stop, tempo, test tone) while tracking the playhead position; the bridge and the remote never touch the audio path.