stemrollerapp / stemroller

Isolate vocals, drums, bass, and other instrumental stems from any song
https://www.stemroller.com
Other
2.61k stars 103 forks source link

Call for help with Linux support #29

Closed iffyloop closed 6 months ago

iffyloop commented 1 year ago

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.

guevaralb commented 1 year ago

Hello i'm interested in contribute. I can create a arch/manjaro package and a release binary. I got it running with GPU support I will join to the discord server

iffyloop commented 1 year ago

Excellent, thanks so much @guevaralb! Feel free to drop a link to the package here so others who may be looking for an Arch package can find it.

3hhh commented 1 year ago

Most maintainers in your situation tend to go with something like flatpak / flathub to support all Linux distros at once. The startup performance is worse than with native packages and required storage space is also worse for the end user, but it's more maintenance friendly for you.

Anyway thanks for maintaining stemroller, much appreciated!

wolfbeee commented 1 year ago

Got interest here 2

iffyloop commented 1 year ago

@3hhh and @wolfbeee - sorry for the late reply. I think a Flatpak sounds like a great idea. (Have also heard of AppImage and Snap before, any idea how those compare?) I don't have time to work on this myself, but if either of you would like to fork this repo and make the necessary changes to get it working with one of those distribution formats, plus write a GitHub actions script to deploy it similar to the existing ones, then I'd be happy to integrate your changes back into this official repo. Thanks for your enthusiasm to bring StemRoller to more platforms!

monsrud commented 1 year ago

I realize this is not an installer but... This seems to work fine for running stemroller on Mint. I have processed some files and it seems to work without any issues. I do not have an Nvida GPU.

curl -fsSL https://deb.nodesource.com/setup_current.x | sudo -E bash - && sudo apt-get install -y nodejs git clone https://github.com/stemrollerapp/stemroller.git cd stemroller npm i -D npm run build:svelte && npm run start

iffyloop commented 1 year ago

@monsrud thanks so much for posting your setup here! I'm sure this will help others using Mint. Happy to hear StemRoller is working for you!

monsrud commented 1 year ago

The ability to specify demucs arguments via environment variables or command line arguments or a settings file would be helpful. I added the args I wanted inside processQueue.cjs.

@iffyloop It is a really nice tool. I've recommended it to a number of musician friends as a practice aid. The ability to have items in a queue is also very nice. It is friendly enough that non-technical users are able to operate it. That's a huge plus. Many brains would melt if they had to install Python modules and run demucs on the command line.

iffyloop commented 1 year ago

@monsrud Interesting... what additional arguments did you want to specify? I assumed most people who had enough technical background to know what custom parameters they wanted would simply use Demucs via CLI, since it exposes many more options and comes with different models. But now that you mention it, I can see how some people might want the convenience of the GUI while applying customizations once and saving them (as you did). I'm too limited on time right now to add more options myself, but if you want to send a PR with changes to the PreferencesPopup, processQueue and preload to support the options you wanted then I'd be happy to help get it merged.

And thanks so much for your kind words! I'm really happy to hear it's been helping less technical users - that was my main goal in developing this app and part of the reason it doesn't yet expose as many options as I'd like.

monsrud commented 1 year ago

I was increasing shifts, overlap and segment size. I have a PC with 96GB of RAM. It takes more than an hour to process a 3 minute song with the settings I use but I think --- (could be my imagination or blind hope, but I am pretty sure) --- that the quality is improved. I was hoping that overlap and segment size would help for transitioning between spots in a song where there were no vocals into spots where there were. Hard to tell by the demucs doc exactly what some of the options do. I used shifts 4 and segments 40. The overlap is .25 which is default. Sometimes songs sound kind of watery and there are weird artifiacts with default demucs values right at the point the vocals start in a song when using the default settings. That is what I am generally trying to improve. I use Stemroller/demucs primarily to split songs up and use the instrumental tracks for my voice lessons. If anyone knows more about demucs options, I'd be interested in hearing about what works for you. I'd also be interested to know if I am wasting time by increasing the segment size so much.

On Thu, Mar 23, 2023 at 5:08 PM iffyloop @.***> wrote:

Interesting... what additional arguments did you want to specify? I assumed most people who had enough technical background to know what custom parameters they wanted would simply use Demucs via CLI, since it exposes many more options and comes with different models. But now that you mention it, I can see how some people might want the convenience of the GUI while applying customizations once and saving them (as you did). I'm too limited on time right now to add more options myself, but if you want to send a PR with changes to the PreferencesPopup https://github.com/stemrollerapp/stemroller/blob/main/renderer-src/components/PreferencesPopup.svelte, processQueue https://github.com/stemrollerapp/stemroller/blob/main/main-src/processQueue.cjs and preload https://github.com/stemrollerapp/stemroller/blob/main/main-src/preload.cjs to support the options you wanted then I'd be happy to help get it merged.

And thanks so much for your kind words! I'm really happy to hear it's been helping less technical users - that was my main goal in developing this app and part of the reason it doesn't yet expose as many options as I'd like.

— Reply to this email directly, view it on GitHub https://github.com/stemrollerapp/stemroller/issues/29#issuecomment-1481978504, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACBJMGTMBS6OH7LRXWVGJQ3W5TCVPANCNFSM6AAAAAATFKXH4Q . You are receiving this because you were mentioned.Message ID: @.***>

WyattAutomation commented 1 year ago

Seems like just an Ubuntu/Debian package would cover most of your Linux userbase, no? I like the look of this app and what it appears to be able to do; I am evaluating it on Ubuntu/Xubuntu 22.04. If I can get Ableton 11 working on Xubuntu 22.04 with MIDI and whatever arbitrary VST dll, packing this into a .deb seems trivial so long as it works from a source build without issue. Not sure if it uses CUDA or whatever but I could probably figure it out. I am just wondering if the arch/fedora/rhel/non-debian-ubuntu crowd using Linux and trying to install this is actually substantial, or just very vocal about it? If there was some way to get a metric on how many people successfully downloaded and made use of a .deb vs a headcount of how many people show up to ask about "yocto support on RISC based smart thermostat" that might help too.

WyattAutomation commented 1 year ago

I feel like just having the docker image should cover your k8's userbase, let them stick it in a seperate pod so they can use whatever alpine abomination they want in parallel with it and call it a day. Idk though I'd get a lot more use being able to use max4live or something and just connect to a local REST endpoint and use it directly in my DAW though (Ubuntu/Xubuntu is the only flavor I have ever used that works well with a Wine Ableton 11 setup, the hidden sauce beingt to just use the FL Studio ASIO driver). Lot of potential fun to be had here.

iffyloop commented 1 year ago

@WyattAutomation I think support for Ubuntu/Debian would be extremely beneficial! Are you able to make a package for StemRoller, ideally with a GitHub Actions workflow to replicate the process, or shell script or instructions on how to do it which I could convert to a GitHub Actions workflow? Not sure that Docker is as helpful, since most people who are familiar with Docker would likely have the technical knowledge to run the repo from source anyways. As far as a REST API is concerned, that shouldn't be too complicated, but I don't currently have time to implement such a feature myself. Likely what would be best is for this to become a separate project, and only bundle Demucs and a Node.js/Express API without the Electron GUI.

iffyloop commented 6 months ago

Closing this issue for now as there has been no activity for almost a year, but feel free to reopen if anyone has packaged StemRoller for Linux and wants to share links or other information here.