• myQwil

    The FFmpeg libraries are dynamically linked to the builds provided, which means that you'll need a local installation of these libraries in order for the external to work.
    A package manager is probably the ideal way to install them. Otherwise, they are available at ffmpeg.org/download.html, just be sure to get the "Shared" builds, and place them in a location where the external is able to find them.

    Includes the following features:

    • play/pause and seek functionality
    • changing the speed of playback
    • reading and iterating through m3u playlists
    • opening files from http urls.
    • retrieving metadata
    • specifying additional channels as creation args for files with surround sound.

    EDIT: changes in playback speed should now have smoother transitions
    EDIT2: forgot to add ufloat.h to the .zip


    posted in extra~ read more
  • myQwil

    @shreeswifty For potpourri, try this out: lyonpotpourri.zip

    posted in extra~ read more
  • myQwil

    Just thought I'd point out that the difference between mod and % is how they handle negative values.

    posted in technical issues read more
  • myQwil

    This library overrides Pd's f, i, and binop objects to give them a couple of extra features:

    • A creation arg that ends with an exclamation point tells the object to loadbang the result. The loadbang occurs either upon instantiation or when a patch initially opens, depending on which version of Pd you're running.
      Some examples:
      • [ f 5! ] outputs 5 as a loadbang
      • [ - 8! ] sets the 2nd inlet to 8 and outputs -8 as a loadbang, since the calculation would be 0 minus 8.
      • [ + 1 2 ] sets the 1st and 2nd inlets respectively
        • sending a bang to the 1st inlet would output 3
      • [ / 1 4! ] outputs 0.25 as a loadbang
    • Binop objects also have the following additional methods:
      • [ f2 $1 ( - sets the 2nd inlet.
      • [ . $1 ( - sets the 2nd inlet and outputs the result of the calculation.

    Note: Older versions of Pd don't support the overriding of built-in objects, so for the sake of backward compatibility, the objects have an additional creator method with the general rule being to put a grave accent ( ` ) in front of the object's name (ex: [`f ], [`+ ], [`- ], etc. )


    posted in extra~ read more
  • myQwil

    Did you get this working? I have a very quick and dirty solution for you. pd-lib-builder takes care of just about everything when you run make but you'll still need to link Helmholtz and helmholtz~ together manually. It'll probably look something like this:

    g++ -static-libgcc -static-libstdc++ -shared -Wl,--enable-auto-import "C:\Program Files/Pd/bin/pd.dll"    -o helmholtz~.dll helmholtz~.o Helmholtz.o

    That's pretty much all pd-lib-builder, with the one manual part being the Helmholtz.o at the end of the statement.

    Anyways, here's a zip of that project folder, where you'll also find a 64-bit build. I haven't really played around with it much but it seems to be working just fine.


    Just as an addendum, you can probably get pd-lib-builder to link the files on its own by removing helmholtz~.cpp from class.sources and adding:

    make-lib-executable = yes
    lib.setup.sources = helmholtz~.cpp

    posted in extra~ read more
  • myQwil

    They act similar to delay and line objects, but when they're in the middle of a delay or a ramp, the message "pause" will act as a toggle between pausing and resuming.

    The delay object, delp, has two additional outlets. The remaining time passes through the 2nd outlet whenever a pause occurs, and the toggle's current state passes through the 3rd outlet.

    These objects all use timers to calculate their remaining time and ramp state, which means that linp will be precise regardless of what its time grain is set to. On the other hand, it also means that linp~ will sound inaccurate if there's any discrepancy between your audio server's sample rate and pd's sample rate because discrepancies of that kind, in general, result in the audio's timing being either too fast or too slow in relation to Pd's system timing.

    Included is an example where these objects help with playback control, with linp displaying the remaining time, linp~ handling the fade-out effect, and delp triggering the fade-out and end of playback.


    posted in abstract~ read more
  • myQwil

    @alfonso.santimone Sorry it took so long. I finally got around to making win64 builds of my externals. They're all up on my Github page but here's gme(s)~ for the sake of convenience:


    posted in extra~ read more
  • myQwil

    @deframmentazione-geometrica It looks like your select box is trying to prevent repeat values from getting through, so when random outputs the same value as it did previously, select will keep telling random to produce another value until it's different, then it'll assign that to the single number box on the right. The two number boxes at the bottom will retain the duplicate value and continue to reassign the value to each other until it's caught by the stack overflow error.

    Then again, how everything plays out will depend on whether you create the select box before or after creating the looped number boxes at the bottom, because that'll determine what gets triggered first. If you create the select box last, then the number boxes at the bottom will change and it may never even get to the number box on the right.

    posted in technical issues read more
  • myQwil

    MSYS2 is the new standard last time I checked. You can follow along with the purr data build guide to guarantee the right dependencies get installed. You only need to go as far as step 4, and you can also skip the inno setup if you're just building externals.


    I went ahead and built plaits for 32-bit pure data. Hopefully that works for you.


    When building it, I needed to change one thing in the Makefile. See that line where it says:

    cflags = -DTEST -Wno-unused-local-typedefs -I./

    That doesn't work. -I./ needs to be changed to the absolute path that your plaits project happens to be in. For example, mine looked like this:

    cflags = -DTEST -Wno-unused-local-typedefs -I/c/Users/myQwil/Desktop/pd-plaits-master

    posted in extra~ read more
  • myQwil

    @seb-harmonik.ar No, I'm not the creator of the gme library. There's a lot about its behaviour that I don't fully comprehend at this point. One of the first issues I came across was the instant fade. Another was that it would come to a full stop after maybe 2 repetitions or so. I've tried preventing these issues by changing the original code in as minimal a way as possible but there are probably further changes that could make it run more smoothly in pd. Again, the only reason I added that ifndef clause is because it's what worked for me personally. I wanted it to behave the same way across multiple platforms in such a way that it repeated the song forever, leaving the stopping of the track up to the patch itself.

    In gme.zip you should see the folder gme-diff. It contains whatever changes I made to the original code. If you're building your own version of gme, you'll need to incorporate those changes to see where I'm coming from. Either way, it's worth knowing that it behaves differently on your end. What OS are you using, by the way?

    posted in extra~ read more

Internal error.

Oops! Looks like something went wrong!