Skip to content

Releases

Atomik Rack nightly 20261114 (79b8989)

Pre-release

Choose a tag to compare

@github-actions github-actions released this 25 Oct 08:16
79b8989

Automatic build of main at 79b8989 (20261114), version 0.4.0-nightly.20261114+79b8989. This is a rolling pre-release: it is replaced every night that main changes. Use a tagged release for anything that matters.

Signing: Windows not signed, macOS ad-hoc signed only, SHA256SUMS is not signed.

Unsigned or not notarised builds make the system warn on first launch; see the README for the first-run steps.

Verify the downloads against SHA256SUMS.

Commits since the previous nightly (5f00443):

  • 1b96602 Register hand-cabled FX loops as console returns
  • b95714c Turn the send on when a hand-cabled loop registers a return
  • 54834fd Expect Relink Missing Audio to stay available in the MCP session tests
  • 3d677ba Merge remote-tracking branch 'origin/main' into fix/hand-cabled-fx-return
  • 79b8989 Merge pull request #371 from atomikfactory/fix/hand-cabled-fx-return

Atomik Rack v0.4.0-rc.2

Pre-release

Choose a tag to compare

@github-actions github-actions released this 11 Nov 03:28
04ceaff

Added

  • Themes, with a built-in Synthwave theme. The colours of the interface are now data: one JSON file per theme with
    a version, a name, the built-in theme it is based on (a colour it leaves out comes from there) and about sixty colour
    tokens. Light and Dark are files compiled into the program that give back the old palettes exactly, so nothing looks
    different; Synthwave is new, a neon night with an indigo background, magenta and cyan accents, a magenta grid in
    the arrangement and meters that run cyan, magenta and orange, with its body text kept above a 4.5 to 1 contrast
    (a test checks it for every built-in theme). Settings > Themes lists the themes with a sample of each and uses
    one at once; Duplicate, Rename, Delete (after a question), Import, Export and Open Themes Folder manage your own,
    which are files in a themes folder next to settings.json. A theme editor opens on a theme of your own: the colours
    in groups (Backgrounds, Text, Accents, Meters, Arrangement, Rack, Console), each with a swatch that opens the colour
    picker and a hex text field, a live preview in the whole program, RESET to the base theme, and an undo for the
    session (Ctrl+Z); it writes the file when it closes. A file that is not a theme is skipped with one message that
    names it. View > Theme gains Next Theme (view.next_theme) and Theme Manager (view.theme_manager), neither with a
    key. The grid lines and level meters are theme colours now (grid_bar, grid_beat, grid_sub, meter_low,
    meter_mid, meter_high). A glow on the meters and the playhead is not done. The theme is a preference
    (theme_id in workflow.json, an old "theme": "dark" still gives Dark); the project format is unchanged (45).
  • A French interface and a way to add languages. Settings > Video has a Language row, System (default), English
    or Français, and a change applies at once with no restart. System reads the language of the operating system once
    at start (the sys-locale crate, decision W) and falls back to English. The menus and every command of the
    registry, the Settings tabs, the start screen, the export panel, the rack, arrangement, console, launcher and
    palette labels, the status messages and the tooltips are in French (Piste, Clip, Boucle, Calque, Table de mixage,
    Envois, Retours, Réglages, Annuler, Rétablir; the glossary heads crates/ui/locales/fr.txt), the shortcuts use
    the French key names (Maj, Entrée, Échap, Suppr, Espace, Retour arrière), and dB, Hz, BPM, LUFS, MIDI and CC stay
    as they are. A text with no French line shows in English, and the names of songs, tracks, clips and files that
    the views draw are left as typed. Another language is one file of English text => text lines (docs/EXTENDING.md, "Adding a
    language"); a line may name values (Added {name}) and then matches any message of that shape. The manual, the
    texts of Help Mode and the parameter names of most device panels are still English. The language is saved in
    workflow.json; the project format is unchanged.
  • A built-in manual. Help > Manual (help.manual, Ctrl+F1, Cmd+Alt+F1 on macOS) opens the user documentation in a
    large panel that works offline: a table of contents built from the headings on the left, the page on the right with
    headings, paragraphs, bold and italic text, code, lists, tables and links between sections (a picture shows its
    description), a search field with ranked results (a heading match above a body match) and a line around each match
    with the matched words in bold, and Back and Forward buttons (Alt+Left and Alt+Right). The text is docs/README.md
    and docs/KEYBOARD.md compiled in, so the manual and the documentation are one source; a new Manual section and a
    Devices section in README.md describe it. The More link of Help Mode now opens the manual at its section instead of
    the browser, the command palette lists "Manual: " for every section, and a link to a page the manual does not
    hold (the device reference, the other documents) opens that page on the project site, one request to a fixed address.
    Help > Documentation still opens the project page. The Markdown reader is written in the project (decision V).
    The project format is unchanged.
  • Backup copies in a second folder. Settings > Backup has a Backup folder (None by default, with Choose... and
    None), Keep (the copies of each project that stay, 1 to 50, default 10) and Include audio (default on). Every
    successful save also copies the project to <backup folder>/<name>/<name> <YYYY-MM-DD HHMMSS>.atomik (UTC) and, with
    audio, the audio files it uses to <backup folder>/<name>/Audio/, once each by content hash. The copy runs on its own
    worker after the save is confirmed, never delays or fails a save, and a failure shows Backup failed: <reason> once
    per session (later ones go to the log). Autosave snapshots make no backup. Only the newest Keep copies stay; an audio
    file goes only when no kept copy names it (every project file of the folder is read first, and an unreadable one keeps
    all the audio), and files that are not copies are never touched. File > Restore from Backup lists the copies of the
    open project with their date and size and opens the chosen one as a new unsaved song, after the question about
    unsaved changes. The command is file.restore_backup (no default key); the settings are backup_folder,
    backup_keep and backup_audio in workflow.json. The project format is unchanged.
  • Share a project as one file. File > Share Project opens a small panel with the title, the author and a note (they
    go into the song information as one undo step when you changed them) and three check boxes: Include a preview (an
    MP3 of the whole song at -14 LUFS, or a 16-bit WAV file when FFmpeg is not set up), Include stems (one 24-bit WAV
    file per mixer strip) and Include plugin list. A line says what the share will weigh and turns to the warning
    colour over 500 MB. SHARE asks for a file name (<title>.atomikz, the project archive extension) and writes, on a
    worker with progress and cancel, one file with the project, every audio file it uses, credits.txt (title, author,
    note, the date, the version of the program and the plugins with vendor and format), the preview and the stems.
    A cancel or a failure leaves no file. File > Open and a drop on the window take an .atomikz file: a folder
    dialog asks where to unpack it (it starts in Shared beside the library folder), the project opens and the Song
    Information shows what the sender wrote. The archive reader accepts only the project, its audio, the credits, one
    preview and the stems, and still refuses entries that leave the folder, duplicates and anything over its limits
    before it writes a byte. The command is file.share_project (no default key). The project format is unchanged.
  • A plugin manager. Options > Plugin Manager opens a table of every plugin the scan found: its name, vendor,
    format (VST3 or CLAP), category (instrument, effect or note effect), status (OK, Failed with the reason,
    Quarantined, Disabled, Unsupported), file and when it was last scanned, with the files that failed to scan as rows
    of their own. Click a column head to sort (again to reverse it); the search field matches the name, vendor, path and
    tags, and four buttons filter by format, status, category and tag. The star of a row marks a favourite: the device
    browser lists favourites first, in a Favourites group of their own and at the top of their kind. Tag the chosen
    plugins from the small field (the same tags as the file browser: no #, no comma, 32 characters at most) and find
    them in the browser by typing # and the tag in its search field. Disable hides the chosen plugins from the
    browser and the menus; a project that uses one still loads it. A plugin whose process ends, or that fails to
    load, three times in a row is quarantined (hidden like a disabled one, with a message once); a working instance, or
    a load that works after a failed one, starts the count again, and Try Again clears the quarantine. Rescan All and
    Rescan Selected run on the scan worker with a progress line and a Cancel button, and Show in Folder opens the file
    manager at the file. Favourites, tags, disabled plugins and the quarantine are kept by the plugin's id (so a plugin
    that moved keeps them) in plugins_user.json in the settings folder; a missing or damaged file reads as empty.
    The scan cache now also keeps when each file was scanned. The command is options.plugin_manager (no default key).
  • Soft takeover and knob pages for controllers. An absolute knob or fader of a controller set up with the wizard
    no longer makes a parameter jump: when it is not where its parameter is (after another device is selected, a page
    or bank change, or an edit with the mouse), moving it does nothing until it comes within 2 percent of the value or
    sweeps through it, using the same rule as MIDI learn, and the status line says which way to turn it ("Turn knob 3
    up to pick up Cutoff"). Relative encoders, stepped parameters and faders that receive their value as feedback do
    not wait. The eight knobs now have pages: Page Down and Page Up (two optional keys the wizard asks for last), or
    the commands Controller Knobs: Next Page and Previous Page (controller.knob_page_next and
    controller.knob_page_prev, no default keys), move over the parameters of the followed device eight at a time and
    wrap round; the status line names the page ("Knobs: Filter 9-16") and motorised or LED controls receive the new
    values. The page goes back to 1 when another device is followed, unless the profile keeps the page for each device.
    Pick up values (on by default) and Keep the knob page for each device (off by default) are check boxes on the last
    page of the wizard and chips in Settings > Controllers; they are saved in the profile file...
Read more

Atomik Rack v0.4.0-rc.1

Pre-release

Choose a tag to compare

@github-actions github-actions released this 09 Nov 00:17
6250fa7

Added

  • The film's own sound. File > Video > Import Video Audio takes an audio track out of the song's film through
    FFmpeg, on a worker with progress in the status line and a cancel that leaves no file and no asset, and imports
    it like any audio file (converted to the song's rate, stored in the project's audio folder by its hash, with its
    waveform). The sound goes on a new audio track named after the film, in one undo step, and its first sample sits
    exactly on the film's first frame: the song frame of the film's start plus the offset the file states between its
    sound and its picture, to the sample whatever the tempo (the clip starts on the first tick at or after it and
    skips into the sound by the rest), showing only the part inside the film's trim. A film with several audio tracks
    asks which one in a pop-up (number, channels, codec, language, title); a surround track is mixed down to stereo.
    A film with no sound, or a machine without FFmpeg, says so and changes nothing. Keep Audio with Video (on after an
    import, saved with the film) makes moving, trimming and relinking the film move and trim that clip in the same
    undo step, a drag included; turned off, the clip is an ordinary one, and turned on again it is lined up with the
    film again. Import Audio with Video makes Import Video do both. Project format stays 44 (the link is an optional
    part of the ignorable video field).
  • A video row in the arrangement. A song with a film shows it in a row above the track lanes: a clip bar with a
    frame thumbnail every picture-width, the frame that plays at the start of each slot, so the pictures follow the
    zoom. Only the slots in view are decoded, on a worker, with a placeholder until they arrive, and they are kept
    while you scroll and zoom. The header cell shows the film's timecode at the playhead and the bar the timecode of
    its first and last frame. Drag the bar to move the film and either end to trim it: a move snaps to the grid and
    then to a whole frame, a trim snaps its edge to the grid and the cut to a whole frame of the film (the no-snap
    key switches both off); a drag is one undo step and Escape puts the film back. Click the bar and press Delete to
    remove the video. A missing file or a film with no preview yet is a labelled bar that still moves. The chevron
    collapses the row to a thin bar and View > Lanes and Markers > Video Row hides it (both are remembered).
  • The Video window. View > Video opens a window with the picture of the song's film at the song position:
    frame-accurate while stopped (locate, scrub, ruler clicks), following the transport while it plays (frames are
    dropped, never lag), jumping back with the loop, and locked to time when the tempo changes. Before the film starts
    and after it ends it is black. The timecode (from the film's start timecode, drop frame included) and the frame
    number show over the picture (File > Video > Video Overlay, or the TC and # buttons); Fit, 50%, 100% and 200%
    set the size with the aspect kept. The window says why when it has no picture (no film, missing file, no FFmpeg)
    and shows the progress while the preview builds, which now starts by itself when a project with a film opens.
    Frames are decoded off the UI thread by a pure-Rust JPEG decoder (zune-jpeg), with a decode-ahead cache.
  • A video in the song. A song can hold one film, linked by its path (never copied: films are huge) with what the
    probe found (length, frame rate, picture size, start timecode, whether it has sound) saved in the project, so the
    project opens and shows its film without FFmpeg. The film's start and trim are kept in microseconds, not in
    ticks, so it stays locked to time when the tempo changes. File > Video has Import Video... (probes the film, puts
    it at the start of the song and builds its preview in the background; without FFmpeg it says how to set it up),
    Remove Video, Relink Video..., Move Video to Playhead and Trim Video Start / End to Playhead, each one undo step.
    A song whose film file is gone opens with the video marked missing and a toast; Relink Video points it at the file
    again and warns when its length or frame rate differs from the original. The MCP project inspect lists the film.
    Project format 44 (an optional field that older readers skip); the viewer and the thumbnails come later.
  • Video foundation (FFmpeg). Video tracks will be decoded by an FFmpeg you install: nothing is bundled. A new
    crate atomik-video finds FFmpeg (the folder set in Settings > Video, else your PATH, else the usual package
    folders on macOS), checks that it is release 4 or later and says clearly when it is missing, too old or broken:
    video is then off and nothing else changes. It reads a film with ffprobe (length, frame rate with variable rate
    handled, size, rotation, start time and timecode, and the audio tracks) and builds a small proxy of the picture:
    every frame as a low-resolution JPEG in one indexed file, so any frame is one seek. The proxy is built on a worker
    with progress in the status line and a cancel that leaves no partial file, and cached per user (LOCALAPPDATA on
    Windows, Library/Caches on macOS, XDG_CACHE_HOME elsewhere) keyed by the film's path, size, time and its first
    and last mebibyte, pruned to 2 GiB, oldest first. File > Video has Prepare Video..., Check FFmpeg and Cancel Video
    Job; Settings has a Video tab with the FFmpeg folder and what was found (the tab strip is a little tighter for the
    seventh tab). No project format change; no film appears in the arrangement yet.
  • Stretch cursor. A clip edge that stretches the clip (Alt held over the edge, before and during the drag) shows a
    drawn cursor, a double arrow with a bar across its middle, in place of the plain column-resize icon. It is crisp at
    1x and 2x, and pressing or releasing Alt over an edge swaps it with the resize cursor at once, without a pointer move.
  • Mix channel panel. A console channel or output bus is a compact one-unit panel in the rack, in place of the
    generated panel of its descriptor. Its front carries MUTE and SOLO, a horizontal fader (a drag along the track, a
    double-click resets it, a readout in dB), a PAN knob, an L and R peak meter, BYPASS INSERT FX, SHOW INSERT FX and the
    AUDIO OUTPUT display (Master Section, the bus name or the Audio I/O pair). The controls drive the same params as the
    console strip, so the rack and the mixer stay in step; BYPASS INSERT FX bypasses every insert effect (and the
    dynamics and EQ sections in use) in one undo step, as the B-all button of the strip does. The plate shows the name of
    the source instrument and a rename changes it. SHOW INSERT FX is view state for now (it starts on and is not saved
    with the project); it folds the insert stack under the panel (see below). The back carries four pairs of jacks and
    nothing else: INPUT, INSERT FX TO DEVICE, INSERT FX FROM DEVICE and OUTPUT. The sends, the parallel output, the key,
    the CV inputs and the gain reduction output have no jack in the rack; they keep working and their cables stay.
    The meters of the panels are fed while the rack shows them, with or without the console.
  • Insert stack in the rack. The insert effects of a channel or an output bus are stacked right under its panel, in
    chain order, inside a frame in the strip's colour that ends with a drop row ("drop or create an effect here"). With
    SHOW INSERT FX off the frame shrinks to one header line that names the effects; a click on it shows them again.
    Creating an effect with an insert selected puts it after that insert, and with the strip selected at the end of the
    chain; dropping a device or a browser row in the frame adds it at the place under the pointer; dragging an insert up
    or down moves it in the chain; dragging it out to the plain rack takes it out of the chain, which closes behind it,
    and leaves the effect uncabled in the rack; deleting an insert reconnects its neighbours. Each gesture is one undo
    step, and a refusal (a device that is no stereo effect, a full chain) says why in the status line. Moving a
    channel or a bus moves its inserts along, and a move never lands between the effects of another strip. In the
    mixer the insert rows of a strip reorder by drag and each has an E that shows the effect in the rack, with the
    insert area unfolded and the effect selected. New commands AddInsert and ExtractInsert. The fold state is view
    state for now and is not saved with the project.
  • Master section panel. The console master is a compact four-unit panel in the rack. The front carries the master
    fader (the same horizontal fader, readout and meter as a mix channel panel), BYPASS INSERT FX, SHOW INSERT FX, the
    AUDIO OUTPUT display and eight send rows: the number, the name of the effect on the send (or "free"), its return
    level as a slider (a drag, a double-click resets it) and an EDIT button that selects that effect and scrolls the rack
    to it. The back carries FX SEND 1-8 and FX RETURN 1-8 (left and right jacks), INSERT FX TO DEVICE and FROM
    DEVICE, MASTER OUT and CONTROL ROOM OUT; the summing inputs, the key and the CV sockets keep working but have no
    jack in the rack, and the bus compressor and the control room stay on the mixer. The master has the same insert
    area as a channel (still after its compressor): effects stacked under it, the same gestures, one undo step each, SetInsert,
    AddInsert, MoveInsert and ExtractInsert with the master as the strip, and in the mixer its insert rows
    reorder by drag and have an E. The effects of the 8 shared sends sit under the master's insert area, each send in
    a framed group labelled "Send N" (a send with several effects in series shows them all), and they move with the
    master; they stay ordinary devices shared by all channels. Creating an effect with the master selected still makes
    the next free send (with all 8 in use the e...
Read more

Atomik Rack v0.3.0-rc.2

Pre-release

Choose a tag to compare

@github-actions github-actions released this 11 Nov 02:37
f42b4ad

Added

  • Recording and editing follow-ups: dimmed masked notes and tails, a Piano Keys window, a Save question in its
    own words, fades in ticks and sparse edits of large clips.
    The piano roll dims what the open clip does not
    play: the notes (or parts of notes) under a later clip of the same lane, and the tail of a note that runs past
    the end of the clip, which is still drawn so it can be seen and trimmed; a clip with a loop, a muted clip and a
    take are not dimmed for the lane's overlap rule. View > Piano Keys (F4) now opens a floating window of its own
    (it moves, resizes and can sit on another monitor), the window's geometry and whether it was open are remembered
    with the other windows, and so are the strip's octave and velocity (ui-state.json piano_keys_octave,
    piano_keys_velocity); the main window's lower panes no longer give up room to a strip. The window is named
    piano-keys for the MCP session tools and --detach-style options. The question about unsaved changes has
    the buttons Save, Don't Save and Cancel on every platform: a task dialog with those words on Windows (which
    needs a manifest asking for Common Controls version 6, now embedded in the app and the MCP server), the native
    alert on macOS and the zenity question on Linux. The clip inspector's FADE IN and FADE OUT show a small unit
    tag, MS or TICKS: a click on it switches both fades between milliseconds and ticks of the clip's own span (a
    wheel notch or a typed value is then a 16th note or a number of ticks; the file keeps frames). A change of
    the note list of a large clip that keeps its length and touches at most an eighth of the notes (an inspector
    step on a selection, a transpose, a velocity or length change) is stored in the undo history as the changed
    notes only, so a long run of inspector steps on a clip of tens of thousands of notes no longer fills the history
    with copies of the whole list. No saved field changes (the project format stays 43). Deferred: the dimming of
    the masked parts of a looped clip, and remembering the fade unit between sessions.
  • Automation lane and gesture follow-ups: a static value handle, a time range on a lane, Extend to Next and Previous
    Clip, no note audition, trimming several audio clips and remembered snap.
    An automation lane that holds a static
    value draws it as a line across the lane with a square handle at the left edge of the timeline; dragging the handle
    sets the value from the pointer height (on the scale of the lane's points) and one drag is one undo step, Esc puts
    the value back. Dragging on a lane with the new Lane range select role (Alt+Shift, Opt+Shift on macOS; remappable in
    Settings, Keyboard) shades a time range, snapped to the grid: Copy takes the parts of the lane's clips inside it, Cut
    and Delete remove them (the clips are cut at the range edges, one undo step) and Paste puts the copy at the
    playhead on the range's lane; any other press or Esc forgets the range. Extend to Next Clip and Extend to Previous
    Clip (sequencer.extend_to_next_clip, sequencer.extend_to_previous_clip, in the clip menu) grow the selected note
    and automation clips to the start of the next clip on their lane or back to the end of the previous one, the content
    staying where it is in song time, in one undo step; audio clips are left alone. Audition Notes in the notes menu of
    the piano roll (editor.audition_toggle) stops notes from sounding while they are drawn, moved or stepped to (the key
    strip still plays) and is remembered. Dragging the start edge of a selected audio clip trims every selected audio
    clip by the same distance, each as far as its own file allows. The snap resolution of the arrangement and of the
    piano roll and the snap mode (grid lines or whole steps) are saved in the window state file and restored at start.
    SetLaneStatic gained an optional merge id. The project format stays 43.
  • Looped clip and note lane follow-ups: looped audio takes, an audio loop converted into one clip, and a solo and a
    colour for each note lane.
    A take of a group can loop now, audio included: the take menu offers Loop Take x2, x4
    and x8 and Play Take Once (SetTakeLoop), the take runs that many repetitions of its extent and the comp segments
    that ended at its end run on with it. A looped note take stays a looped clip; a looped audio take compiles to one
    clip per repetition, each restarting the source with its own fades and warp, so the lane plays what the looped
    take played, and a comp cut inside a repetition fades like a cut in any audio take. Convert Loop > To a Single Clip
    now works on audio: the looped clip is rendered on the freeze worker as the track plays it (gain, fades, envelope
    and warp, before the insert effects and the channel strip) and the clip becomes one plain clip of that render with
    the same place, name and colour, in one undo step (the status line shows the render's progress; looped note and
    automation clips among the selected ones convert at once as before). A note lane has an S button beside M on its
    header (the first lane's chip has no room: use Solo Lane in the track header menu, sequencer.toggle_lane_solo):
    while a lane is soloed only the soloed lanes of the track play, in the engine, the bounce, a freeze and the lane
    merge alike, a mute still silences a soloed lane, and the clips of the other lanes are drawn like a muted lane's.
    A Lane Colour submenu (sequencer.lane_color, a palette name or track) colours a lane's clips and header bar; a
    clip's own colour still wins. Both are saved as the optional "solo" and "color" fields of a notes lane, written
    only when set and ignorable by an older reader, and project_inspect lists them. Bouncing chosen clips in place
    ignores a solo on another lane. Recording to several lanes at once is not done yet (a take still goes to the one
    selected lane). The project format stays 43.
  • Rack editing follow-ups: "+" handles, a Create submenu, unfolding under a cable and replacing a device by
    dropping a library item.
    Resting the pointer on the seam between two devices of a rack column, or at the top or
    foot of a column, shows a small "+": pressing it opens the device browser (titled INSERT DEVICE) and the row
    chosen, with Enter or a double click, is added at that slot, wired as a device dropped there is; Esc cancels. The
    rack and device context menus keep Create Instrument, Create Effect and Create Player in one Create submenu.
    A cable dragged over a folded device unfolds it after 0.7 seconds of rest, so a jack on its back can be reached
    (an ordinary fold edit, and the cable drag goes on over the new layout). A device row or a one-device patch from
    the library dropped on the middle of a device of the same kind, or on a track header, replaces that device in
    place as one undo step, routed like the browser's replace: the track, clips, channel and the cables that fit
    stay, the device keeps its key. A patch of another device type loads its sound inside the same step; a patch of
    the device's own type only changes its sound, and what the model refuses (another kind, a console device, a
    frozen track) is told in the status line. The project format stays 43.
  • Restructuring follow-ups: a percent panel for Scale Tempo, a Reverse Clips preference, joining audio clips and
    draggable crossfade zones.
    Edit > Scale Tempo > Other opens a panel with one text field for any percentage
    from 10 to 1000 (a comma or a percent sign is understood): the selected clips show the result while you type,
    Enter or APPLY makes it one undo step, and Esc or CLOSE puts the clips back. The panel opens on the last
    percentage. Reverse Clips follows a new "Reverse clips" row of Settings > Interface (notes mirror as bars, the
    default, or only their starts, saved in workflow.json); the explicit Reverse Note Starts item and the bars and
    starts arguments of sequencer.reverse_clips do not follow it. Join Clips now works on audio: consecutive
    pieces of one file that touch or overlap, continue each other in the file and agree on gain, warp and mute become
    one clip that sounds exactly as the pieces did (the gain envelope is merged); pieces of different files, a gap, a
    jump in the file, a fade at the join, a reversed or looped clip and warp markers are refused with a message that
    names the clips and the files. Pressing in the crossfade zone at the start of an audio clip and dragging moves
    the cut and the crossfade together: the later clip starts later or earlier and the earlier one ends later or
    earlier by the same distance, with a live preview, snapping to the grid, one undo step, and Esc to cancel
    (MoveCrossfade in the model). Dragging a clip edge with Alt, which scales each clip about its own fixed edge,
    already covered edge-drag scaling. The project format stays 43.
  • Six CV utilities: CV math, quantizer, sample and hold, slew limiter, gate processor and envelope follower.
    CV Math adds, subtracts, multiplies, takes the minimum or maximum, or the absolute value of two CVs (the second
    is a knob until a cable is attached), then scales and offsets the result. The CV Quantizer snaps a pitch CV
    (the one of the sequencers: 24 semitones per unit, 0 at middle C) to the nearest note of any of the piano
    roll's 16 scales on a root, with a transpose and a trigger at every change of note. Sample and Hold keeps the
    CV (or seeded noise, so a bounce repeats) it saw at each trigger, free-running tick or note value of the
    tempo, the last locked to the song position while playing. The Slew Limiter has its own rise and fall time,
    linear or exponential, from 0.1 ms to 10 s. The Gate Processor combines two gates with and, or, xor, nand or
    nor, divides, delays by up to two seconds and sets the length, with a trigger output at every rise. The
    Envelope Follower turns the level of an audio signal (peak or RMS, attack and rele...
Read more

Atomik Rack v0.3.0-rc.1

Pre-release

Choose a tag to compare

@github-actions github-actions released this 11 Nov 02:37
4b931cd

Added

  • Release and dependency hygiene. A freeze or an unfreeze that finishes while the transport runs no longer
    rebuilds the engine under it: the sound goes on, the message says the freeze plays when playback stops, and the
    engine is rebuilt at the stop. Where plugins run is shown, not assumed: Settings > Plugins says "Running now:
    separate process" or "in-process", the status line shows plugins: sandbox or plugins: in-process while plugins
    are on, and a sandbox that is switched on but cannot start says so once instead of falling back silently. Waiting
    for plugins to load is bounded by time. docs/DEPENDENCIES.md lists the deliberate pins and why, the duplicate
    versions that deny.toml skips by root cause (so only a new duplicate warns), and the quarterly bump of the
    0.x GUI stack, which a scheduled workflow opens as an issue; the same workflow prints cargo update --dry-run every
    Monday. Every advisory ignore has a review date and the Security workflow fails once it has passed. The nightly
    release uploads its new files before it deletes the old ones, so it is never empty, and a manual run can be a dry
    run (dry_run); every build writes a Sigstore provenance attestation for the files in SHA256SUMS. The MCP server
    skips a message over 16 MiB with a protocol error and stays usable, and docs/MCP.md states the headless, no audio,
    no plugins contract. SECURITY.md says how far the plugin cache is trusted and why the macOS app has the
    library-validation entitlement. The sandbox child is an accessory process on macOS (no Dock icon) and a utility
    window on X11; the sandbox end-to-end tests have a CI job on Linux and macOS.
  • Modulation matrix framework. A device can declare modulation sources and targets and sum up to eight
    slots (a source routed to a target with an amount, and optionally a second source that scales it) at its
    control rate, with no allocation and only + - * /, so the result is bit-identical for every block size and
    worker count. The document stores the slots per device with one undoable command, the amount of a slot is an
    ordinary automatable param, and a project without slots saves, loads and bounces as before (project format
    41). The poly synth and the mono bass use it first: the three envelopes, both LFOs, velocity, key, mod wheel
    and pressure (channel and poly pressure finally have a destination) can move cutoff, pitch and level. A device's
    right-click menu opens its matrix (see below).
  • Modulation matrix panel. Right-click a device that has a matrix (the poly synth, the mono bass) and choose
    Modulation Matrix: eight rows of source, target and via pickers (a menu of the device's own entries, the current
    one checked) and an amount bar, with the amount from -100 to +100 %. A slot needs a source and a target; until
    both are chosen the row stays a draft, and clearing either side of a slot in use clears it. Picks and the
    amount bar are ordinary undoable edits (a drag is one undo step) and the engine hears them like any other
    parameter change; editing a slot while a note sounds does not click. Esc closes the menu, then the panel.
  • Text fields with a caret, a selection, the clipboard and input methods. One text field now serves the Song
    Information panel: click to place the caret, drag or Shift+arrows to select, double-click a word, Ctrl+A,
    Ctrl+arrows by word, copy, cut and paste with the system clipboard (the arboard library, MIT or Apache-2.0,
    text only), and input-method composition (Japanese, Chinese, Korean, dead keys) with the pre-edit text
    underlined in the field. A character typed with AltGr is text and never runs a shortcut in a text field. The
    in-place name edits of the rack, mixer and arrangement keep their end-of-text editing for now.
  • The piano roll keeps the same notes selected through edits that reorder them. A quantize that moves a note
    past another, an undo, or a note added before the selection used to leave the selection on whatever sat at the
    old positions; it now follows the notes (by key and order within the key, else by start and key) and goes back
    to the original notes when an edit it could not follow, such as a transpose, is undone.
  • Saved-file corpus and sound pins. crates/model/tests/fixtures/corpus/ now holds one real saved project for
    every released format version with a surviving writer (1, 6 to 41), each checked to load without a warning, resave
    canonically and hold the same tracks, clips and notes as pinned; every file that has no audio bundle is also
    bounced and its per-second level (all platforms) and exact hash (Windows x86-64) pinned. The release workflow fails
    when the current format has no corpus file. A list of which sound is claimed bit-identical on every platform
    (claims.toml) is checked against the pinned stage blocks, every example project is checked to bounce to the same
    bits at several block sizes and worker counts, and the CI runs the release profile on Windows too.
  • CLAP presets, knobs that follow a preset, and a browser info pane. A CLAP plugin's presets (those inside the
    plugin and the files in the folders it declares) are listed and loaded in PARAMS like VST3 presets, also from a
    sandboxed plugin. After a preset is loaded, or a patch is changed inside the plugin's window, the rack's knobs show
    the values the plugin now holds, and undo puts them back together with the sound. With Browse aimed at a plugin
    device the file browser lists the plugin's presets as rows (Enter or a double-click loads one). Selecting one audio
    file in the browser shows an info pane under the list: format, channels, rate, length, size, the tempo the file
    states, tags, author and categories, and a loudness picture read on a worker thread. VST3 program lists and a
    background index of the browser are not built yet. No project format change.
  • SFZ and SoundFont import into the sampler. Drop an .sfz or .sf2 file on a sampler (or load it from the
    sample editor) and it becomes the sampler's zones in one undo step. An SFZ keeps its regions, key and velocity
    ranges, root keys, loops, tuning, volume and pan, amplitude envelope, filter, round-robin, velocity crossfades
    and <group> headers; a SoundFont brings its own samples, and its first preset is read (ranges, root, tuning,
    attenuation, pan, loops, volume envelope, low-pass filter). Samples are converted to the project rate and
    stored in the project. Whatever is not read (unknown opcodes, release-triggered regions, modulators, other
    presets) is named once in a message and never stops the import. The readers cap file, region and sample
    counts, never panic on damaged files and have a fuzz target. The loop slicer's eight slots and the sampler's
    eight outputs are not built yet. No project format change.
  • Space reverb, convolution reverb and vocoder. Three new effects. The Space Reverb adds arena, cathedral,
    spring and echoverb algorithms to the reverb engine, with a wet high cut and a gated tail (hold time and level).
    The Convolution Reverb plays an impulse response from an audio file of the project (drop a .wav on the device;
    no impulse files ship): a mono or stereo response of up to 5 seconds, level-normalised, with pre-delay, low and
    high cut, width and mix. It adds no latency, equals direct convolution to float rounding, allocates only when
    the device is prepared, and swapping the response crossfades instead of clicking. The Vocoder is a 4 to 32 band
    channel vocoder with a carrier input (an internal noise carrier when none is cabled) and a hiss path for
    consonants. A gated three-band filter, a bass amp voicing, echo loop jacks and a spectral vocoder mode are not
    built yet. No project format change.
  • Pattern lanes. The pattern lane of a step sequencer, CV sequencer or drum generator is now a pattern
    lane: it reads "Pattern", draws its held numbers as labelled blocks, and a right click on a clip lists the
    device's patterns to pick from (a clip drawn on it starts with one stepped point). A take now catches pattern
    changes without AUTO LANES: the first one adds the lane and each change is written on the next downbeat as a
    held number, so the clip switches on a bar line. Track > Add Pattern Lane adds the lane, and Track > Pattern
    Lane to Notes renders what the patterns play, in the order the lane chose them, into a clip on a new note
    lane. No project format change: a pattern clip is an ordinary automation clip. A pattern offset is not built.
  • Bent automation segments. Shift-drag on an automation segment bends it so the curve passes through the
    pointer at the middle of the segment (one undo step); a click without a drag, or a Shift-click on a point,
    straightens it again. The bend is a power curve evaluated with plain arithmetic only, so a bounce is
    bit-identical for every block size, worker count and platform, and the value a control shows is the value the
    engine applies. Points added on a choice, a switch or another whole-valued parameter now hold their value
    instead of ramping.
  • Parameter lanes in note clips. A note clip can carry device-parameter lanes (a cutoff sweep, a send
    level) that move, duplicate, split and loop with the clip; a track's own automation lane of the same
    parameter overrides them. Edit > Move Automation into Note Clip turns a selected automation clip into a
    lane of the selected note clip, and Edit > Clear Clip Parameter Lanes removes them. Recording into a note
    clip and drawing a lane inside the piano roll are not there yet. Both additions are written to the project
    only when used (format 41), and the MCP project_inspect lists the lanes.
  • Containers fold and unfold in the rack. A container no longer has to be opened in a view of
    its own to be worked on: the arrow on the title strip of its panel, or a double-click on the
    panel, draws its devices straight under it i...
Read more

Atomik Rack v0.2.0-rc.2

Pre-release

Choose a tag to compare

@github-actions github-actions released this 28 Oct 19:42

Release candidate 2 of Atomik Rack 0.2.0.

Signing: Windows not signed, macOS ad-hoc signed only, SHA256SUMS is not signed. A build that is not signed makes the system warn on first launch; see the README for the first-run steps. Verify the downloads against SHA256SUMS.

Added

  • Automate a mixer channel, the master or an effect. Any parameter that can have a lane now can: right-click a knob or fader of a console strip, the master, an insert or send effect or any effect in the rack, in the mixer or in the rack, choose Edit Automation, and the lane is added on an automation track, in one undo step, and shown in the arrangement (the old "automate it through a macro" workaround is not needed; the macro route still works). An automation track is the usual DAW track of a device that plays no notes: it belongs to the channel or effect, shows its name and colour, and holds automation lanes alone (no note lane, no audio lane). The first lane shares the track's header row, which carries the name, the expand chevron, a mute button and that lane's write-mode and arm buttons; the other lanes fold and collapse as on any track. It can be renamed, coloured, moved, put in a folder, copied with its device and deleted like any track. Mute stops its automation (the param keeps its own value); solo has no meaning for it: it has no solo or arm button, a folder's solo and arm leave it alone, and soloing another track does not silence it. It cannot be frozen. Automation recording (the W button, Touch, Latch, Overwrite) writes into these lanes like any lane, the strips, the master and the rack controls follow them while the song plays, and a bounce plays them exactly as it plays an instrument's lanes (bit-identical across block sizes). The master section now draws the automation mark on its controls, as the channel strips do. A device inside a container, an audio track and the internal parameters still have no lane. Project format 34: a track may sit on a device without a Notes input and then holds "automation" lanes only; every older file loads unchanged, and a project without such a track differs from its version 33 file in the version line alone.
  • The loop is between a left and a right locator flag. The loop bar in the arrangement ruler is gone: an L flag marks where the loop starts and an R flag where it ends, drawn like the song's E flag, with a tint between them in the ruler (faint while the loop is off, clearly stronger while it is on; the lanes keep their loop shading). Drag a flag to move it (it snaps, the disable-snap keys free it, Escape cancels, and one drag is one undo step; the left flag cannot pass the right one), choose Transport > Set Left Locator at Playhead or Set Right Locator at Playhead, or right-click the ruler and choose Set Left Locator Here or Set Right Locator Here. The commands have no default key and can be mapped in Settings > Keyboard. Flags that meet stay readable: R hangs to the left of its line, L and E to the right, and a flag that would cover another moves down one row; where R and E share a tick, a press on the shared line takes R. A press in the lower band of the ruler now locates the playhead like the bar numbers (it no longer toggles the loop or draws a new loop; the loop button, Loop to Selection, a click on a range marker and the flags set it). Alt+click and Ctrl+click (Cmd) in the ruler still set the left and right locator.
  • Edit Automation on a control. A right click on a knob, fader or switch of an instrument in the rack (or of the console or the parameter pane) now offers Edit Automation at the top of its menu: it adds the automation lane of that parameter to the device's track (the track too, when the device has none), unfolds the track's lanes and the folders that hide it, brings the arrangement into view and outlines the lane, ready to draw in. When the lane is already there it only shows it. Adding is one undo step, and an empty lane holds no automation until you draw. A parameter a macro drives opens the macro's lane on the bank's track. Channel strips, the master and effects get an automation track of their own (see the entry above). View > Show Automation Lane now also brings the arrangement into view. New command automation.edit_control (menu only, no default key).
  • A dragged note ends where you let go. Drawing a note in the piano roll (the Pencil, or a double-click with Select) and dragging now ends the note at the pointer, snapped to the current snap (the disable-snap key frees it), and the note follows the pointer while you drag; before, the drag was added to the default length. Dragging left of the start keeps the minimum length (one snap step), and a click without a drag still draws a note of the default length. A chord stamp is stretched the same way.
  • Stepping through notes plays them. In the piano roll, Left and Right (and Shift+Left and Shift+Right) now sound the note they select, on the track's instrument, for a quarter of a second; the next step, a click, closing the roll or opening another clip ends it at once, so nothing hangs. Shift+Right and Shift+Left now move the end of the selection like a text selection: with the selection extended to the right, Shift+Left gives the last note back (and once only the starting note is left, extends to the left past it), and the other way round. A selection made another way (a rubber band) starts from its earliest note, so Shift+Left first drops its latest one. A shrink sounds the note the selection now ends on.
  • Guitar Amp. A new effect, atomik.guitar-amp ("Guitar Amp" in the browser): a guitar amplifier with a cabinet, chorus, delay and reverb, and five setups. The signal runs through a noise gate (gate), a tight high-pass and a mid boost (tight, boost), a three-stage preamp (gain) with a passive-style tone stack (bass, mid, treble, which affect each other) and a power amp (master, sag, presence, depth), then a cabinet synthesised from designed filters (1x12 open, 2x12, 4x12 closed or none, with a mic position from the centre of the cone to its edge; no recorded impulse response), a chorus, a ping-pong delay (in ms or as a note value at the project tempo) and a reverb, each with an on switch and a mix, and a level. The preamp and the power amp run at four times the sample rate and every clip is antiderivative anti-aliased, so a high note at full gain keeps everything that is not a harmonic below -53 dB; the 35 samples of latency are reported, so plugin delay compensation and the bypass switch keep the amp in time with the rest of a project. The amp plays the mono sum of its two inputs (the cabled one when only one is) and makes the stereo image with its effects. The setup selector loads Clean, Crunch, Industrial Rhythm (very high gain, tight and percussive for drop-tuned guitars: a pre-gain high-pass and mid boost, a scooped but present mid, strong presence, a closed 4x12 and a noise gate), 80s Lead (hot, singing sustain, mid-forward and compressed, with a 380 ms ping-pong delay and a plate-like reverb) or Synthwave (clean to light crunch, bright, a wide chorus, a dotted-eighth delay and a big reverb): it sets every control in one undo step, and you tweak from there. The rack panel shows the speakers of the chosen cabinet with the microphone, in and out meters, a gate meter, and a one-line tooltip on every control. The five setups are level-matched. The amp is an original design and the setups are named for the sound, not for any product or player. See docs/DEVICES.md.
  • Export the song or the loop as an audio file. File > Export Song as Audio File... renders from the start of the song to the End marker and keeps the tail that is still audible (reverb and delay ring out, up to 10 s, cut where the output stays below -90 dBFS; never shorter than the End); File > Export Loop as Audio File... writes exactly the audio between the left and the right locator with no tail, so the file loops on the grid. Both ask for a WAV file, then for the options: 16-bit with dither (triangular, the default for 16-bit; none; or triangular with the noise shaped towards the high frequencies), 24-bit or 32-bit float, the sample rate (the project's, or 44.1, 48, 88.2 or 96 kHz: the render is converted before it is quantised), and whether a song keeps its tail. The render runs faster than real time on a worker thread through the same path as a bounce (mute and solo, the master section, automation, tempo ramps and plugins, the latter needing the plugin sandbox as a freeze does), on a copy of the project, so playback and editing go on; a progress bar with Cancel replaces the options, and a cancelled or failed export leaves no file (it is written under a temporary name and renamed when complete, and an existing file is replaced only by a complete one). The dither is seeded, so the same project exports the same bytes; 24-bit and float are not dithered. The choices are remembered in export.json next to settings.json. Both are commands (file.export_song_audio, file.export_loop_audio, no default keys) that can be remapped in Settings, Keyboard. The renderer gains 16-bit PCM output (atomik-render --format pcm16, dithered) and the QA server gains session_export. A bounce (atomik-render, session_bounce) still ends two beats after the End. No project format change. See docs/ARCHITECTURE.md.
  • A song End marker. The arrangement ruler shows an E flag where the song ends: drag it (it snaps like the loop locators, and one drag is one undo step), choose Transport > Set End Marker at Playhead, or right-click the ruler and choose Set End Marker Here. The lanes past it are shaded and the scroll bar covers it. The End is the length of the song ...
Read more

Atomik Rack v0.2.0-rc.1

Pre-release

Choose a tag to compare

@github-actions github-actions released this 11 Nov 02:37
fdb14e1

Fixed

  • Bounce in Place and Unfreeze and Keep Audio make an audible track. The new audio track was
    silent while playing: its devices reached the engine after the routing that connects them, so the
    track and its channel were never cabled to the master. The changes of a compound edit inside
    another one are now reported with every device first, then one routing. The new track also sits
    right after its source track, in the same folder and colour, instead of at the end of the list.
  • Piano roll tools. Only the pencil creates notes now: with Select a press on the empty grid
    starts a rubber band (a click clears the selection, Shift or Ctrl adds to it) instead of drawing
    one. A note can be resized from its left edge as well as its right one, and with several notes
    selected every one of them changes by the same delta (snapped, with a minimum length), in one undo
    step like a group move. The mouse cursor shows what a press will do: a horizontal resize cursor
    over a note edge and during the drag, a move cursor over a note body, a crosshair for the pencil.
  • Sandboxed plugin editors on Wayland. The plugin process now uses the X11 backend (XWayland)
    whenever DISPLAY is set, so a sandboxed CLAP or VST3 editor opens as an X11 window it can embed
    into instead of failing with "Wayland sessions cannot embed a plugin editor". The rack window
    stays native Wayland. In-process editors and sessions without DISPLAY still fall back to the
    parameter pane.

Added

  • Installers, a nightly build and signing in the release pipeline. A release now publishes a
    Windows installer (atomik-rack-<version>-windows-x86_64-setup.exe, built with Inno Setup:
    Program Files or per-user, Start menu shortcut, optional desktop icon, uninstaller, .atomik file
    association), a macOS disk image (atomik-rack-<version>-macos-universal.dmg) and a Debian
    package (atomik-rack_<version>_amd64.deb, with the programs in /opt/atomik-rack and links in
    /usr/bin), next to the zip and tar.gz archives, with a .sha256 for each and one SHA256SUMS.
    The smoke test installs and uninstalls each of them. A daily nightly pre-release (tag
    nightly, replaced each night that main changes) is built by the same reusable workflow.
    Signing is wired and waits for certificates: Authenticode for the Windows programs and installer
    (a certificate file, or Azure Trusted Signing), Developer ID signing with the hardened runtime and
    notarisation for the macOS app and disk image, and a GPG signature of SHA256SUMS. Each step is
    skipped with a notice until its secrets exist in the release-signing environment, so builds are
    unsigned today. See docs/RELEASING.md.
  • Mixer snapshots and comparison. A snapshot is a named copy of the console: every param of
    every channel, output bus and the master (fader, pan, width, mute, solo, input trim and polarity,
    the sends, the dynamics, EQ and parallel compressor, the insert switches, whatever a strip gets
    later), the bypass of the insert and return effects, and the VCA groups' level, mute, solo and
    membership. A snapshot bar under the console toolbar shows a chip per snapshot (up to 16,
    named A, B, 1, 2... or by you), a + that stores the mix, and an A/B toggle. A
    click on a chip recalls it, a double-click renames it in place, and a right-click offers Recall
    (all, or only the levels, the mutes and solos, the sends or the insert bypass), Compare with this,
    Update from current mix, Rename, Move and Delete. The chip of the current snapshot is lit, with a
    dot once the mix has moved. Compare keeps the working mix in a hidden slot, recalls the
    snapshot and flips between the two without losing an edit made on either side; END keeps whichever
    is live. A recall is ordinary param changes (the strips' own 5 ms smoothers apply it, no clicks,
    no rebuild) and one undo step, as are store, update, rename, move, delete and every compare step.
    A snapshot does not hold the arrangement, the cables, the rack's structure or the effects' own
    parameters; a recall skips channels, effects and groups that were deleted since (the bar says
    which) and leaves the ones it never knew. The Mixer menu has Store Snapshot, Update Snapshot,
    Recall Snapshot, Recall Next and Previous Snapshot, Compare A/B, End Compare and Delete Snapshot
    (no default keys). Project format 27 saves them (a project without snapshots differs from its
    version 26 file in the version line alone and bounces bit for bit as before); the MCP inspection
    lists them and session_command stores, recalls (with a scope) and compares by id or name.
  • Channel strip upgrades. A parallel compressor on every channel and bus: a second
    compressor (the one of the strip's dynamics section) after the inserts, the dynamics and the EQ,
    blended with the dry signal by mix (1 is the compressor alone) and followed by a makeup; the
    console has a PARALLEL section after DYNAMICS with an enable button and threshold, ratio and mix
    knobs, and the rack's channel panel has the attack, release and makeup too. It has no lookahead,
    so the dry and compressed paths stay aligned and it adds no latency; off, or at mix 0, the strip
    is bit for bit what it was and costs nothing. The input trim (-24 to +24 dB) and polarity
    were already on the strip; Mixer > Toggle Polarity now flips the selected strips. Insert
    bypass keeps the delay compensation
    : a bypassed plugin effect plays its input delayed by the
    latency it reports (as the built-in effects already did), so the channel does not move against the
    others when you toggle it, with a phase-aligned 5 ms crossfade; each filled insert slot has a
    B that bypasses its effect, and the strip's BYP ALL button (and Mixer > Bypass All
    Inserts
    , on the selected strips) bypasses every effect of the chain in one undo step. No project
    format change: older projects load unchanged and bounce bit for bit. session_status lists the
    strips that use any of it and session_set_param sets a device's param in a headless session.
  • Mixer groups and VCA faders. A VCA group is one fader, one mute and one solo over several
    channels and buses, with no audio and no routing of its own. Mixer > Create VCA from Selection
    (on the console's selection, the arrangement's selected tracks or a selected folder, or the rack's
    selection) makes a group named VCA n; its strip in the console, after the buses, has a plate in
    the group's colour with the name and the member count, M and S, an offset fader from -60 dB (off)
    to +12 dB and a readout. Members keep their own faders and play at their level plus the group's
    offset
    (the sum in dB, smoothed like a fader, no zipper noise); a member's strip shows a marker
    where it plays and its readout shows that level. The group's mute and solo count as the members'
    own: solo beats mute, a soloed group silences the other strips as a solo does, and the members
    stay individually controllable. A strip is in at most one group; drag its name plate onto a VCA
    strip, use the right-click menu of a channel or bus (New VCA..., Add to VCA, Remove from VCA) or
    Mixer > Add to VCA, Remove from VCA and Delete VCA; members show the group's colour as
    a chip on their plate and as a bar on their track header in the arrangement. Every change is one
    undo step, a removed channel leaves its group with it, and a drag of the fader is one step. A
    project without groups sounds and bounces bit for bit as before. Project format 26 saves the
    groups (omitted when there are none, so older projects load unchanged); session_status lists
    them and session_command takes the id of a group. The rack's generated panels no longer show the
    app-only internal.* params (the channel's solo-silence toggle). Not yet: automation of the group
    fader, linked faders, groups of groups and a folder the group follows (see the roadmap).
  • Spectrum and metering. Two new effects that pass the audio through untouched (bit for bit, no
    latency, the bounce is identical with or without them) and show what they see; both are in the
    device browser with the effects and have the usual bypass. Spectrum (atomik.spectrum) draws
    an FFT of 1024 to 8192 points (Hann or Blackman-Harris) of the left, right, mid, side or sum, on a
    log axis from 20 Hz to 20 kHz over a dB range you choose, averaged over a time you choose, with
    peak hold and decay, an optional tilt of 3 or 4.5 dB per octave, a loudest-bin readout, or the 31
    one-third-octave bands instead of the fine trace. Phase Meter (atomik.phase-meter) shows a
    goniometer (mid/side or plain left/right) from the recent samples, the stereo correlation from -1
    to +1 over an averaging time, the balance and a width figure, peak, RMS and hold bars for each
    channel, the sample peak and the true peak, and the momentary, short-term and integrated loudness
    in LUFS (BS.1770-4, the meter of the mastering device) with a reset. The audio thread only copies
    each batch into a lock-free ring (ScopeTap, a new opt-in of the device SDK registered by the
    engine); the FFT, the averaging and the drawing run on the UI side, so the audio path costs 128
    atomic stores a batch. The headless QA server gets session_meters, which renders a project
    offline up to a position and returns the readings (and fills the panels for session_texts and
    screenshots), so a generated -23 dBFS 1 kHz tone can be checked for -23 LUFS, correlation +1 and a
    1 kHz line. Nothing new is saved in a project: the devices are ordinary devices, the project
    format is unchanged and older projects bounce exactly as before.
  • Audio to notes. Audio > Audio to Notes... extracts the notes of the selected audio clip
    into a note clip that starts and ends with it, in one undo step. Pitched follows one voice or
    instrument (a YIN pitch tracker with a...
Read more