All Projects → patriciogonzalezvivo → MidiGyver

patriciogonzalezvivo / MidiGyver

Licence: BSD-3-Clause license
No description or website provided.

Programming Languages

C++
36643 projects - #6 most used programming language
CMake
9771 projects
c
50402 projects - #5 most used programming language
Makefile
30231 projects

Projects that are alternatives of or similar to MidiGyver

Libossia
A modern C++, cross-environment distributed object model for creative coding and interaction scoring
Stars: ✭ 133 (+98.51%)
Mutual labels:  osc, midi
Iannix
IanniX is a graphical open-source sequencer, based on Iannis Xenakis works, for digital art. IanniX syncs via Open Sound Control (OSC) events and curves to your real-time environment.
Stars: ✭ 238 (+255.22%)
Mutual labels:  osc, midi
Pedalinomini
Same features of Pedalino™ in a compact form.
Stars: ✭ 139 (+107.46%)
Mutual labels:  osc, midi
X32 Behringer
This GIT repo (C language) holds applications and utilities for the Behringer X32 and M32 mixing consoles. Additional details, documentation, implementation examples and apps can be found in my website:
Stars: ✭ 97 (+44.78%)
Mutual labels:  osc, midi
osmid
osmid is a tool to bridge MIDI and OSC. It is currently in use in Sonic Pi
Stars: ✭ 63 (-5.97%)
Mutual labels:  osc, midi
Lick
LiCK, Library for ChucK
Stars: ✭ 118 (+76.12%)
Mutual labels:  osc, midi
Xrnx
The official Renoise Lua Scripting repository
Stars: ✭ 165 (+146.27%)
Mutual labels:  osc, midi
Open Stage Control
Libre and modular OSC / MIDI controller
Stars: ✭ 436 (+550.75%)
Mutual labels:  osc, midi
Pedalino
Smart wireless MIDI foot controller for guitarists and more.
Stars: ✭ 105 (+56.72%)
Mutual labels:  osc, midi
Chataigne
Artist-friendly Modular Machine for Art and Technology
Stars: ✭ 251 (+274.63%)
Mutual labels:  osc, midi
Theconductor
Toolset for making musical applications with Unity, Max and Ableton.
Stars: ✭ 48 (-28.36%)
Mutual labels:  osc, midi
ofxOscMidi
Midi in, OSC out with Midi thru. Based on openFrameworks
Stars: ✭ 66 (-1.49%)
Mutual labels:  osc, midi
Touchosc2midi
a (linux compatible) TouchOSC Midi Bridge written in python
Stars: ✭ 44 (-34.33%)
Mutual labels:  osc, midi
Ofxremoteui
OpenFrameworks addon serves any number of variables (bool, float, int, enum, string, ofColor) on the network, so that you can modify from outside the OF app. Includes a native OSX Client. OSC based.
Stars: ✭ 132 (+97.01%)
Mutual labels:  osc, midi
Score
ossia score, an interactive sequencer for the intermedia arts.
Stars: ✭ 808 (+1105.97%)
Mutual labels:  osc, midi
Fsynth
Web-based and pixels-based collaborative synthesizer
Stars: ✭ 146 (+117.91%)
Mutual labels:  osc, midi
Orca
Esoteric Programming Language
Stars: ✭ 3,636 (+5326.87%)
Mutual labels:  osc, midi
Orca C
Live Programming Environment(C Port)
Stars: ✭ 328 (+389.55%)
Mutual labels:  osc, midi
Midimonster
Multi-protocol control & translation software (ArtNet, MIDI, OSC, sACN, ...)
Stars: ✭ 241 (+259.7%)
Mutual labels:  osc, midi
ManosOsc
(Eyebeam #13 of 13) Output OSC, MIDI, and After Effects/Maya animation scripts from the Leap Motion controller.
Stars: ✭ 53 (-20.9%)
Mutual labels:  osc, midi

MidiGyver Build Status

Flexible console app that allows you to:

  • broadcas, filter, bridge MIDI events
  • program any MIDI instrument/controler with some JavaScript
  • convert to/from OSC
  • save events to a MIDI or CSV files

All this is posible through YAML configuration files.

Install dependencies

In linux would be:

sudo apt install cmake

In MacOS would be:

brew install cmake git

Compile and Install

git clone https://github.com/patriciogonzalezvivo/MidiGyver.git
cd MidiGyver

mkdir build
cd build
cmake ..
make
sudo make install

Use

Devices are program using a YAML file, which is past as the only argument

midigyver config.yaml 

Try one of the examples of the examples/ folder.

Config

Each YAML file can contain the configuration of multiple devices. The configuration of a device is set under the node with it own name (note: empty spaces and other symbols are replaced with _ ).

In that node you set up the out protocols ( csv or as many osc clients you want).

Each key event happens in the following order:

[ MIDI Key IN ] -> [ shaping function (JS) ] -> [ map ] -> [ send key values to OUT ]

Each event node is compose by: * name: name of the event. This is use to construct the OSC path or the first column on the CSV output * type: could be: button, toggle, states, scalar, vector and color. * shape: shaping function to modify the original key value (between 0 and 127 from the key) to any other number. After the mapping the range still will be between 0 ~ 127. If the result is a false it doesn't map or send the key value. * map: depend on the type of the event it can map: - bottom or toggle booleans to strings (on: <something> and off: <something>) to string - states linearly from any array of strings (ex; [low, med, high] ) - scalars linearly from any array of numbers (ex: [0, 1, 100, 2, -10])
- vectors linearly from any array of vectors (ex: [ [0, 0], [0.5, 1.0]]) - colors linearly from any array of colors (ex: [ [1, 0, 0], [0, 0, 1]]) * value: here is where the final values are store so next time this YAML is reload it can send all the previous states. * out: you can specify special out puts that will over write the default one.

global:
    track: 0

out:
    -   csv
    -   osc://localhost:8000
in:
    nanoKONTROL2*:
        0:
            name: fader00
            type: scalar
            value: 1
            out:
                -   osc://localhost:8001
-
        16:
            name: knob00
            type: scalar
            map: [-3.1415, 3.1415]
            value: 3.1415

        17:
            name: knob01
            type: color
            map: [[1, 0, 0], [0, 1, 0], [0, 0, 1], [1, 1, 1]]
            value: [1, 1, 1, 1]

        18:
            name: knob02
            type: vector
            map: [[0.0, 0.0], [-0.5, 0.0], [-0.5, -0.5], [0.5, -0.5], [0.5, 0.5], [0.0, 0.5], [0.0, 0.0]]
            value: [0, 0, 0]

        19:
            name: knob03
            type: states
            map: [low, med, high, ultra_high]
            value: ultra_high

        32:
            name: sBtns0
            type: toggle
            value: true
            map:
                on: define,DRAW_SHAPE

        58:
            name: track_back
            type: scalar
            shape: |
                function() {
                    if (global.track == 0)
                        return false;

                    if (value == 127)
                        return global.track--;
                    
                    return false;
                }

        59:
            name: track_fwd
            type: scalar
            shape: |
                function() {
                    if (value == 127)
                        return ++global.track;
                    
                    return false;
                }

Acknowledgements

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].