Coder Social home page Coder Social logo

Comments (7)

PiOverFour avatar PiOverFour commented on July 17, 2024

Hi,
This issue is new for me as well. I assume itโ€™s coming either from a Python update, or more likely to the OS I use (Ubuntu Linux).

For me the issue (and I assume it is the same for you) is that the OS I use already has Python packages available through its package manager. To avoid conflicts between OS-installed packages and pip-installed ones, the default behaviour from Python is to forbid installations using pip. But you may still be able to install the packages from your package manager. If you use Ubuntu, try this:

sudo apt install python3-rtmidi python3-pyqt5

If you use another OS or distribution, these packages may still be available under a different name from your package manager.

If you cannot find them, you could still try one of the solutions outlined in this answer. There might be possible risks of breakage, but this worked for me:

pip install -r requirements.txt --break-system-packages

The sysex messages for the controller set the entirety of a program at once, you canโ€™t really just edit one parameter as far as I know. Youโ€™d need to read the current programme, edit the value you want, then send it back โ€” which is basically what this editor does!

from mpk-m2-editor.

bazilmuzik avatar bazilmuzik commented on July 17, 2024

Oh, interesting ! So the way a sysex message is written is in "one shot" with all parameters...
I made many tests yesterday with the "amidi" commend line, and I receive little sysex messages when I press keys, turn knobs... But nothing appears when I put the arpeggiator on, or push "prog change" (in short, anything that isn't cc or note). That's why I'm a bit confused... Also I'm unable to read an entire program.
Maybe "amidi" isn't the tool I need, but there's few informations about sysex messages on the internet, and even less so with this specific device. How were you able to see these infos ? Can you recommend some tools ?
I will also try the solution for the python problem, at least see if I can make your editor work !

from mpk-m2-editor.

PiOverFour avatar PiOverFour commented on July 17, 2024

But nothing appears when I put the arpeggiator on, or push "prog change" (in short, anything that isn't cc or note).

IIRC the sysex Iโ€™m referring to only appear when you exchange programs with the editor, by pressing Get/Send Current/All/RAM. The arpeggiator or prog switch only change the operation of the controller, but donโ€™t require sending any data to the computer.

How were you able to see these infos ? Can you recommend some tools ?

I used WireShark at the time I wrote this program, but honestly I pretty much forgot how it works since then. ๐Ÿ˜…
However I have documented what a config looks like in the code: each line gives you the expected value or range of values, and what it does.

I will also try the solution for the python problem, at least see if I can make your editor work !

I hope it works for you!

from mpk-m2-editor.

bazilmuzik avatar bazilmuzik commented on July 17, 2024

Hurray !

So first I tried to send the message that is in init, and nothing worked. I was almost giving up, but out of curiosity I tried to send the GET_CONFIG message, and finally something appeared in my PureData console. After analyzing the values I was seeing, I realized they were the "same" as what I observed in your init method (well, not exactly the same, but same number of bytes, same type of values, etc.). At this point it was pretty obvious I wasn't far from my goal.

After spending some more time not being able to set a program via a sysex message, I saw that the 5th byte ("sysex_4" in your init method, which is set to 103) could be set to 100 (which is a "send" command). So I tried to replace "103" by "100" and changed some parameters and... it worked (well, last step was to use the "Prog Select" button to reload Program 1) !!! I saw the octave down button getting red 4 times without pressing on it :) And now I'm able to synchronize my MPK 2 mini with Pure Data !!!

From all the research I've done before contacting you, I saw there wasn't a lot of documentation (if any) about sending sysex messages with Pure Data. I think I might do a youtube tutorial or a blog post about it. Would you agree to be cited ? It won't be for tomorrow so no urge to respond, but it is clear that I wouldn't have been able to do it without your well commented code :)

from mpk-m2-editor.

PiOverFour avatar PiOverFour commented on July 17, 2024

Hurray !

Awesome ๐Ÿ˜Ž

(well, last step was to use the "Prog Select" button to reload Program 1)

This should not be needed if you use Send RAM, which can modify the current state of the controller without editing any program, and without you needing to reload it. This would be done with (102, 0) as sysexes 4 and 5.

Would you agree to be cited ?

Of course, Iโ€™m glad it could be of help :) Let me know when you publish it.

from mpk-m2-editor.

bazilmuzik avatar bazilmuzik commented on July 17, 2024

This would be done with (102, 0) as sysexes 4 and 5

Wait, seriously ? I'll test that later ! This is incredible because Pure Data has now a "child" (PlugData) which is more or less the same thing but can be opened as a vst... This means we should be able to automate state of controllers through a DAW... crazy stuff !!!

Great, I'll let you know when I'm doing this tutorial :)

from mpk-m2-editor.

bazilmuzik avatar bazilmuzik commented on July 17, 2024

Well this time I wasn't lucky...

I tried to replace (100 0) by (102 0) in my message but it didn't change current state. I simply received the full program values in my console. It's like as soon as there's (102), the sysex is interpreted as a query, not a "send" command. Is it possible that other bytes need to be changed ?

Also I tried to mess around with the message, deleting some stuff, going back to (100) instead of (102)... I "succeeded" to make the octave up button blinking as if it was the tap tempo button... I guess I ended up somewhere random in the RAM, but I stopped there because I didn't want to mess everything up haha

from mpk-m2-editor.

Related Issues (12)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.