Search code examples
puredata

iemmatrix [mtx_*] couldn't create in PureData


I am working on an old internal project. I am working on windows. The puredata I am using is on 32bit. There are some objects like [mtx_*~] [mtx_:] [mtx_.^] [mtx_circular_harmonics] have "couldn't create" error.

I have iemmatrix installed through "find external". I tried older versions of Puredata extended or several versions of vanilla. I can't create mtx_, either. From pd/externals/iemmatrix, I can find a file called "mtx_0x2a0x7e.dll", which I think is "mtx_~" after decoding.

There is not much information on the internet about it anymore.


Solution

  • The "official" version (not the one with the 'extended' suffix) is compiled as a multi-object library. So you have to load the library first, either with a command line flag '-lib iemmatrix' or with a [declare -lib iemmatrix] object in your patch (The latter is much preferred as it makes your patch more portable). When loaded, iemmatrix prints a greeter to the Pd console window:

    iemmatrix 0.3.2
        objects for manipulating 2d-matrices
        (c) 2001-2015 iem
            IOhannes m zmölnig
            Thomas Musil
            Franz Zotter
        compiled Sep  6 2019 : 12:07:54
    

    After that you can create objects like [mtx_*~]

    The version 'v0.0-extended' was added to facilitate the migration away from now retired Pd-extended. Since it is compiled as a one-object-per-file library and many of the those objects have names that cannot easily be used in filenames, Pd-extended used a trick with an additional hexloader library that translates hex encoded filenames to the actual name of the objects. For being able to load objects from the extended version, you would have to install and load 'hexloader' first.

    Having said that, it is highly recommended to use the official version which is actively maintained while the extended version is not and is there for historical reasons.