stemrollerapp / stemroller Goto Github PK
View Code? Open in Web Editor NEWIsolate vocals, drums, bass, and other instrumental stems from any song
Home Page: https://www.stemroller.com
License: Other
Isolate vocals, drums, bass, and other instrumental stems from any song
Home Page: https://www.stemroller.com
License: Other
Very cool project! Just a heads-up that I added StemRoller to https://awesome-sveltekit.netlify.app/stemroller in janosh/awesome-sveltekit@942e227.
Let me know if any of the metadata needs to change. If not, feel free to close this issue.
after a song is done it would be cool to see the total processing time
[ develop | ✚ 1 ]
✘ 11:09 daryl@nifflheim ~/src/stemroller $ npm run dev
> [email protected] dev
> cross-env NODE_ENV=dev STEMROLLER_RUN_FROM_SOURCE=true npm run dev:all
> [email protected] dev:all
> concurrently -k -n=svelte,electron -c='#ff3e00',blue "npm run dev:svelte" "npm run dev:electron"
[electron]
[electron] > [email protected] dev:electron
[electron] > electron .
[electron]
[svelte]
[svelte] > [email protected] dev:svelte
[svelte] > vite dev
[svelte]
[svelte]
[svelte] VITE v3.0.7 ready in 345 ms
[svelte]
[svelte] ➜ Local: http://localhost:5173/
[svelte] ➜ Network: use --host to expose
[svelte] files in the public directory are served at the root path.
[svelte] Instead of /static/fonts/Mukta/Mukta-Bold.ttf, use /fonts/Mukta/Mukta-Bold.ttf.
[svelte] files in the public directory are served at the root path.
[svelte] Instead of /static/fonts/Mukta/Mukta-Regular.ttf, use /fonts/Mukta/Mukta-Regular.ttf.
[electron] BEGIN processing video "39acedf8e552cea8" - "ID"
[electron] Splitting video "39acedf8e552cea8"; 4 jobs using model "mdx_extra_q"...
[electron] Trace: Error: Unable to find Demucs output directory
[electron] at findDemucsOutputDir (/home/daryl/src/stemroller/main-src/processQueue.cjs:148:9)
[electron] at async _processVideo (/home/daryl/src/stemroller/main-src/processQueue.cjs:205:26)
[electron] at async processVideo (/home/daryl/src/stemroller/main-src/processQueue.cjs:267:5)
[electron] at processVideo (/home/daryl/src/stemroller/main-src/processQueue.cjs:269:13)
I even created ~/Music/StemRoller
but I think it's complaining about /tmp
directories. Not really sure what could be causing this issue.
tmpfs /tmp tmpfs defaults,noatime,nosuid,mode=1777 0 0
I tried looking but ran out of time. entries
on processQueue.cjs
:140 is an empty list, thus no entries are evaluated.
Two suggestion
Needs to support multiple files like a max of 18 to 25 files in one go from local stored files
Needs support for AMD GPUs AMD GPUs are 20% to 45% cheaper than same NVidia GPU that = to a AMD more people will be switching to AMD GPUs in the next few years.
Would it be more performant to be able to choose a specific stem to isolate, and get two tracks (stem + remaining sounds) instead?
Thanks for sharing this amazing project, only for curiosity
Is it possible that we can get the isolation of guitars, synths and pianos individually instead of get mixed in a single audio file?
Thank you in advanced
Unfortunately, I need to announce to everyone that realistically I will not be able to support StemRoller at all on Linux myself. I'd really like to get it working, but the huge variety of distros and possible system configurations (a good thing! Just inconvenient for packaging...) makes the situation significantly more complicated than on Windows or macOS. With the various responsibilities I have currently outside of StemRoller, I can't commit to support this - it's already been difficult re-bundling the latest Demucs release for Win/Mac platforms. The bottom line is, I really appreciate all the issues and pull requests I've received concerning Linux support, but I can't manage them myself right now.
I've never managed a large open-source project before, so am very open to feedback, but it seems to me that it may be best for anyone who is interested in packaging StemRoller for a certain distro to fork this repository, make the necessary changes to get it working on their distro, and then submit their forked version for inclusion via the distro's package manager. Once the changes are verified to work for many users of that distro, I'll consider merging your changes back into this repository, so hopefully it improves things for everyone. That might take a while though, as I'll need to test those changes on Windows/macOS too to make sure they don't break on those systems.
Thank you everyone for your patience and support so far, and I'm sorry I haven't really responded to the several open PR's/issues for Linux support. Just wanted to be transparent about what's going on, and hopefully create a thread here for anyone who's serious about getting this included in their distro's package manager. Feel free to drop information here on what was needed to fix it for you personally too, even if you don't plan to contribute back to packaging for your distro, as that may help others.
See https://github.com/stemrollerapp/stemroller/blob/main/.github/workflows/build-windows.yml#L27 - StemRoller folder needs to be moved up one level from dist and placed adjacent to the SFX maker.
I use StemRoller for practicing songs so I usually want a track with bass and the track without bass (vice versa for drums).
Right now I open the stems in Reaper and export new renders from there. I would be cool if this could be done directly from within StemRoller :-)
Im having the issue that anytime i upload anything local to Stemroller it immediately fails to convert. The naming of the file does not matter either. But when i try to search the song, it works.
Stemroller 2.0.7
Windows 11 Pro
Hi, awesome project, I've played it with countless hours (more than I'd like to admit)
I was trying to make installation of StemRoller easier on Mac using brew
. However, homebrew/homebrew-cask has stopped taking MRs for projects that don't have a signed app:
$ brew audit --new-cask stemroller
:
audit for stemroller: failed
- Signature verification failed:
/private/tmp/d20220916-62803-f13aen/StemRoller.app: code object is not signed at all
In architecture: x86_64
macOS on ARM requires applications to be signed. Please contact the upstream developer to let them know they should sign their app.
Error: 1 problem in 1 cask detected
Example: Homebrew/homebrew-cask#131229 (comment) (read that and the next comment)
I don't have an ARM Mac but the downside seems quite significant:
Please contact the upstream developer and ask them to codesign their application. Otherwise this will prevent the application from running on Apple Silicon machines without disabling Gatekeeper (which is not ideal).
Is this something that will take a non-significant amount of work? I think the returns on getting this done (Just a brew install --cask stemroller
as opposed to the current method) will help a lot.
Once a file is processed, are there parameters generated that could be saved for future use, or do I always have to re-process the file from scratch?
An example use case might be if I lost the output wav files, could I load a template saved by a previous run on the same file to more quickly extract the result?
Diarization techniques (I guess) to identify and separate multiple vocals. A use-case: extracting multiple speakers or characters from a movie (audio track) which was my motivation for this request as a feature.
Would like to look into using GitHub Actions or similar platform to automate builds for all three platforms (Windows, macOS, Linux). Will do some research at a later date, but if anyone has input/advice then please share it in this thread.
See title.
A lot of the work that I do that would be aided by StemRoller benefits from strict file organization, so it's a little annoying for me to have to move the output files around every single time I use it. Would it be possible to add a toggle to use the input file's directory instead of making a new folder in a designated output path?
https://github.com/stemrollerapp/stemroller/assets/34815371/691dfd10-acf4-4977-b27f-d7bcac7169ed
Ive noticed this very minor issue on generated audio files where background noise or other effects will be brought up very rapidly.
There are multiple little lines of audio (in the image) that make a sort of rattling sound in your headphones when you listen to the track.
As you can see in the image they occur very frequently in this one audio track.
This issue is almost never seen on the "vocal" separation but very prominent on the "other" separation with less prominence but very mildly noticeable on the drums and bass too.
It makes a sort of tv static or clicking sound. Not sure if this is fixable or not but thought id make an issue for it to point it out.
Ive loved using Stemroller after switching from iZotope RX because it has so much more cleaner cuts and handles the audio easier. This however is the only drawback Ive come across and would like to make note of it, not sure if others have had this issue too.
It was very obvious on this one specific audio track that I got back.
Ive attacked a very short .mp4 containing only an short clip from the audio track of the issue.
First I want to say that this is a wonderful tool and does a great job separating tracks.
I'd like to know if a plugin for DAW integration would be in the works? Looking forward to contributing to this project when I have some free time.
Thanks in advance!
The abillity to pause and cancel processing, and the abillity remove queued songs
I'm using this tool to make charts for rhythm games and when a solo happens, all guitars get muted if a note is missed. It'd be nice to split the rhythm and lead guitar so rhythm will still play during the solo.
This program is great, but is it possible to separate guitar and piano?
First, I tried to Claim my Account on Discord but it won't allow me to do so. I don't use Discord, have no idea how it works and it has been a pita trying to sort it out! Hence I am posting this request here.
Anyway... I am using an app called X-Launcher by WinPenPack to make StemRoller portable. By portable, I mean that it saves all it's settings within the X-Launcher\Lib\AppData folder. But X-Launcher is now 10 years out of date. So I tried to learn how to compile it as a x64 version, in the hope of extending it's life. It seems to work just as good as the original.
There is one specific thing though:
[quote=lwc post_id=107065 time=1717450293 user_id=35242]
Hi, again I stress I don't think Stem Roller uses environment variables to determine where is appdata, at least neither APPDATA nor USERPROFILE. Can Stem Roller's author just tell you how does it decide where is appdata?[/quote]
This is a post from PortableFreeware.com forum.
So would you please answer the question posted above.
Tbh, it would be appreciated greatly if you could actually give users the option of saving these files within the StemRoller.exe folder instead of AppData, would you please consider that?
Thanks
This project would have a significant speed boost on mac if the demucs model were to use mps instead of cpu in a similar way that the windows binary uses the cuda backend.
There have been some pretty groundbreaking AI updates that haven't seemed to have been included in StemRoller yet - any plans to add them soon?
This is such a fantastic tool, thank you so much for making it!
I mostly use it to separate the bass stem and use that to practice bass guitar (I hope to see guitar and piano stems coming with later version of Demucs!)
In my opinion, a great feature enhancement would be if there was a stem player built in, an instant way to listen to the separated tracks.
If this then had mute and solo buttons for all tracks this would make StemRoller a fantastic music practice tool. You'd be able to solo your instrument, to closely hear what the artist played, and then mute it and play along without the original stem.
It's give me error:
[electron] BEGIN processing video "NZp1ZSxgi4U" - "2017"
[electron] Downloading YouTube video "NZp1ZSxgi4U"; storing in "/tmp/StemRoller-pybH23/yt-audio"
[electron] Splitting video "NZp1ZSxgi4U"; 2 jobs using model "mdx_extra_q"...
[electron] treeKill process undefined
[electron] Trace: treeKill failed: Error: pid must be a number
[electron] at killCurChildProcess (/home/hoopengo/code/git/stemroller/main-src/processQueue.cjs:60:15)
[electron] at ChildProcess.<anonymous> (/home/hoopengo/code/git/stemroller/main-src/processQueue.cjs:77:7)
[electron] at ChildProcess.emit (node:events:527:28)
[electron] at ChildProcess._handle.onexit (node:internal/child_process:289:12)
[electron] at onErrorNT (node:internal/child_process:478:16)
[electron] at process.processTicksAndRejections (node:internal/process/task_queues:83:21)
[electron] Trace: Error: spawn demucs-cxfreeze ENOENT
[electron] at ChildProcess._handle.onexit (node:internal/child_process:283:19)
[electron] at onErrorNT (node:internal/child_process:478:16)
[electron] at process.processTicksAndRejections (node:internal/process/task_queues:83:21) {
[electron] errno: -2,
[electron] code: 'ENOENT',
[electron] syscall: 'spawn demucs-cxfreeze',
[electron] path: 'demucs-cxfreeze',
[electron] spawnargs: [
[electron] '/tmp/StemRoller-pybH23/yt-audio',
[electron] '-n',
[electron] 'mdx_extra_q',
[electron] '--repo',
[electron] '/home/hoopengo/code/git/stemroller/anyos-extra-files/Models',
[electron] '-j',
[electron] 2
[electron] ]
[electron] }
[electron] at processVideo (/home/hoopengo/code/git/stemroller/main-src/processQueue.cjs:217:13)
[electron] at process.processTicksAndRejections (node:internal/process/task_queues:96:5)
User should be able to set the following preferences:
instrumental
and vocals
, and remove drums
, bass
, and other
)ffmpeg
after stems are finished processingSince demucs in some cases, especially for vowel separation is a bit deficient, it would be nice to be able to select between different models, even to be able to combine them.
For example to extract and download with demucs and then clean with some echo model.
I love using StemRoller for its ease of use, keep up the good work <3
https://github.com/karaokenerds/python-audio-separator
https://github.com/Anjok07/ultimatevocalremovergui
As the title, I want to change output path, but I don't find any option to set that, are there any ways to change it?
hello - just throwing this in here. I expected to be able to load some of my own music into the app to be split
Are you using Demucs v4?
Looks like they may have made some substantial improvements to the model.
I can't tell what you're using, but the model download URLs appear to be 2 years old? 🙂
If I try to load a local file, which has the character ű
anywhere in its path, then the splitting process fails.
It seems like characters starting from U+0100 (character code 256) are causing the problem: Ā
(U+0100), ā
(U+0101), etc. doesn't work, but ÿ
(U+00FF) and þ
(U+00FE) works.
Tested on windows, with the following paths: X:\ű\test.mp3
, and X:\ű.mp3
Console output:
[electron] BEGIN downloading/processing video "a327034531660779" - "test"
[electron] Splitting video "a327034531660779"; 4 jobs using model "htdemucs_ft"...
[electron] Running with "-d cpu" to force CPU instead of CUDA
[electron] child stderr:
[electron] C:\Development\demucs-cxfreeze-2\venv\lib\site-packages\torch\_jit_internal.py:839: UserWarning: Unable to retrieve source for @torch.jit._overload function: <function upsample at 0x000001877F20E9D0>.
...
many more warnings
...
[electron]
[electron] child stderr:
[electron] C:\Development\demucs-cxfreeze-2\venv\lib\site-packages\torch\_jit_internal.py:839: UserWarning: Unable to retrieve source for @torch.jit._overload function: <function norm at 0x000001877F401310>.
[electron]
[electron] child stderr:
[electron] Traceback (most recent call last):
[electron] File "C:\Development\demucs-cxfreeze-2\venv\Lib\site-packages\cx_Freeze\initscripts\__startup__.py", line 138, in run
[electron]
[electron] child stderr:
[electron] File "C:\Development\demucs-cxfreeze-2\venv\Lib\site-packages\cx_Freeze\initscripts\console.py", line 16, in run
[electron]
[electron] child stderr:
[electron] File "main.py", line 4, in <module>
[electron]
[electron] child stderr:
[electron] File "C:\Development\demucs-cxfreeze-2\venv\lib\site-packages\demucs\separate.py", line 158, in main
[electron]
[electron] child stderr:
[electron] File "C:\Users\Nunya\AppData\Local\Programs\Python\Python39\lib\encodings\cp1252.py", line 19, in encode
[electron]
[electron] child stderr:
[electron] UnicodeEncodeError: 'charmap' codec can't encode character '\u0171' in position 20: character maps to <undefined>
[electron]
[electron] child stdout:
[electron] Selected model is a bag of 4 models. You will see that many progress bars per track.
[electron] Separated tracks will be stored in X:\temp\StemRoller-ukGKgl\separated\htdemucs_ft
[electron]
[electron] Trace: Error: Unable to find Demucs output directory
[electron] at findDemucsOutputDir (X:\stemroller\main-src\processQueue.cjs:156:9)
[electron] at async _processVideo (X:\stemroller\main-src\processQueue.cjs:212:26)
[electron] at async processVideo (X:\stemroller\main-src\processQueue.cjs:286:5)
[electron] at processVideo (X:\stemroller\main-src\processQueue.cjs:288:13)
The relevant part is probably this line:
UnicodeEncodeError: 'charmap' codec can't encode character '\u0171' in position 20: character maps to <undefined>
Is it possible to modify the app so that it can become a web based front end? I've noticed that the app is based on electron. If that's really the case, I can easily deploy it onto a powerful remote home server. That will increase freedom of deployment.
TL;DR:
It's probably nothing but I figured it worthwhile to raise this based on increased activity around NPM packages (typo-naming packages, takeovers, etc).
Release:
Apple Release 2.0.3
StemRoller.App > Contents > MacOS
StemRoller - ec13e1d9a6af478e4fdad876f08f53acf31bd136fac0be3c2698a460eda054a3
(Haven't checked any others)
Issue:
The binary at StemRoller.App > Contents > MacOS > StemRoller
(within the app package itself) is hash matching Maestro Telegram Scraper.
It is not flagged as malicious likely due to legitimate utility in it's domain of use (scraping > communications) however in the context of an audio-splitting utility, is worthy further scrutiny unless the result of a niche runtime, hash collision, VirusTotal issue such as an index key:value / UX mismatch, or other reasonable explanation ( user error? : -) )
Hey,
I've tried it few time and I understood that same file which I successfully extracted vocals from in windows with Intel CPU,
Same thing is not working with M1 CPU and neither any other thing that I search and I try.
it will be in process like 20 hours something and nothing happens.
Using apple M1 chip.
One of my audio files is 1 hour long. I don’t know if this software supports it. I tried it but it failed.
Hi! Great project :)
As far as I know, demucs supports GPU acceleration. I've noticed StemRoller only uses my CPU. I have an nvidia RTX 2070. Would it be possible to have at least a switch within the app to enable GPU acceleration?
Thank you!
Is there any way to use it in swift
Steps to reproduce:
What happens?
Nothing notable
What is expected?
The whole search bar text is highlited and selected.
Environment
Because of access only to macOS at the moment I was able to reproduce this only on the macOS build, in macOS Monterey (12.4). Version of the app is 1.0.0
I cannot reproduce this in the development version - current main branch commit
Will there be an option to drag in our own files in the future versus internet search?
I really love the app and am blown away how much better it is than spleeter based apps. The quality is remarkable.
It's found anything I searched in seconds.
Thanks
Rob
I'd like to use the 6s
model sometimes. It would be nice to be able to pick it.
Decided to separate this from #1, since it should be trivial to make StemRoller run on Linux, but may be quite difficult to package it in a format that is compatible with many distros. Some questions to think about here:
ffmpeg
and demucs
, or rely on those provided by the distroMany users seem to want to run StemRoller on macOS versions as old as Sierra (10.12), but splitting consistently fails on that platform. Not sure if it's possible to fix, but hopefully repacking demucs-cxfreeze
should fix the issue.
Currently, the app simply displays a dialog box with the text "There was an error." This should be changed to something more descriptive, such as:
"Unable to process this file. Please ensure that you dropped an audio file, not a folder or other item."
Please add support/docs for Linux (from what I can gather it is just some additional steps that need to be performed): https://news.ycombinator.com/item?id=32360616
Since this is a long-running process, it would be really helpful to print some sort of progress/stdout/etc. to the user. I'd be happy to make a PR for this if I have time, but am leaving this here just in case.
Sometimes I want to make sure I have selected the right Youtube video. Could you add a "View in Web Browser" button for each search result similar to the "View in File Browser" button that is displayed for completed separations?
I love Stemroller! Unfortunately, it recently quit working. I am using Mac OS High Seirra. I also tried it on my Windows machine with the same results. I downloaded "demucs-cxfreeze-1.0.0-mac_sierra.zip", but I don't know how to use it. I really wish I could get it working again. Any help would be much appreciated. Much respect, —Kimbo
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.