-
Notifications
You must be signed in to change notification settings - Fork 1.6k
feat(plugin): Pitch Shift #3291
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
How can i easily download and install it right now? And will it work on the current version v3.9.0 ? |
@Glebsin This PR was last updated just after 3.9.0 released, so if you go to this branch on my fork, download, and build the project you could use it right now. But if you're not already a developer this is not worth the hassle of doing imo. So probably just wait until this is merged... eventually. |
Since Rubberband uses GPL 2.0, we cannot merge this PR. Please use another library |
For tracking purposes, all libraries that have been tested/attempted in order of quality:
|
The library has been switched to use SoundTouchJS, which has slightly inferior audio quality but is "good enough". SoundTouch is LGPL, but I believe that this usage follows the spirit of LGPL, as youtube-music connects with SoundTouch as a library and no modifications to the SoundTouch code have been made. If this is still a problem, you could theoretically just download the worker file from a web url at first launch or fetch the file from a web url every time to follow the letter of the license. |
Pitch Shift
Implements shifting the pitch of the current song, like the Transpose extension.
I did what I could with my limited experience in this codebase, and the plugin is technically complete. But...
Help Wanted:
Cent-wise control: Currently you can make sub-semitone changes with the scroll wheel that moves in increments of 0.01, but you might want that to move in units of cents instead.Probably not needed.Related: #2005 #2186 #3168
Off-topic:
This took me waaaaay too long to implement, because I just could not find a good library for this until I used chatgpt deep research to find this port of rubberband with 33 weekly downloads 💀. And then it took me another eternity trying to get the renderer to load the script locally and not from the internet. But it's done and it works!