Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Push 3 support - editing of velocity/response curve #357

Open
git-moss opened this issue Jun 11, 2023 · 6 comments
Open

Push 3 support - editing of velocity/response curve #357

git-moss opened this issue Jun 11, 2023 · 6 comments

Comments

@git-moss
Copy link
Owner

Comments from KVR:

"I had to change the MIDI names and Device ID just like you would have done in the Push 3 test version you shared. The only other thing I had to change was the frame header. Yours wasnt the same as the one in the Ableton github documentation or the python example I was using for my testing. So I changed that bit of your code to be the same as the Ableton documentations version of that frame header, and the display came alive."

"OK I went back and tried the standard frame header with the Push 2, and it makes the colours the same as what I was seeing on the Push 3. So I guess you had changed the ways colour worked by using a different frame header, and that frame header is not supported on the Push 3."

@SteveElbows
Copy link

SteveElbows commented Jun 13, 2023

It looks like the pads can be put in MPE mode using sysex similar to the sysex used to select channel or polyphonic aftertouch on the Push 2. There is also sysex for setting the expressive parameters of the pads when they are in MPE mode. I wont describe what all these settings do, better explanations are available via official Push 3 videos or trying it with Live in person. But certainly to get pads to start to behave how we'd expect for MPE, its necessary to send both the MPE enabled sysex and the pad pitch bend enabled sysex.

I havent actually tested the following sysex to make sure it actually works yet, the weather got too warm here in recent days. So far I just got as far as sniffing all of this sysex by monitoring communication between Live and Push 3:

Set pads to MPE mode: F0 00 21 1D 01 01 1E 02 F7 (same format as channel and poly pressure sysex in previous pushes, just a new value of 02 for MPE mode)

Enable per-pad pitch bend: F0 00 21 1D 01 01 26 07 08 02 00 F7
Disable per-pad pitch bend: F0 00 21 1D 01 01 26 07 08 00 00 F7

Set 'In tune' location to Finger: F0 00 21 1D 01 01 26 07 0E 01 00 F7
Set 'In tune' location to Pad: F0 00 21 1D 01 01 26 07 0E 00 00 F7

Set 'In Tune width':

F0 00 21 1D 01 01 26 07 14 vv 00 F7

Where vv is one of the following values:

0mm: 00
1mm: 04
2mm: 08
2.5mm: 0C
3mm: 10
4mm: 14
5mm: 18
6mm: 1C
7mm: 20
10mm: 30
13mm: 40
20mm: 60

Set 'Slide Height':

F0 00 21 1D 01 01 26 07 24 vv 00 F7

Where vv is one of the following values:

16mm: 13
15mm: 19
14mm: 20
13mm: 27
12mm: 2D
11mm: 34
10mm: 3B

Other values may be valid, in the above I just listed the values for the various mm options that are currently presented to users on that page of settings in the Push when used with Live 11.3.

In terms of what MIDI is sent from the pads, it looks like standard MPE as per the MPE spec. I didnt check to see whether standard MPE MIDI configuration messages can be used to change the default piutch bend range (its probably defaulting to 48 which is a pretty standard value for MPE). Biggest complication will be if we want the playing surface to behave how it does in Live in terms of pads only showing the notes that are present in particular musical scales. Probably need to write all the code for that ourselves, with an additional complication compared to the previous Pushes: we'd also need to write our own code to process the pitch bend messages in a way that makes them send a MIDI pitch value that actually bends to the next note in the chosen scale when the centre of the next pad is reached by a finger.

@git-moss
Copy link
Owner Author

I finally have a test device and started looking into this. Did you dig any further? I would be especially interested in the Firmware info sysex as well as if the audio hardware can be configured via sysex as well.

@SteveElbows
Copy link

SteveElbows commented Jul 31, 2023

Glad you've got one now.

No I hadnt done any more, wasnt sure what else to do.

I think the device info stuff is the same as in the Push 2 documentation 'Device Inquiry' section....

So if I send the sysex F0 7E 01 06 01 F7 to my Push 3, I get back the following:

F0 7E 01 06 02 00 21 1D 69 32 03 00 01 00 46 00 7B 6B 75 11 00 02 01 0F 04 F7

Where the following part of the above relates to software revision and then software build: 01 00 46 00

So the software version given is not currently interesting. The software build for my device shows 46 for its lower 7 bits of hex, which is 70 in decimal, and I am indeed running firmware 1.0.70 on my device.

As for the audio interface, my assumption is that this is configured through standard audio drivers, not through MIDI messages. If there are any more advanced config messages available, then I dont know of any examples of Ableton using these within Live, so I havent found any opportunities to 'sniff' these messages.

@git-moss
Copy link
Owner Author

git-moss commented Aug 6, 2023

Thanks! It is nearly finished! :-)

@git-moss git-moss closed this as completed Aug 6, 2023
@git-moss
Copy link
Owner Author

git-moss commented Oct 26, 2023

@SteveElbows I noticed that the parameters for pad sensitivity did change as well and it does no longer react to the old command. I recorded the sysex when changing the 4 parameters but it seems they get aggregated into one sysex command. I guess it is a kind of envelope/response curve. Don't have the time to look into this, maybe you have an idea.
Sensitivity.txt

@git-moss git-moss reopened this Oct 26, 2023
@SteveElbows
Copy link

Yeah some time later I realised that I had completely neglected to even look at this side of things originally. I'll take a look when I find some spare time.

@git-moss git-moss changed the title Push 3 support Push 3 support - editing of velocity/response curve Dec 31, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants