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.
mpv can do all of these things, check the manual on how to do this: https://mpv.io/manual/stable/
mpv also exists for android, however the controls are a bit different (because touch controls) and im not sure if you can do all of these things without a keyboard.
Wow huge wall of text. How do you select a section of a song and loop just that section?
press l when you are at the part you want to loop and l again where you want it to end.
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.
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.
Audacity is fine.
Mixxx can do all of those things, it’s a free alternative to Serato DJ and similar. It’s super straightforward to playback audio slowed to the exact BPM you need, loop it, and/or play it in a different key. Give it a try!
Let me know if you need any help.
It reset my monitors and I thought my system was rebooting! Then things came back up, with windows on different monitors than before, lol. Its stuck on a splash screen that says “MIXXX”. I’m running nixos, xmonad, pipewire. Output at the terminal:
[nix-shell:~]$ mixxx ConfigObject: Could not read "/home/pr06lefs/.mixxx/mixxx.cfg" Loading resources from "/nix/store/q9y3q43nq50wwx7zvq9wz3bj1hlji7w6-mixxx-2.4.0/share/mixxx/" ConfigObject: Could not read "/home/pr06lefs/.mixxx/mixxx.cfg" ConfigObject: Could not read "/home/pr06lefs/.mixxx/mixxx.cfg" No version number in configuration file. Setting to "2.4.0" BroadcastSettings - Profiles folder doesn't exist. Creating it. BroadcastSettings - No profiles found. Creating default profile. warning [Main] faad2::LibLoader - Failed to load ("libfaad.so.2", "libfaad.so") , "Cannot load library libfaad.so: (libfaad.so: cannot open shared object file: No such file or directory)" warning [Main] SoundSourceProviderRegistry - SoundSource provider "Nero FAAD2" does not support any file extensions warning [Main] SoundSourceProxy - Failed to register SoundSource provider "Nero FAAD2" ALSA lib pcm_dmix.c:1000:(snd_pcm_dmix_open) unable to open slave ALSA lib pcm.c:2792:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear ALSA lib pcm.c:2792:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe ALSA lib pcm.c:2792:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side ALSA lib pcm_route.c:878:(find_matching_chmap) Found no matching channel map ALSA lib pcm_dmix.c:1000:(snd_pcm_dmix_open) unable to open slave
Hmm, it looks like the first few messages there are doing initial setup. After that, it looks like it’s having trouble loading some of its libraries. Then it isn’t able to read your sound devices. I haven’t run Mixxx with nixos or pipewire, but maybe try the flatpak? Sorry it isn’t running out of the box for you.
yeah could be a packaging bug.
You can use Play it slowly, which is rather bare-bones, or Sonic Visualizer, which is something of the opposite, but quite powerful.
My daily workhorse is Transcribe!, which I’ve been using for nearly 30 years, actually. Very powerful, and very intuitive, and with a lot of useful effects, such as filtering out the vocals (if possible), etc. I paid a one-time fee for a subscription back in the day. Money well spent.
I use that timestretch web one already! But an actual app would be nice.
Sonic visualizer is pretty maximalist. Feels maybe not exactly designed for music practice but can do it and a lot else too.
VLC ?
Looks like you can adjust playback speed. But I don’t see where you can adjust pitch, nor do I see where you can select a section of a song for looping.
Section looping:
- right click on the bottom bar (where play and pause is)
- view
- checkbox Advanced Controls
- Now you see more buttons in the bottom bar one of which has the tooltip “Loop from point A to point B”
- Click it at start and again at end of the section
Pitch:
- in the top bar click “Tools”
- Effects and Filters
- Audio Effects
- Advanced
- Adjust pitch
Ohh. This is exactly the side project idea I’ve had on the back of my mind for a few years now. Something minimal and straightforward, just to sharpen my programming skills and learn a couple of things along the way. Maybe I’ll get around to building it some day.
For PC, audacity has all these features, but its pretty clunky to use.
You could eliminate that clunkiness by building an AutoHotkey script to blaze through the menu to select and slow down the recording in one press.
Autohotkeys is cool but its a windows prog, so won’t work for me on linux.
When you speed up/slow down the recording, it has to process the whole file. That takes a while. You can’t just slide a slider to different pitches to see what’s right. Then you have to save the file someplace, think of a file name, put it somewhere reasonable etc. Or remember the pitch and do everything over again next time.
Audacity’s implementation is not just clunky, it isn’t good either. Compare that to Music Speed Changer on Android and you’ll hear a huge difference in quality.