Giter Site home page Giter Site logo

thetechnobear / mec Goto Github PK

View Code? Open in Web Editor NEW
55.0 14.0 23.0 5.98 MB

Micro Expression Control

License: GNU General Public License v3.0

CMake 0.09% C++ 63.44% C 31.90% Objective-C++ 3.87% Max 0.11% R 0.02% Objective-C 0.09% Java 0.43% Rez 0.05%
bela maxmsp soundplane madronalabs eigenharp eigenlabs mpe mec beaglebone-black

mec's Introduction

MEC - Micro Expression Control

The primary goal of this project is to provide a lightweight (micro) environment for expressive controllers. The software is light enough to be used on tiny microcomputers (like the raspberry PI), and yet integrate into different software environments. One of the inital motivations (that still exists) is to allow controllers like the Eigenharp/Soundplane to operate without the need for a computer.

the deeper motivation is to allow these 'controllers' to become more 'instrument' like, so you can just pickup and play without thinking about software configurations etc.

I also use this projects for the basis of many other open source projects I develop including Orac , a virtual modular for SoCs including rPI and Organelle. see https://github.com/TheTechnobear/Orac

Architecture

The core of the project is the mec-api this provides the main functionality which can be utilised by any software. (written in C++ and provided as shared lirbaries).

Building on this core a number of integation 'applications' are provided.

  • mec-app, a standalone console application. (main priority)
  • mec-vst, a VST/AU which sends 'touches' from mec to VST/AU it hosts.
  • mec-max, an 'external' for MAX/Msp (requires Cycling74 Max/MSP)

Current Platforms

  • macOS High Sierra (10.13)
  • Linux x86 (64 bit)
  • Linux Arm - rPI, BBB, BBB+Bela, Organelle.
  • Windows 10 (64 bit)- early experimental build for some parts

Documentation

See documents in the docs sub-folder. Documents cover building, installation and running. The TODO document covers known issues, and current development plans.

Status

Current status: Under Development Many things work, but some things have known issues (see docs/todo), technical hurdle and proof of concepts are complete. Implementation of basic functionality (excluding known issue) is near completion. Quite a few more advanced features are still under active development.

Collaboration is welcome (via pull requests), however please bare in mind, as this is under development, alot of things are still in a fluid state, meaning changes could break proposals - even the direction is not full stable. Bug fixing is very useful, but please contact me before making changes api/architectural changes, as undocumented plans exist.

Testing/Usage , as its under development you are welcome to use, and if you find issues to report them, please make bugs reports as specific as possible. any general reports I'll just assume will be fixed during my own development testing. please also check todo, for known issues, and to see if a 'feature' is considered to be complete and a priority. Im not taking feature requests at the moment (see todo/goals)

Credits

Id like to thank the following open source projects for helping make this possible:

Id like to extend a special heartfelt thank you to John Lambert/EigenLabs and Randy Jones/Madrona Labs. They both made creative/fantastic instruments that I love to play... but also but also had the foresight to open source their software (used to control them) - thus allowing projects such as these. It would have been easier for them to guard their 'intellectual property', and I'm very gratefully to them they did not choose this route.

Thank You

License

Ive release this code under GPLv3 , so you are free to build, use, change and distribute as per the license. Note: there may be licensing requirements given by dependent software (as listed in credits), please check these if you plan to distribute binary images.

mec's People

Contributors

adanlbenito avatar gtrainavicius avatar lbovet avatar nothanumber avatar thetechnobear avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mec's Issues

Windows build

Trying to compile MEC for Windows. Tried to set SP_LIBUSB_DIR as environment variable.
Now if I execute "echo %SP_LIBUSB_DIR%" I get: "D:/dev/libusb"
E.g. core.c resides under D:/dev/libusb/libusb/core.c etc. as expected by CMakeLists.txt.

Occurrently cmake is not accepting it though, still getting "Did not find libusb". Where would SP_LIBUSB_DIR have to be set when not in the environment variables?

When temporarily hacking CMakeLists.txt directly then cmake succeeds. But the project still doesn't compile e.g. because it doesn't find a whole bunch of "config.h" files (would I have to compile the external libraries separately first?).
soundplanelite/MLDebug.h also seems to want to have Juce.
And min is misinterpreted for a macro (#define NOMINMAX or unsigned l = (std::min)(history_,(unsigned long)PIC_USB_FRAME_HISTORY); would have to be used).
Also a lot of compiler warning because of unknown pragmas in the soundplane code and errors in math.h/cmathh (probably because of incompatible macros).
The soundplane code seems to use the pthread library directly also (which isn't available on Windows).

So a Visual Studio build seems not so easy to get working.
Perhaps cygwin would be a more realistic route to get this to compile on Windows?

pico not recognized due to 69-eigenharp.rules missing from /etc/udev/rules.d in Patchbox OS with ORAC installed

I'm not sure if this should be filed here, under Orac, or somewhere in the Patchbox/Pisound world. Thanks for making and generously sharing cool things. Sorry to bug you about stuff like this.

Describe the bug
Eigenharp pico not recognized by raspberry pi running latest patchbox os.
cp 69-eigenharp.rules to /etc/udev/rules.d in Patchbox OS with ORAC installed

To Reproduce
Install patchbox os on a raspberry pi
install the Orac module using the Patchbox Configuration Utility
ssh to the pi
ls /etc/udev/rules.d

Expected behavior
The pico being recognized by Orac on the pi as easily as it is on the organelle.

Screenshots
n/a

Desktop (please complete the following information):
Linux patchbox 4.19.71-rt24-v7+ #1 SMP PREEMPT RT Wed Mar 11 16:54:08 EET 2020 armv7l
running on Raspberry Pi 3.

Additional context
the following steps resolve the issue:
277 sudo cp 69-eigenharp.rules /etc/udev/rules.d
278 sudo udevadm control --reload-rules

Trigger notes via MEC?

Hello Technobear,

First of all thanks for your work on ORAC and MEC!

I have an organelle m with Orac and MEC installed, I have an android with Lemur connected to MEC.

Is it any way to trigger notes (midi) from Lemur via OSC? I don't have a midi sequencer so I thought it would be cool to build it with Lemur.

MEC Dev branch doesn't build on macOS Catalina

The current dev branch seems to have problems with macOS Catalina, looks like some new security stuff on first sight. The master branch builds fine though and works on first sight (tested with Alpha).

To Reproduce
Steps to reproduce the behavior:
build MEC as described in the BUILD file (the Mac variant with Xcode)

Expected behavior
build should succeed

Desktop (please complete the following information):

  • OS: macOS Catalina 10.15.2

Additional context
Error message:
RegisterExecutionPolicyException /Users/ferdinand/git/mecdev/MEC/build/release/lib/MinSizeRel/libmec-push2.dylib (in target 'mec-push2' from project 'mec')
cd /Users/ferdinand/git/mecdev/MEC
builtin-RegisterExecutionPolicyException /Users/ferdinand/git/mecdev/MEC/build/release/lib/MinSizeRel/libmec-push2.dylib
note: Execution policy exception registration failed and was skipped: Error Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted" (in target 'mec-push2' from project 'mec')

WriteAuxiliaryFile /Users/ferdinand/git/mecdev/MEC/build/mec-api/mec.build/MinSizeRel/mec-api.build/Objects-normal/x86_64/mec-api.LinkFileList (in target 'mec-api' from project 'mec')
cd /Users/ferdinand/git/mecdev/MEC
write-file /Users/ferdinand/git/mecdev/MEC/build/mec-api/mec.build/MinSizeRel/mec-api.build/Objects-normal/x86_64/mec-api.LinkFileList

** BUILD FAILED **

The following build commands failed:
CompileC /Users/ferdinand/git/mecdev/MEC/build/mec-api/mec.build/MinSizeRel/mec-api.build/Objects-normal/x86_64/mec_eigenharp.o /Users/ferdinand/git/mecdev/MEC/mec-api/devices/mec_eigenharp.cpp normal x86_64 c++ com.apple.compilers.llvm.clang.1_0.compiler
(1 failure)

MEC on BeagleBoneBlack / Bela

from @NothanUmber

got my BBB with Bela today :)
This trick with virtual midi drivers should also work to get MEC->supercollider/PD working, right?
https://forum.bela.io/d/168-using-alsa-midi-with-supercollider/8

And: If I want to use Tau/Alpha and Axoloti at the same time (which is your default setup, right?) - would I just have to connect a USB hub to the (big) USB port of the BBB and connect both the base station as well as the (big) Axoloti USB port to that hub?

Also tried the (pre-built) ARM build of EigenD on Bela. Connected a Pico but got the message that the pico-manager couldn't be loaded when trying to load the "Pico/modular synth" example setup.
Workbench only showed the "workbench" agent.

Failing to Build on macOS Sierra (Architecture Issue?)

Unable to build on my mid-2011 Mac mini running macOS Sierra. Sounds like it might be an issue with the i386 called versus the x86_64 build.

This warning:
ld: warning: ignoring file /usr/local/lib/libusb-1.0.dylib, file was built for x86_64 which is not the architecture being linked (i386): /usr/local/lib/libusb-1.0.dylib
leads to:
ld: symbol(s) not found for architecture i386 clang: error: linker command failed with exit code 1 (use -v to see invocation)

And eventually:

Ld build/mec-api/devices/push2/push2lib/mec.build/Debug/mec-push2.build/Objects-normal/x86_64/libmec-push2.dylib normal x86_64
    cd /Users/alex/Downloads/MEC-master
    export MACOSX_DEPLOYMENT_TARGET=10.12
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -arch x86_64 -dynamiclib -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk -L/Users/alex/Downloads/MEC-master/build/release/lib/Debug -F/Users/alex/Downloads/MEC-master/build/release/lib/Debug -filelist /Users/alex/Downloads/MEC-master/build/mec-api/devices/push2/push2lib/mec.build/Debug/mec-push2.build/Objects-normal/x86_64/mec-push2.LinkFileList -install_name @rpath/libmec-push2.dylib -mmacosx-version-min=10.12 -Xlinker -no_deduplicate -dynamiclib -Wl,-headerpad_max_install_names /Users/alex/Downloads/MEC-master/build/libusb/Debug/liblibusb.a /usr/local/lib/libusb-1.0.dylib -framework IOKit -single_module -Xlinker -dependency_info -Xlinker /Users/alex/Downloads/MEC-master/build/mec-api/devices/push2/push2lib/mec.build/Debug/mec-push2.build/Objects-normal/x86_64/mec-push2_dependency_info.dat -o /Users/alex/Downloads/MEC-master/build/mec-api/devices/push2/push2lib/mec.build/Debug/mec-push2.build/Objects-normal/x86_64/libmec-push2.dylib

** BUILD FAILED **


The following build commands failed:
	Ld build/mec-api/devices/push2/push2lib/mec.build/Debug/mec-push2.build/Objects-normal/i386/libmec-push2.dylib normal i386
(1 failure)

build pd external for Apple Silicon

Is your feature request related to a problem? Please describe.
I would like to build kontrolrack and kontrolmodule external for Apple Silicon

Osc t3d voice bug?

Setup: Tau, 4 voices, osc to Aalto.

Issue: When “touch 0” and “touch 1” is down at the same time there seems to be some sort of conflict. It sounds like the pitches in the Aalto voices jump back and forth between the two keys. All other combos of touch # sounds fine.

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.