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

Open Source

28934 readers
374 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 4 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.

top 21 comments
sorted by: hot top controversial new old
[–] [email protected] 8 points 2 months ago (1 children)

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.

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

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

[–] [email protected] 3 points 2 months ago* (last edited 2 months ago) (1 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 2 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 2 months ago* (last edited 2 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.

[–] [email protected] 3 points 2 months ago

Audacity is fine.

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

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.

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

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
[–] [email protected] 2 points 2 months ago (2 children)

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.

[–] [email protected] 2 points 1 month ago (1 children)

Got it working. The problem was really dumb: I use xmonad. When I run mixx, it opens a modal dialog where you have to select a file, or cancel. I didn't notice the dialog, maybe too many windows or it ended up behind the main window. Dialog never returns, program never gets off the splash screen. 😅 Still get the warnings and errors, but apparently that's normal.

Anyway, working now, definitely a lot of bells and whistles in this. Inspiring if I ever want to take up DJing.

[–] [email protected] 1 points 1 month ago

Glad to hear it! Mixxx has been one of my favorite projects to use, and they always surprise me with new features whenever I open it up!

[–] [email protected] 1 points 2 months ago

yeah could be a packaging bug.

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

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.

[–] [email protected] 1 points 2 months ago* (last edited 2 months ago)

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.

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

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.

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

Section looping:

  1. right click on the bottom bar (where play and pause is)
  2. view
  3. checkbox Advanced Controls
  4. Now you see more buttons in the bottom bar one of which has the tooltip "Loop from point A to point B"
  5. Click it at start and again at end of the section

Pitch:

  1. in the top bar click "Tools"
  2. Effects and Filters
  3. Audio Effects
  4. Advanced
  5. Adjust pitch
[–] [email protected] 1 points 2 months ago (2 children)

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.

[–] [email protected] 1 points 2 months ago

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.

[–] [email protected] 1 points 2 months ago

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.

[–] [email protected] 1 points 2 months ago

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.