← Back to context

Comment by jquaint

2 days ago

Great song.

For anyone curious how to produce something that sounds like this, paulstretch is the way to do it. https://sonosaurus.com/paulxstretch/

My personal favorite use of this: https://youtu.be/XiKWfcy-Z70?si=iJTP0XTEAAObI_rU

And if you happen to already have a copy of Audacity, it has an implementation of paulstretch built-in. (Certainly not as nice looking as that dedicated tool, though.)

This is just excellent, it works a lot better than I thought it would. You can really drown in the song, whoa.

    aaaallllll
    myyyyyy
    paaaasssstt
    aaaaaaandd
    fuuuttuurrreeesss

I'll add that there's a lot of extremely timestretched tracks from Aphex Twin's Selected Ambient Works II on youtube as well. They all sound glorious, too

Great share, thank you! Scratches the itch of "I'd love to turn some of my beats into ambient soundscapes but don't want to spend the time".

The paulxstretch completely obliterates phase component of audio input. Its not really way to do it if you want real output.

  • Define "real" in this instance? We're talking about audio manipulation, fiddling with time and frequency domain. Something's going to have to give

    • There are better, pro solutions, but if you want random phase what that algorithm actually does I'm not going to judge you.

  • Phase is relative, you are trying to sound intelligent

    • Of a single sinusoidal component, sure, this is true. But phase differences between sonic features are absolutely detectable.

      The effect is most noticeable on raw synthesized tones: sawtooth, square wave, etc. These tones contain sonic energy concentrated at discontinuities in the waveforms. The ear can hear this, as a "buzzing sound".

      Run these tones through Paulstretch (even with 0 stretch), and the sonic energy is distributed throughout the wavecycle. These tones retain their spectral character, but noticeably lose the buzzing character.

      I've uploaded a demo here: https://chris.pacejo.net/temp/phase.wav It is a 55 Hz sawtooth tone, alternating every 2.5 s between the raw tone, and the tone fed through Paulstretch with no stretching.

      There was even a paper written on this. Laitinen, Disch & Pulkki, "Sensitivity of Human Hearing to Changes in Phase Spectrum". [1]

      Paulstretch muddies up percussive transients (like hi hat strikes) as well.

      Anyway it's the reason things like gammatone filters exist for analyzing audio. They reveal phase correlations in the same way the ear is able to. Windowed Fourier transforms (used by e.g. Paulstretch and Audacity for various purposes) obfuscate these relationships.

      Aside: please try to avoid snarky armchair dismissals on HN: https://news.ycombinator.com/newsguidelines.html "you are trying to sound intelligent" does not advance discourse.

      [1] https://www.researchgate.net/profile/Ville-Pulkki/publicatio...

  • As long as you match the phase of the positive and negative frequency components you'll get real output

  • Doesn't phase only matter if you want to mix it with some other sound? If you're editing the final version you're going to be playing, what's the point in preserving phase?

    • The human ear is sensitive to phase correlation. It stems from the physiological fact that our ear is effectively a multiresolution filter. So with an overtone-rich tone, the time constant with which we perceive the uppermost harmonics is significantly less than the period of the base harmonic. So if the sonic energy of those harmonics is correlated into small "packets", we hear that as a "buzzing". This is true of raw synthesis waveforms: sawtooth, square, etc. It's also true of any short transients: clapping, hi-hats, etc.

      If you "mess with" the phase information of the harmonics relative to the base harmonic, this is the same thing as changing where the sonic energy of those harmonics falls in the wavecycle. So notably, in the cases listed above where the sonic energy falls into small "packets", if you randomize that phase information relative to a much lower tone (as Paulstretch does), you now have spread that energy throughout the full wavecycle. This eliminates any sensation of "buzzing" or "clicking" and makes transients "mushy".

      2 replies →

    • You can not just preserve original phase when doing time stretching, there are "smarter" algorithms that try to derive "correct" phase, while the paulxstretch just make it random values, maybe for extreme stretching values it doesn't matter for ambient music but for general music and sounds its not that trivial.

      1 reply →