I actually also have some more-extreme pitch shifts preference for several songs; which when done with simplistic speed-up/down method, would resulted in a too-hurried (or too-lazy) pace that mismatched with the mood of that song.
However, someone recently introduced me to a nifty
free(dom) command line program called
Rubber Band, which
pitch-shifts music without changing its tempo (and/or time-stretches/shrink it), and does so
in a quite-decent quality without too much fiddling with the knobs.
(1)While I had to tweak its version 2.0.2 C++ source code + build script a bit to make it build and install under my vintage GNU/Linux system, and it's not capable of live/real-time pitch-shifting
(2) as well as not preventing vocalists from going chipmunk or orc; these are limitations I can live with.
(The program actually has been existing like... 20 years now, and also comes with LADSPA and LV2 plugin; so if you use libre DAW like Audacity or Ardour, you can join in the fun as well)
Here are some example songs, with each with a short audio sample that's applied with my favorite key shift with Rubber Band, as well as a link to its original for comparison:
And there is one counterexample, which custom-tuned pitch-shifting with older pure time-domain speed compensation using SoX
(2) worked better:
(1) Rubber Band 2.0.2 struggled when I pitch-shifted the second-last example; which I had to resort to trial-and-error for more-extreme settings combinations, and the result is still audibly smudged. You might have better luck if you got a newer Rubber Band version (I think current one is 4.0).
(2) Not long before this, I have been using Pitch filter in another free(dom)
command line audio editor SoX, that uses simpler time-based audio fragment repetition/overlap-search method (WSOLA algorithm). It worked somewhat okay for +/-2 semitones shift (less okay when shifted higher than that), but often required me to tune and jot down the parameters in song-by-song fashion.
(3) But some songs --especially percussion-heavy ones-- still come out with speed-shift artifacts no matter how hard I tuned it.
However, WSOLA is a single-pass process, which means SoX
does support live pitch shifting; I can easily apply my Unix Superpower (TM) to chain FFmpeg and SoX's `play` program together (applying the Pitch filter in the latter), and listen to pitch-shifted version of the song without ever having to save the WAVE file to disk first. So even with the Rubber Band program installed; for songs that pitch-shift well with SoX, I would still listen to them via SoX.
Disks are expensive nowadays, you know.
(3) I personally start with tuning of 30 ms/slice and 10 ms search range; and the sample of counterexample "
Earth Day" is shifted using this exact tuning.