Thanks to Christopher Arndt, I appear to have made a functioning fork:
https://github.com/ponderworthy/mididings
I'm not positive I have the namespace altogether consistent -- some of
the instances of 'Callable' are within a renamed collection, so I had to
rename the rename, in two files under 'units'; but it does seem to
work. Wiser Python heads may want to correct the error of my ways if I
miswrote!
Also, interestingly enough, there are apparently 37 forks of mididings
right now :-) I forked mine off the latest to date. Happy to see that
community.
J.E.B.
On 1/31/22 6:39 AM, Jonathan E. Brickman wrote:
Mididings may be the only JACK-api MIDI router/filter tool around; if
there is another I'd love to know about it. On the other hand t was
working just dandy until, I think, some changes to both Python3 and
legacy support for Python2. I was using its Python3 AUR adaptation
(mididings-git) under Manjaro, but then after package upgrades, it
began to fail at 'from mididings import *' (see below). I found
similar failures in Ubuntu 20, and found different failures in both
when I tried setting up to use Python2 (which obviously we would
rather not be doing). The failure is similar to a number of failures
reported starting with Python 3.10, so this may be related, but I was
not able to figure out how to apply those workarounds to the mididings
source, I tried several different variations, including a number of
the different forks in github.
Thoughts, anyone? I found Pigiron and Jamrouter and puredata, but
none of these appear to do JACK. I'm using pipewire now, so I could
theoretically revise the whole rig around ALSA MIDI, but all of the
apps needing MIDI use JACK, and mididings is so elegant...
J.E.B.
|[jeb@newbnr ~]$ python Python 3.10.1 (main, Dec 18 2021, 23:53:45)
[GCC 11.1.0] on linux Type "help", "copyright", "credits"
or "license"
for more information. >>> from mididings import * Traceback (most
recent call last): File "<stdin>", line 1, in <module> File
"/usr/lib/python3.10/site-packages/mididings-2.0.0+r26a40db-py3.10-
linux-x86_64.egg/mididings/__init__.py", line 15, in <module> from
mididings.engine import run, process_file File
"/usr/lib/python3.10/site-packages/mididings-2.0.0+r26a40db-py3.10-linux-x86_64.egg/mididings/engine.py",
line 15, in <module> import mididings.patch as _patch File
"/usr/lib/python3.10/site-packages/mididings-2.0.0+r26a40db-py3.10-
linux-x86_64.egg/mididings/patch.py", line 15, in <module> import
mididings.units as _units File
"/usr/lib/python3.10/site-packages/mididings-2.0.0+r26a40db-py3.10-linux-x86_64.egg/mididings/units/__init__.py",
line 14, in <module> from mididings.units.engine import * File
"/usr/lib/python3.10/site-packages/mididings-2.0.0+r26a40db-py3.10-linux-x86_64.egg/mididings/units/engine.py",
line 55, in <module> def SceneSwitch(number=_constants.EVENT_PROGRAM):
File
"/usr/lib/python3.10/site-packages/mididings-2.0.0+r26a40db-py3.10-linux-x86_64.egg/mididings/unitrepr.py",
line 46, in composed return arguments.accept(*constraints, **kwargs)
(store(f)) File
"/usr/lib/python3.10/site-packages/mididings-2.0.0+r26a40db-py3.10-linux-x86_64.egg/mididings/arguments.py",
line 49, in __init__ self.constraints = [_make_constraint(c) for c in
constraints] File
"/usr/lib/python3.10/site-packages/mididings-2.0.0+r26a40db-py3.10-linux-x86_64.egg/mididings/arguments.py",
line 49, in <listcomp> self.constraints = [_make_constraint(c) for c
in constraints] File
"/usr/lib/python3.10/site-packages/mididings-2.0.0+r26a40db-py3.10-linux-x86_64.egg/mididings/arguments.py",
line 160, in _make_constraint elif isinstance(c,
collections.Callable): AttributeError: module 'collections' has no
attribute 'Callable' >>>|