Conversation
edumeneses
left a comment
There was a problem hiding this comment.
It seems to me that you are counting on Eigen3 being installed systemwide to compile score.
In a machine without it, I have:
CMake Error at src/addons/score-addon-puara/CMakeLists.txt:13 (find_package):
By not providing "FindEigen3.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "Eigen3", but
CMake did not find one.
Could not find a package configuration file provided by "Eigen3" with any
of the following names:
Eigen3Config.cmake
eigen3-config.cmake
Which is expected. I assume you will have to add it as a 3rd party submodule, but I'll wait for @jcelerier's final word on how to organize the repo's dependencies
|
actually eigen is already part of the score dependencies! It's the most common linear algebra library in C++, that's useful in multiple places. It's in |
|
one thing I wonder is - how this object is going to be used? e.g. what will be the workflow for the artist in terms of "getting data in and out" of it. Do we want to use it for instance for automated calibration on, say, a RPi with a magnetometer directly plugged-in to the SPI or I2C bus? |
|
ok, pushed a fix @edumeneses |
To me, the great advantage is using Score to generate the Matrix that will live on the NIME/DMI. The way I see it, the instruments we create with Puara will store this Matrix (we can feed it via puara-module's web interface). It will replace MotionCal, which is outdated (although it might work if you manage to make it run on your system). When this is working, the next logic step to me is to create a shader to visualize that data and check if the calibration works before copy/paste the matrix to the device. Iddeally, we would have another process in score to apply the matrix in RT, using the applyMagnetometerCalibration function. |
Hi @jcelerier , My current implementation is focused on the interactive workflow for an artist using a phone:
The idea of an automated calibration for a dedicated device like a Raspberry Pi is very interesting. Would that involve a different mode for the processor, perhaps one that runs the recording and generation sequence automatically on startup without user interaction? I'd be interested to hear more about how you envision that working . |
|
I see ! |
I think both options are useful (standalone and process on score). I see a use case for having a process on score: receiving raw data from an off-the-shelf device that we want to calibrate and user in score and we cannot embed the calibration matrix |
|
Hello @pyandcpp-coder and @jcelerier, Although the process looks like it's working fine, I cannot access the generated data. From the 3 screenshots: I can record the data, generate the matrix, and apply it to the signal (screenshot 3). However, the outlets that output the calibration matrix are always 0 (screenshots 2 and 3). Additionally, it seems that score doesn't update the OSC device based on the outlet when I have a |
|
Hey @edumeneses , So I do understand the issue, though while testing I did not seem to find such no output, though there was an instance where I did face such an issue, and like the only major intuition was that there were not enough points, in the recorded data, |
|
How many points did you feed before generating the matrix? |
|
@edumeneses , |
|
I used approximately 3,000 points to generate the matrix, but I think (based on the comparison between raw data and calibrated data) that the matrix is being generated and applied correctly, regardless. The problem seems to be with the outlets. Did you manage to extract data from your outlets in score? |
|
Yes I was able to see the change in the output on the score but not on all outlets, the very second output was seen. Tough for next outlets I thought I need more points. |
|
heya, To fix this score should introduce a "global" buffer type a bit like Max buffer~ or puredata arrays which isn't going to be copied from one object to another but instead be modified in place. |
|
I would like to have at least a process to apply the calibration matrix to raw data. We don't necessarily need to generate the matrix on the same process or in score, although I like the idea of using score to create the calibration matrix: a power user could have devices connected to the network, e.g., T-Sticks, and reliably use orientation from them, even if they cannot do sensor fusion internally. I propose:
I also suggest that these processes should be categorized under the Utility category (not under gestures). Would that work for you @jcelerier? If you still don't think these processes should be included in score we can just make a standalone tool for calibration. |
|
@jcelerier @edumeneses , What should I be implementing and changing now for this processor? Or do we plan for something else |
397d5c4 to
fa25dea
Compare
|
if you can, rebase it and remove the now-unnecessary eigen include in cmake |



This PR introduces the magnetometer calibration feature, which improves the accuracy of orientation detection in the PUARA system.