It’s a weakness. Software archeology. The topic of PaulStretch came up during the week, and of course i wanted to play with it again.
Back in 2013 there were downloadable binaries, but it seems they probably stopped working a few macOS releases ago. And besides, where is the fun in that!
The good news is that despite not being touched for years the code does actually compile. There is no bad news, it’s working perfectly, and i’m listening to the Alien Sex Fiend track ‘I Walk The Line’ stretched out to 35mins.
After cloning the code from GitHub, it’s just a matter of installing the right libraries. I’m using MacPorts and the other dependency that was missing was mini-xml. That is also on GitHub, but the latest release isn’t compatible, fortunately the v2.12 release is fine.
Work from the script here:
https://github.com/paulnasca/paulstretch_cpp/blob/master/compile_linux_fftw.sh
- install FLTK (available in MacPorts)
- run the two fluid commands
- run the g++ command (changing $outfile to paulstretch
- install the missing libraries until you get a binary
The missing libraries were:
- audiofile
- libmad
- portaudio
- fftw-3-single (this is suggested as optional, but it wasn’t hard to include)
- mini-xml
To install mini-xml it was the usual:
./configure –prefix=/opt/local ; make ; sudo make install
Everything else was just:
sudo port install
Aint it pretty!
$ fluid -c GUI.fl
$ fluid -c FreeEditUI.fl$ g++ -ggdb GUI.cxx FreeEditUI.cxx *.cpp Input/*.cpp Output/*.cpp `fltk-config –cflags“fltk-config –ldflags`-laudiofile -lfftw3f -lz -logg -lvorbis -lvorbisenc -lvorbisfile -lportaudio -lpthread -lmad -lmxml -o paulstretch
FTW, i tried to statically link it but it start to complain about missing libraries. Perhaps i’ll be motivated to learn how to package a .dmg file if there is interest. Surely it can’t be that difficult… right?
Update: it doesn’t look that difficult to create a ‘PaulStretch.app’, there is some Info.plist to create, copy all the libraries into the directory structure:
$ otool -L paulstretch
paulstretch:
/opt/local/lib/libfltk.1.3.dylib
/usr/lib/libSystem.B.dylib
/System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa
/opt/local/lib/libaudiofile.1.dylib
/opt/local/lib/libfftw3f.3.dylib
/opt/local/lib/libz.1.dylib
/opt/local/lib/libogg.0.dylib
/opt/local/lib/libvorbis.0.dylib
/opt/local/lib/libvorbisenc.2.dylib
/opt/local/lib/libvorbisfile.3.dylib
/opt/local/lib/libportaudio.2.dylib
/opt/local/lib/libmad.0.dylib
/opt/local/lib/libmxml.dylib
/usr/lib/libc++.1.dylib
and then update the paths with ‘install_name_tool -change’ to update the paths to reference the copy in the App directory structure.
Check back tomorrow!
Update: after a few more shenanigans fixing library references in libraries that reference libraries (it’s turtles all the way down, etc) there is now a “nicely” packaged ‘PaulStretch.app’ that can be distributed in a DMG image. It has even been tested off my machine!
$ tree PaulStretch.app PaulStretch.app └── Contents ├── Info.plist ├── MacOS │ ├── libFLAC.8.dylib │ ├── libaudiofile.1.dylib │ ├── libfftw3f.3.dylib │ ├── libfltk.1.3.dylib │ ├── libmad.0.dylib │ ├── libmxml.dylib │ ├── libogg.0.dylib │ ├── libportaudio.2.dylib │ ├── libvorbis.0.dylib │ ├── libvorbisenc.2.dylib │ ├── libvorbisfile.3.dylib │ ├── libz.1.dylib │ └── paulstretch └── Resources └── PaulStretch.icns
Good sir. I have no idea what any of this means – I can barely read, let alone code. I am a mere music maker and finding this part of the internet fills me with pure excitement – I lost paulstretch with an update to mojave, and now you say the potential to use the beloved and extremely missed Paulstretch again is possible!! On Mojave?. Can it be true? Is there a link to a downloadable app/dmg available? Is this magic? Please help!
have moved on to catalina, but still have the Mojave app file. let me see if i can find somewhere to upload it for you… check back.
Thank you so much. That’s very cool of you. I can’t update to Catalina yet, so the Mojave version would be absolutely lovely. Cheers mate.
Try this and let me know how you get on:
https://github.com/wheredideveryonego/PaulStretch-Mojave/blob/master/PaulStretch.zip
It’s the App zipped up.
Works a charm. I can’t thank you enough, seriously. The world can slow down again. Thank you. Thank you. Thank you.
very cool. happy it worked for you!
Lifesaver! Thanks again for making this work.
Pingback: PaulStretch on Apple Silicon in 2022 | It'll All End In Tears