Skip to content

Commit

Permalink
added MIDI mappings document
Browse files Browse the repository at this point in the history
  • Loading branch information
Martin Klang committed Apr 23, 2021
1 parent 0046a3a commit 4ad92fb
Show file tree
Hide file tree
Showing 6 changed files with 130 additions and 4 deletions.
2 changes: 2 additions & 0 deletions CPlusPlus/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

To make an OWL Patch, all you have to do is create a class that derives from Patch and implement the `processAudio()` method. See the [API Documentation](https://www.rebeltech.org/docs/) for reference.

Practical information on how to create and upload OWL patches is available [here](../OWL_Patches/Creating_Patches.md).


## Memory Management

Expand Down
8 changes: 5 additions & 3 deletions MaxGen/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,15 @@ The OWL platform is capable of running patches created with Cycling'74 [Max Gen]

To create an OWL Gen patch using our online compiler, open the [Patch Library](https://www.rebeltech.org/patch-library/) with a Web MIDI enabled browser (e.g. Chrome), log in (create an account if necessary), go to [My Patches](https://www.rebeltech.org/patch-library/patches/my-patches/), and click Create patch. Now upload the .cpp and .h files produced by Max Gen, and (optionally) your .gendsp file. Select compilation type `gen`. Click `Save and Compile`, wait for compilation to finish, click `Connect To Device`, and then click `Load` to run the patch on the device. If you want to store it in a memory slot, click `Store` and select which slot to store it in.

More information on creating patches is available [here](../OWL_Patches/Creating_Patches.md).

There is also an OWL Package available which you can download using the Max package manager. [This Cycling'74 article](https://cycling74.com/articles/review-getting-to-know-the-owl-pedal-part-2) explains how to use it.

## Examples

* [Gen Template Patch](https://www.rebeltech.org/patch-library/patch/GenTemplate)
* [Gen MIDI Test](https://www.rebeltech.org/patch-library/patch/Gen_MIDI_Test)


## Signal Inputs and Outputs

Audio signals enter and leave the patch by `in` and `out` objects; index 1 and 2 correspond to left and right audio inputs. Full scale signals are in the range -1 to 1.
Expand All @@ -25,8 +28,7 @@ To send a signal to the CV outputs of your device, simply add one or more extra

## Extended Parameters

Even if your target device has a limited number of hardware controls, you can still use extended parameters which you will be able to control over MIDI. For example, the Lich has knobs and CV for parameters A, B, C and D. If you add parameters E, F, G and H in your patch, you will be able to control them with MIDI CC messages. Same goes for parameters AA to AH, and BA to BH, et c, giving you up to 40 software parameters that can be assigned. The full set of MIDI mappings is available [here](https://www.rebeltech.org/docs/OpenWareMidiControl_8h_source.html).

Even if your target device has a limited number of hardware controls, you can still use extended parameters which you can control over MIDI. For example, the Lich has knobs and CV for parameters A, B, C and D. If you add parameters E, F, G and H in your patch, you will be able to control them with MIDI CC messages. Same goes for parameters AA to AH, and BA to BH, et c, giving you up to 40 software parameters that can be assigned. More information on MIDI Mappings is available [here](../OWL_Patches/MIDI_Mappings.md).

## MIDI

Expand Down
32 changes: 32 additions & 0 deletions OWL_Patches/Creating_Patches.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
## Creating OWL Patches

OWL patches can be programmed in any of the supported languages:
* [Pure Data](../PureData)
* [FAUST](../Faust)
* [C++](../CPlusPlus)
* [Max Gen](../MaxGen)
* [SOUL](../Soul)
* [Maximilian](../Maximilian)
* [DaisySP](../DaisySP)

Regardless of language, there are primarily two ways [1] of creating and loading a patch. The easiest is to use our online patch library, but it is also quite straightforward to set up a local, i.e. offline, build environment with simple command line tools.

[1] For Max Gen, there is also an OWL Package available which makes it possible to compile and load patches from within Max. See the [Max Gen](../MaxGen) instructions for more details.

### Online Instructions
To create an OWL patch using our online compiler, open the [Patch Library](https://www.rebeltech.org/patch-library/) with a Web MIDI enabled browser (e.g. Chrome), log in (create an account if necessary), go to [My Patches](https://www.rebeltech.org/patch-library/patches/my-patches/), and click Create patch. Now upload your patch files, which can be
* .cpp, .c, .hpp, .h for C++ patches
* .pd for Pure Data
* .dsp for FAUST
* .gendsp plus the generated .cpp and .h files produced by Max Gen
* .cpp for Maximilian
* .soul and optionally .soulpatch for SOUL

Make sure the correct 'main file' is selected. This should be where your C++ Patch class resides, or the Pure Data top level, or main, patch file. Select the appropriate compilation type, then click `Save and Compile`. Wait for compilation to finish, click `Connect To Device`, and then click `Load` to run the patch on the device. If you want to store it in a memory slot, click `Store` and select which slot to store it in.

To update the files, change the compilation type or main file, or remove patch files, simply click on the `+` icon next to the file tabs on the patch details page. Uploading files with the same name as an existing one will update that copy of the file on the server.

Instead of uploading files, you can also link directly to files in a GitHub repo. To do so, simply copy-paste a link to the file. The latest version of the linked files will be requested each time the patch is compiled.

### Offline Instructions
You can also compile OWL patches offline using [OwlProgram](https://github.com/pingdynasty/OwlProgram). For details on using OwlProgram, please see the [project readme](https://github.com/pingdynasty/OwlProgram/blob/develop/README.md).
87 changes: 87 additions & 0 deletions OWL_Patches/MIDI_Mappings.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
## OWL MIDI Mappings

Different OWL devices have different hardware controls, such as knobs, buttons, encoders and control voltages. MIDI Control Change messages can be used to update parameters that don't have a designated hardware control.

### Parameters

Each OWL parameter has an associated MIDI CC:
```
PATCH_PARAMETER_A = 20,
PATCH_PARAMETER_B = 21,
PATCH_PARAMETER_C = 22,
PATCH_PARAMETER_D = 23,
PATCH_PARAMETER_E = 24,
PATCH_PARAMETER_F = 1,
PATCH_PARAMETER_G = 12,
PATCH_PARAMETER_H = 13,
PATCH_PARAMETER_AA = 75,
PATCH_PARAMETER_AB = 76,
PATCH_PARAMETER_AC = 77,
PATCH_PARAMETER_AD = 78,
PATCH_PARAMETER_AE = 79,
PATCH_PARAMETER_AF = 80,
PATCH_PARAMETER_AG = 81,
PATCH_PARAMETER_AH = 82,
PATCH_PARAMETER_BA = 83,
PATCH_PARAMETER_BB = 84,
PATCH_PARAMETER_BC = 85,
PATCH_PARAMETER_BD = 86,
PATCH_PARAMETER_BE = 87,
PATCH_PARAMETER_BF = 88,
PATCH_PARAMETER_BG = 89,
PATCH_PARAMETER_BH = 90,
PATCH_PARAMETER_CA = 91,
PATCH_PARAMETER_CB = 92,
PATCH_PARAMETER_CC = 93,
PATCH_PARAMETER_CD = 94,
PATCH_PARAMETER_CE = 95,
PATCH_PARAMETER_CF = 96,
PATCH_PARAMETER_CG = 97,
PATCH_PARAMETER_CH = 98,
PATCH_PARAMETER_DA = 99,
PATCH_PARAMETER_DB = 100,
PATCH_PARAMETER_DC = 101,
PATCH_PARAMETER_DD = 102,
PATCH_PARAMETER_DE = 103,
PATCH_PARAMETER_DF = 104,
PATCH_PARAMETER_DG = 105,
PATCH_PARAMETER_DH = 106
```

The value is scaled from 7-bit MIDI range: 0 to 127, to OWL parameter range: 0.0 to 1.0.

If you send a MIDI value to a parameter that is already controlled by hardware then the value will generally snap back to the hardware setting (though not on Magus).

### Buttons

To simulate pressing the `PUSHBUTTON` you can send a value of 127 to `CC 25` for the down-press, followed by value 0 for the release.
To control the other buttons, put the button ID as the CC value and send a message to CC 27 to turn it on (press), and CC 28 to turn it off again (release).

```
PATCH_BUTTON = 25, /* LED Pushbutton: 0=not pressed, 127=pressed */
PATCH_BUTTON_ON = 27, /* Switch a button on: 0-127 button id */
PATCH_BUTTON_OFF = 28, /* Switch a button off: 0-127 button id */
```

The button ID's are as follows:

```
PUSHBUTTON = 1,
BUTTON_1 = 4,
BUTTON_2 = 5,
BUTTON_3 = 6,
BUTTON_4 = 7,
BUTTON_5 = 8,
BUTTON_6 = 9,
BUTTON_7 = 10,
BUTTON_8 = 11
```
Button 1 is sometimes referred to as Button A, Button 2 as Button B et c.

### Volume

The output volume of the device can be controlled with MIDI CC 7, with values from 0 (mute) to 127 for maximum volume.


### Reference
The full set of MIDI mappings is available [here](https://www.rebeltech.org/docs/OpenWareMidiControl_8h_source.html).
2 changes: 2 additions & 0 deletions PureData/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ The easiest way to run a Pure Data patch on an OWL device is to use the online c

You can also compile Pd patches offline using [OwlProgram](https://github.com/pingdynasty/OwlProgram) and a local installation of [hvcc](https://github.com/pingdynasty/hvcc.git) (the Heavy compiler; use our fork to take advantage of OWL-specific features and bug fixes). For details on using OwlProgram, see the project readme.

More information on creating patches is available [here](../OWL_Patches/Creating_Patches.md).

## Inputs and Outputs

### Parameters
Expand Down
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@ The OWL platform is actively developed by [Rebel Technology](https://www.rebelte
* [OWL Modular](OWL_Modular)

### Patch Programming
* [Creating Patches](OWL_Patches)
* [Creating Patches](OWL_Patches/Creating_Patches.md)
* [MIDI Mappings](OWL_Patches/MIDI_Mappings.md)
* [Pure Data](PureData)
* [FAUST](Faust)
* [C++](CPlusPlus)
Expand Down

0 comments on commit 4ad92fb

Please sign in to comment.