ForumsHardware ← Defining note layouts

Hi Guys,

Is there anywhere I can get a look at the process/interface for defining note layouts? I'm wondering how this works and what the limitations are?

Thanks,

Steven

the Soundplane app loads up zone files as JSON. You can edit the JSON file to make your own maps. Here's the file for the common "rows in fourths" setup:

{
    "zone": {
        "name": "B2",
        "type": "note_row",
        "rect": [0, 0, 30, 1],
        "note": 47
    },
    "zone": {
        "name": "E2",
        "type": "note_row",
        "rect": [0, 1, 30, 1],
        "note": 52
    },
    "zone": {
        "name": "A2",
        "type": "note_row",
        "rect": [0, 2, 30, 1],
        "note": 57
    },
    "zone": {
        "name": "D3",
        "type": "note_row",
        "rect": [0, 3, 30, 1],
        "note": 62
    },
    "zone": {
        "name": "G3",
        "type": "note_row",
        "rect": [0, 4, 30, 1],
        "note": 67
    }
}

You can also add various kinds of control areas that send out MIDI and/or OSC data. Examples of these are installed with the Soundplane app into the ZonePresets directory. There's one with 30 sliders for example, and one with one of every kind of control including xy areas, toggles, pressure-only control areas and so on.

Very cool, thanks Randy! I should be able to interpret most of what I need from looking at those examples.

If I wanted to delve into the code and try to define notes based on raw position values instead of grid values, how difficult would you estimate that would be? Anyone out there tried this?

Really hard to say, without knowing more about where you are coming from and what tools you want to use and what you want to do.

The Soundplane app is available on github/madronalabs/soundplane. It's reasonably complex. If you can understand and compile it, you can make it do anything you want. For most people who want to do a little more without delving into the C++ code, Max / MSP is a very useful tool.

Yeah, might be above my skill level. I'm only a beginner in C++. I do know Max / MSP pretty well though, so if I could accomplish it in Max, that'd be great. Can Max receive the raw XYZ position values form the Soundplane?

Basically, I want to fit two notes within a single square on the board. For example, the left half of the square would play one frequency and the right half would play another. I play microtonal music, so sometimes having one note per square will space out the notes too much. Also, I have small hands :)

@mcgreave ... yes, Max can receive x/y/z/note via OSC (this is higher precision that using midi)

one note, if you use X, the you will to do your own 'quantisation' (its not that hard, but the SP has a few extras for things like vibrato), however you could also use the note parameter, and 'rescale' this to 2 notes per cell, this will allow you to use the quantisation from the SP software.

the only disadvantage is that you need to ensure Max knows the midi note for the row start. (since you need to calc with x = 2x-root)

(its a pity the soundplane software doesn't broadcast this meta information to clients )

Thanks technobear! Those sound like good options. I will try them out and post anything I come up with that works well.

Hey all,

Ran into another question on the note layouts. If I define subsequent squares in a row to be unevenly spaced notes, how will the note bending work? Will the bend stay linear (meaning the bent pitch will no longer line up with the notes defined for the grid layout) or will the bend try to adjust to match the grid notes? Seems like the first option is probably preferable.

Thanks,
Steve

The bent pitch would always line up with the notes on the grid. There is no concept of "bending" separate from the grid of notes actually. There are only the notes on the grid and spaces in between them, which interpolate the grid points. So everything always aligns.

Ah, cool. So the speed of the slide would be different in different areas if you define unequally spaced notes for the grid?

Yes it would.

Thanks! Makes sense.