Giter VIP home page Giter VIP logo

stemroller's People

Contributors

alectrocute avatar arecsu avatar curtgrimes avatar devinburnette avatar iffyloop avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

stemroller's Issues

Linux Packaging

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:

  • Should StemRoller bundle its own ffmpeg and demucs, or rely on those provided by the distro
  • What package format should be used? @JuanM04 suggests Flatpak. AppImage and Snap are two other candidates, although the Snap format seems to be used primarily with Ubuntu.

Request: Multiple Vocals split

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.

Crashes on macOS Sierra

Many 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.

Processing local file fails if the path contains certain unicode characters

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>

Fix text when drag-and-drop fails

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."

Process takes time forever with Mac1

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.

⌘+A does not work in the search bar

Steps to reproduce:

  1. Launch app
  2. Type in a search term like 'asda'
  3. Use a key combination of A while still having caret active in the search bar

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

Automate Builds

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.

Suggestion: Show progress instead of "Processing"

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.

Support MPS on Macos devices

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.

Request: Can we sign the Mac app?

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.

GPU Support

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!

Save processing as a "template" for source?

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?

VirusTotal - 'Telegram Scraper' - StemRoller (bin) in Release 2.0.3

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? : -) )

How to change output path

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?

Can't start on archlinux

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)

Add Preferences page

User should be able to set the following preferences:

  • Output folder where stems are stored
  • Which stems should be kept and which should be deleted (e.g. if you want to only keep instrumental and vocals, and remove drums, bass, and other)
  • Conversion to another format (FLAC, MP3) via ffmpeg after stems are finished processing

View search result in web browser

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?

Audio Artifacts

image
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.

Built-in stem player with mute/solo

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.

Integration as plugin for DAWs

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!

Import our own files?

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

Error: Unable to find Demucs output directory (Linux)

 [ 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.

Isolate stem option?

Would it be more performant to be able to choose a specific stem to isolate, and get two tracks (stem + remaining sounds) instead?

Call for help with Linux support

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.

Request: isolate guitars, synths and piano

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.