this post was submitted on 19 Apr 2024
20 points (95.5% liked)

Open Source

31265 readers
226 users here now

All about open source! Feel free to ask questions, and share news, and interesting stuff!

Useful Links

Rules

Related Communities

Community icon from opensource.org, but we are not affiliated with them.

founded 5 years ago
MODERATORS
 

I'm looking for an audio app for learning tunes by ear. Ideally would have:

1- slow playback, without adjusting pitch.
2- loop selection - to play a segment of the audio over and over
3- pitch adjustment (some old recordings are out of tune)

Anyone have one they like? For android the closest I've found is Fossify music player, which offers feature 1.

For PC, audacity has all these features, but its pretty clunky to use.

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 2 points 7 months ago (3 children)

Wow huge wall of text. How do you select a section of a song and loop just that section?

[–] [email protected] 3 points 7 months ago* (last edited 7 months ago) (2 children)

press l when you are at the part you want to loop and l again where you want it to end.

[–] [email protected] 3 points 7 months ago (1 children)

thx. and looks like you can set up an af-command for bumping the playback speed up and down with a keyboard shortcut. presumably that's possible with pitch as well.

seems like libmpv would be a great back end for a specialized music practice tool.

[–] [email protected] 3 points 7 months ago* (last edited 7 months ago)

By default you can use left and right bracket keys [] to adjust speed, and it should do adjustments to make the pitch sound the same.

To adjust the pitch alone, you can have something like this in your input.conf, customized as you like:

ALT+p af toggle @rb
ALT+UP af-command rb multiply-pitch 1.25
ALT+DOWN af-command rb multiply-pitch 0.8
ALT+LEFT af-command rb set-pitch 1.0

I haven't looked at this in a long time. If you always need this there's likely a conf option to always enable the "rubber band" (@rb) filter. And maybe other commands than multiply that would be better.


EDIT: Sorry, I don't have this quite right. Maybe someone can correct me.