Skip to content

ACE-Step Studio 4.0.0 — restoring compressed tracks, models kept loaded, reports without a GitHub account, MXFP4 for RTX 50

Latest

Choose a tag to compare

@timoncool timoncool released this 13 Nov 07:08

Added

  • A track compressed to MP3 can be restored, as in MiniMax Music3 Studio: Tools - Restore after compression runs Apollo on a library track or on an audio file from this computer and removes the artefacts of compression, giving 44.1 kHz in the channels of the source. The result is a new library track beside the source, "<title> · restored", with its words and cover; it plays, downloads and goes to the tools like any track, and restoring the same track again replaces it. The run shows its time and can be stopped. Apollo (66 MB, weights CC BY-SA 4.0) runs in audio.cpp's server on the stems' device and is downloaded when you ask for it, with its size shown first; it is also listed in Settings - Models. Agents have restore_status, restore_start, restore_install, restore_remove and restore_cancel.
  • The models stay loaded between songs where the card has room: Settings - Local engine has Keep models loaded - Auto, Yes or No - in place of the switch. Auto keeps them when the set, a full-context cache for each track and the room the decoder works in fit the card's free memory at the engine's start, so the next song does not load them again (about 3 seconds a song); kept models are unloaded before stems, Audio to MIDI, karaoke, recognised lyrics, Describe by ear, training or the writing assistant on the card, and after 10 minutes without a song. A switch saved on reads as Yes, off as Auto. The engine log says what a start decided and why, in gigabytes, Settings shows it under the choice, and agents read it in engine_options_get.
  • A problem can be reported without a GitHub account: Report a problem (Settings - About and System diagnostics) opens a window - what happened, how to repeat it and what you expected, with the engine log attached unless you clear the box - that shows exactly what will be sent, and the studio files it through Studio Hub, whose bot opens a public GitHub issue and gives its number and link. The captions and lyrics of your songs are left out of that log, and out of the engine logs of the bug-report pack. The window has Bug, Idea and Question, each with the fields of its GitHub form. Its main button, Send from your own GitHub account, opens the GitHub form with what you typed already in its fields and its title, and answers come to your GitHub notifications; Send anonymously beside it is for those without an account. When the hub does not take an anonymous message now - too many messages, sending switched off or the hub out of reach - the window says so. The GitHub forms are now one per language: English, Russian, Chinese, Japanese and Korean. Agents have problem_preview and problem_report.
  • An RTX 50 gets its DiT in MXFP4: on an RTX 50 with the CUDA 13 build the recommended set and the set of a new installation take the XL turbo DiT in MXFP4 (Quality MXFP4 with LM 4B, 8.2 GB; Balanced MXFP4 with LM 1.7B, 5.8 GB) - half the DiT memory of Q8_0, computed on the card's tensor cores directly; a set you chose stays, and the models page offers the new recommendation. Other NVIDIA cards on the CUDA 13 build see the MXFP4 sets and DiTs as a choice; on the CUDA 12 build, AMD and Intel cards, a Mac and the processor they are not offered.
  • Mel-Band RoFormer and karaoke's Parakeet run on every card the studio computes on, as in Dub Studio: an NVIDIA card or driver that runs CUDA 12 only (Maxwell to Volta, GTX 16, a driver older than 580) takes their CUDA 12 builds with the engine's CUDA 12 libraries - RoFormer had only a CUDA 13 build, which has no code for such a card, and Parakeet ran there on Vulkan - and an AMD or Intel card takes RoFormer's Vulkan build instead of the processor, on Windows and Linux.
  • The MIDI editor splits and joins notes (YuE2 Studio #146): Split Notes (Ctrl+E) cuts the chosen notes at the playhead, or where the right-click menu was opened; Join Notes (Ctrl+J) makes one note of the chosen notes of each pitch, from the start of the first to the end of the last, and leaves a pitch alone when a note of it outside the choice lies between. Both are in the right-click menu and in Edit, and each undoes in one step.
  • Karaoke timings download as SRT subtitles, as in YuE2 Studio: beside "Download LRC" in the song panel, "Download SRT" saves the same timings for video editors that import SRT and not LRC (CapCut, Jianying, Premiere); each line shows while it is sung, with gaps where the song plays without words.
  • The writing assistant follows your own rules (YuE2 Studio #209): Settings - Models - Writing assistant has Your own rules for the whole song, the style and the lyrics, added after the studio's guide and followed where the two differ, and Words to avoid, typed or loaded from a .txt file; laying out recognised or published lyrics keeps their words. Agents set them with assistant_set.
  • Your own subtitles become a song's karaoke, and its lines can be edited (YuE2 Studio #218): on the song panel, Load .srt / .lrc takes a .srt, .ass, .ssa or .lrc file as the song's karaoke in place of the recognised timings, asking first when the song has karaoke already; Edit lists the karaoke's lines with their starts, and a line changed there is saved as written while the lines left alone keep the times of their words. Agents have karaoke_set.
  • A deleted song goes to a bin and comes back from there (YuE2 Studio #175): Delete puts a song in the Bin tab of the library with its stems, its karaoke and its versions, the message after it offers Undo, and Restore on the tab brings it all back for 30 days; after that, or with Delete for good and Empty the bin, the song leaves the library and its files go to the system recycle bin. A song in the bin is not taken for new work - stems, Audio to MIDI, karaoke, recognised lyrics, processing, a cover, a replay, a dataset or Describe by ear - and the refusal names it and says to restore it from Library - Bin. Agents have library_trash_list, library_trash_restore, library_trash_delete and library_trash_empty.
  • Lyrics are heard from a recording on this computer (YuE2 Studio #222, #207): Tools - Recognise speech can use the recogniser chosen for karaoke (Parakeet or CrisperWhisper) as well as OpenRouter, the karaoke recogniser first when one is chosen; and in Cover, Remix and the other tasks with a source track a button above the lyrics hears what the source sings and puts it in the lyrics to edit, asking first when the lyrics are not empty. The words are laid out in lines as dataset preparation lays out what it hears; agents have lyrics_recognise.
  • Flash attention can be switched on by hand, as in YuE2 Studio (YuE2 Studio #228): Settings - Local engine has Auto, On and Off beside the KV cache in place of the Diagnostics switch that could only turn it off. A setting saved with the old switch on reads as Off. The engine log says once per start why flash attention is off, instead of on every status check (#69).
  • Settings - Local engine says which KV cache the engine runs with: the field reads Auto when empty, a line under it names the cache of the running engine (the engine's default, or set by you), and a saved value that has not reached the engine yet says it applies at the next start.

Changed

  • On the processor the DiT is about 1.2 times faster with the Q8_0 and BF16 sets: the engine is built with the processor's fast matrix kernel; the same seed on the processor gives a different song than in 3.8.5.
  • Flash Attention is on again on RTX 50 cards under Auto; turn it off in Settings if a song's later sections turn to meaningless syllables.
  • The writing assistant lets llama.cpp place its layers, as in YuE2 Studio: the studio no longer asks for every layer on the graphics card, which on a card of 8 GB or less could stop Gemma from loading, as it did in Dub Studio.
  • Studio Hub notices follow what you do at once, as in YuE2 Studio: a notice closed or clicked, and a song that ends, bring the next notice without waiting for the minute's refresh; a link in a notice is counted by its address, and the hub's requests wait while a song is made.
  • Audio to MIDI shows its notes as it hears them (YuE2 Studio #185): the player draws the notes while MuScriptor works and says which chunk it is on, instead of staying empty until the end; Stop ends the run at once, and the finished MIDI is the same as before.
  • The MIDI editor is updated to the latest signal: rewind after recording, the direction of curves and lines, the shortest note length and the rest of upstream's work since our last update, with the studio's own mode, chord and section lanes kept.
  • The create form and the song panel fold block by block (#63): in the studio mode the song, lyrics, song parameters, source and reference, LoRA and quality blocks fold by their title, and on the song panel so do Style (was Song Details), Note, Parameters (the ACE-Step settings, their summary kept in the title) and Lyrics; what you fold stays folded after a restart. The voice choice moved to the song block beside the style it is written into, and buttons above the lyrics put in [Intro], [Verse 1], [Chorus] and the other sections, as in YuE2 Studio.
  • The library search finds a song by any of its words (#62): the words of a search may come in any order, and it reads the lyrics, your note on the song and the settings it was made with - the seed, the DiT and the models - besides the title, the style and the tags.
  • The interface can be scaled, as in YuE2 Studio (YuE2 Studio #165): Settings - Appearance - Interface scale draws the whole studio from 90 to 150 % and keeps it for the next start; Ctrl + plus and Ctrl + minus, or Ctrl with the mouse wheel, change it too, and Ctrl + 0 returns to 100 %. In a browser tab the studio and its dialogs fit the window at any scale, with the player at the bottom and no scrolling of the page, and the "slide to turn on" knob and a click on the MIDI player's notes follow the pointer.
  • The agent's guide names every platform the studio ships for (#68): the first step of the MCP skill said the studio is a Windows program that needs an NVIDIA card; it now points an agent to the Windows, macOS (Apple silicon) and Linux (experimental) packages of the latest release, and says the engine also runs on the processor and, untested, on AMD and Intel cards through Vulkan. From pull request #68 by the-media-vampire.
  • Why a song failed is said in the studio's language, as in YuE2 Studio: a song refused before it is sent, lost with an engine that restarted or given up by the engine is told in English, Russian, Chinese, Japanese or Korean, as the window is set - among them a LoRA that does not fit the chosen DiT, a source track over 10 minutes, a VAE or DiT that wrote values that are not numbers (now named by its stage), and an engine that returned silence; the service keeps the English text for its log, the statistics and agents, with a code and fields beside it.
  • Stems and Audio to MIDI run on the audio.cpp engine, as in YuE2 Studio: HT-Demucs separates in the same audio.cpp server that times karaoke - through CUDA on an NVIDIA card, through Vulkan on an AMD or Intel card, otherwise on the processor - and MuScriptor turns a track into MIDI there too, instead of the ONNX Runtime and the HOT-Step tool. A running bar shows the time a run has taken, and its percent once it reports one; the MIDI player plays the original against the MIDI for every track it is given, and the first-run hint names what is really downloaded - the model and, if missing, the shared audio engine. The separation quality setting is gone: audio.cpp separates at the model's own setting. The update screen offers the new model and server to those who have the old separator, and removes the ONNX HT-Demucs once the new one is in, and the HOT-Step MIDI transcriber older releases left in midi/runtime once MuScriptor has its server.
  • On Linux the audio.cpp server runs on CUDA 12 cards too, as in MiniMax Music3 Studio: a card that runs CUDA 12 only got the Vulkan server; each CUDA server now downloads its cuFFT from NVIDIA's packages beside it (CUDA 13: about 160 MB, CUDA 12: about 200 MB) and takes its CUDA runtime and cuBLAS from the music engine's folder, one copy for both, and a CUDA 12 card gets the CUDA 12 server.
  • On Linux the music engine computes on CUDA 12 cards too, as on Windows: a card from the GTX 900 to the Titan V series, or a driver from 525 to 579, ran the engine on Vulkan; the engine now has its CUDA 12 build beside the CUDA 13 one, chosen by the card and the driver. Neither carries its CUDA runtime and cuBLAS in the package any more: the first CUDA start downloads them from NVIDIA's packages (CUDA 13: about 440 MB, CUDA 12: about 585 MB), with the start screen's percent.
  • The engine is updated from acestep.cpp upstream onto ggml 0.29: the newest ggml with its CUDA flash-attention and memory work.
  • Engines and tools up to date, as in YuE2 Studio: the assistant on llama.cpp b12248 (b11900 before; CUDA 13.5 on Windows and Linux, the same Ubuntu 22.04 limit for its CUDA build), tempo, key and the listening pack on ONNX Runtime 1.31.1 (1.30.0 before) with its Rust binding ort 2.0.0-rc.15, Parakeet on transcribe.cpp engine-0.2.1 and stem separation, karaoke and audio-to-MIDI on the audio.cpp server server-31cb1a4a. The update screen offers them as a components update. On Windows the assistant's CUDA 13 build now comes with the CUDA 13.5 libraries of the same llama.cpp release, so a computer that runs the assistant on CUDA 13 downloads 426 MB of them again.
  • The tempo and key of a song are measured on the processor, as in YuE2 Studio: 4.5 to 6 seconds for a song of three to four minutes, for Describe by ear and dataset preparation alike. ONNX Runtime no longer runs on the graphics card, and the update screen removes the CUDA, cuDNN and DirectML files of earlier versions: about 2.3 GB on Windows with an NVIDIA card, about 36 MB with DirectML.
  • About is three blocks on one screen, as in YuE2 Studio: the studio - its name, version and description, with Report a problem and the studio's GitHub; Author - who the author is in his own words and his links as buttons, each "Network · name" (Telegram, X, GitHub); Support the author - a bank card, Boosty, and All the ways, the donation page of the studio's site in the window's language (Apple Pay, Google Pay, crypto and more). The list of the other studios is gone from it. The README and the donation page point to x.com/nerualdreming as well.

Fixed

  • A screen reader can play a song from the library, as in MiniMax Music3 Studio (YuE2 Studio #171): the play control on a song's cover in the library, a playlist and Liked is a real button named by the song ("Play: <title>", "Pause: <title>" while it plays), reached with Tab and pressed with Enter or Space.
  • Karaoke's engine updated while it is in use says when it takes over, as in MiniMax Music3 Studio: a recogniser loaded in the running studio stays in it until the studio closes, so the update screen now says that karaoke's engine updates after a restart of the studio and the earlier one stays in use until then, instead of reporting the update as in place.
  • A computer without a graphics card to compute on is told what that means, as asked in YuE2 Studio (YuE2 Studio #224): where songs would be made on the processor - no card, or built-in graphics below the smallest local set - the first screen's recommendation and Settings - Local engine say that this is many times slower, tens of minutes and hours, and that a discrete card or OpenRouter is faster.
  • Your own subtitles load in the encoding they were saved in: Load .srt / .lrc read every file as UTF-8, so a file in Windows-1251, GBK or Shift-JIS turned into replacement marks without a word, and karaoke_set refused it; a file in UTF-16 or UTF-8 with its mark, plain UTF-8 or the system's code page now reads as written, as cue sheets and lyrics files already do.
  • The window keeps up with a slow service, as in MiniMax Music3 Studio: the setup status, the engine start, the update screen, LoRAs, training, the agent panel and the engine log were asked again on a timer whether or not the last answer had come, so a service answering slowly had the same request queued several times over; each is now asked again a pause after its answer, one at a time, as Tools already is.
  • A cloud recogniser that returns no timings no longer makes a dataset song an instrumental, as in MiniMax Music3 Studio: an OpenRouter answer without timed words is heard again with the vocal lifted out, as a local "no words" is, and then says to pick a model that returns timings instead of marking the song instrumental; while a LoRA trains, the vocal is lifted out on the processor, a separator that fails leaves no temporary file, and a second hearing that fails for another reason says so.
  • Tools says when the library does not answer, as in MiniMax Music3 Studio: the song list shows a spinner until the library answers, and an error with Refresh instead of "No songs yet" when it does not; the tools' status is asked again a pause after each answer instead of every second over requests still in flight.
  • Another kind of DiT starts from its own sampling: after Reuse Prompt on a turbo song, switching to a base, SFT or merge DiT kept the song's 8 steps, shift 3 and Heun, so base and SFT ran far too few steps; changing the kind of DiT now puts steps, shift, solver and scheduler back to the new model's preset, as Reset to engine defaults does, while a Reuse on the same kind keeps the song's.
  • Karaoke keeps a verse on its first performance when a line of it is not sung: a line the recogniser matched only in part could pull the whole verse to the song's second time through it, tens of seconds late; skipping sung words now costs the alignment more than such a match brings.
  • The karaoke of a video moves up to 30 seconds either way, in hundredths (YuE2 Studio #231): the lyrics offset in the video window reached only 3 seconds in tenths; it now takes from -30.00 to +30.00 seconds, on the slider and typed in its field.
  • The engine's log keeps to its size: past eight megabytes its older half goes, as before, now also when the engine has written text that is not UTF-8; such a log used to grow without end.
  • An error stays on screen until you close it (YuE2 Studio #230): an error message vanished after three seconds, often before it could be read; it now stays until closed, a long one scrolls and its text can be selected and copied. An assistant that writes too slowly to finish in three minutes says so instead of reporting that it cannot be reached.
  • Karaoke on lyrics longer than the song times only what is sung, as in YuE2 Studio: when the text repeats verses the song never reaches, every lyric line was put on one moment of the song together with the sung ones. The sung lines now get their own times from the first copies of the text, and lines the song does not reach get none; a first line sung unclearly keeps its place from the first word heard.
  • Lyrics edited after Reuse prompt stay when you come back to Create, as in YuE2 Studio (YuE2 Studio #216): leaving Create and coming back loaded the reused song's lyrics and settings over your edits; a Reuse now loads the song once.
  • A graphics card chosen in Settings that is no longer in the computer is said so, as in MiniMax Music3 Studio: the studio no longer points CUDA at a card number that is not there, which left every CUDA part of the studio without a card and sent the engine to the processor without a word. The engine does not start then and says why on the start screen and in its log; Settings - Local engine shows the missing card in the list and asks to choose one.
  • Cloud requests ride out a busy moment, as in MiniMax Music3 Studio: an OpenRouter request (the assistant, the cloud music, descriptions) that the service answers with 408, 409 or 429 is sent again after the wait it asks for, at most a minute, up to four times; a server that cannot be reached is named by its host. The studio's log also masks keys written as an id and a secret.
  • AMD and Intel cards on Windows size the recommended set, as in MiniMax Music3 Studio: the first-run screen read only NVIDIA cards through nvidia-smi, so an AMD or Intel card was taken for no card at all; the studio now reads the adapter and its memory from the Windows registry, as on Linux, sizes the set to it and says the engine computes on it through Vulkan. Built-in graphics too small for any set on the card is named, and the smallest set runs on the processor.
  • A download that cannot get through a proxy says so, as in MiniMax Music3 Studio: a download that does not connect through the system proxy or the one set in Settings - Providers names the proxy (its address, never the login) and tells you to start the proxy program or choose No proxy, instead of advising the HF-Mirror that sits behind the same proxy; the Hugging Face check says the same in the window, and a model download that failed shows its reason in Settings - Models too.
  • No Windows Terminal tab is left open beside the studio (#69): on Windows 11 24H2 and later the studio started from a shortcut gets no console of its own and makes one without a window, which the engine and the other programs it starts share, so neither a console window nor a Terminal tab appears; started from a terminal, it still writes its log there. On Windows 11 22H2 and 23H2 with Windows Terminal as the default terminal the tab still opens, as before: those versions have no way to start a console without one.
  • Describe by ear keeps to the processor when you chose it, as in YuE2 Studio: with the processor chosen in Settings - Local engine the captioner still took the graphics card's CUDA libraries and ran there; it now runs on the processor then, without them.
  • A program of the studio that crashes without a word says where it crashed, as in YuE2 Studio: when the engine fails to start, or the captioner or the trainer stops on an exit code such as 0xc0000005 or 0xc000001d, the studio reads Windows' record of the crash and adds the module it happened in, the exception and the offset to the error and the engine log - the file name only, never a path.
  • A song of ten minutes is made instead of refused: the language model could plan a little more than ten minutes of music for a long song, and the engine then refused the whole track ("T=… exceeds silence_latent max 15000"); the plan now stops at ten minutes and the song is rendered at that length. A source and a reference of ten minutes each now also fit into one request to the engine.
  • A port Windows reserves for itself is named on Windows in any language: when the engine's port lay in a range Windows keeps for itself, the studio read that list as UTF-8 and found nothing on a Russian or Chinese Windows, whose console writes in its own code page; it now reads the list in any code page and runs Windows' own netsh, not a program of that name beside the studio.
  • A failed song names the engine's reason again after the engine log took a broken character: the studio read the engine log as strict UTF-8, so a single malformed byte in it - a half-written character in text the language model wrote - made the whole log unreadable and every later failure said only "the engine failed this job and its log names no cause". The log is now read past such bytes, as YuE2 Studio already does.
  • A high-resolution source or reference no longer fails with "Payload Too Large": a recording was sent to the engine at its own sample rate, so a long 96 or 192 kHz file passed the engine's 256 MB request limit and the song failed with an empty "413 Payload Too Large". The studio now sends every source and reference at 48 kHz, the rate the engine reads them at anyway, band-limited.
  • A song whose source or reference track is gone is refused at once: a request naming a track no longer in the library - from an agent, or a re-render of a song made from a deleted track - was accepted and failed only when it reached the engine, with "the track … is not in the library". It is now refused when it comes in, naming which of the two is missing.
  • A model that arrived after the engine started is found instead of "DiT not found": the engine reads its models folder only when it starts, so a model taken from another program, put in by hand or downloaded while the engine could not be asked to look again was on disk and still "not found". Before a song goes to the engine, the studio now has it read the folder again when the song names such a model.