Nice. Works fine in Linux Mint and Carla-plugin host.
Posts
-
RE: Svarog - cinematic scrap metal vsti
-
RE: The definitive feature request & bug fix roadmap
Advanced Learn MIDI CC/ Assign MIDI CC
Ability to assign also bitchbend, channel aftertouch, poly aftertouch... in addition to CC0-127 to instruments different modulation targets. See further details in post https://forum.hise.audio/topic/4438/advanced-learn-midi-cc-assign-midi-cc
-
Advanced Learn MIDI CC / Assign MIDI CC
Advanced Learn MIDI CC / Assign MIDI CC
It would be nice to be able to assign also bitchbend, channel aftertouch, poly aftertouch... in addition to CC0-127 to instruments different modulation targets. For non-professional users labels of typical usage of few CC’s might also be beneficial. See pic. (Suggested additions in red)
Detail:
Here is a screenshot from a video which shows implementation in Kontakt and link to video for usage case and further details:
A tutorial walk-through on how to make any preset from the Kontakt Factory Library expressive and responsive to the Glide, Slide, and Press gestures applied to a Seaboard RISE or Seaboard BLOCK…
How to use a Seaboard RISE with Kontakt
**
I’ll post a short version of this suggestion to feature request thread (https://forum.hise.audio/topic/4260/the-definitive-feature-request-bug-fix-roadmap/106), so if you like the idea don’t hesitate to upvote it ;-)
**
Links to my earlier feature requests:
3 improvement suggestions for MPE-modulator -
RE: One usage case. Is it possible?
@Lindon Voting done (currently 10 votes).
-
RE: One usage case. Is it possible?
@musictop I have Sensel Morph with Piano and Innovators overlays
Pros
- also Linux support for configuring the device (SenselApp)
- reasonable price (295,00 € + overlays ca. 40 €/pcs)
- MPE is only one of several usage possibilities (=Morph), I’ve used it (with Innovators overlay) as Linnstrument style controller (7x13 grid C2-F5#) and a general controller (shortcut buttons/macros)...
Cons
- only 2 octaves with Piano overlay (with oct up/down buttons all midi notes)
- narrower keys (17 mm) than normal keyboard (22 mm)
-
One usage case. Is it possible?
So, I’ve compiled HISE as a VST2 plugin (no luck with VST3’s so far) with MIDI ins and outs (in Linux Mint 20.2 Cinnamon). Plugin version of HISE works fine in Carla (=plugin host).
Compiled vst-plugin would have roughly the same functionality as Ableton Live 11's Expression Control & MPE Control combined (check the manual Ableton Live 11 pdf manual, p. 627-630 and/or short video demonstrations of using those at www.mpe.design.
That is controlling non-MPE instruments with finger movements (MPE gestures) (loudness, vibrato…) in stead of modwheel, pitchwheel or some slider/knob.
+**
Question is, how do I create MIDI Out ports and send data to them (in scripts)?
HISE’s MPE modulator works great reading MPE data and sends it to HISE’s sound generators as expected. Scripting has some issues (reading channel aftertouch doesn’t work for me).
**
Thanks to @musictop for your excellent instruments (OT WINDS in the picture). Have you considered adding MPE modulators to your current or future instruments? (I did some experimenting and added MPE modulators (gain and pitch) to cloned OT BRASS and it worked pretty well)
**
For those who are new to MPE stuff I suggest checking for example these Youtube videos which have inspired me.
Example of MPE’s expression capabilities
Marco Parisi plays Jimi Hendrix's "Little Wing" on the Seaboard RISE at Musikmesse 2016.Example of open source synth MPE sounds (Surge). I especially like those guitar sounds.
Roger Linn demonstrates his Surge (MPE) sounds.Excellent Vital synth also supports MPE. I wish it’s Sampler (SMP) had same properties as HISE’s Sampler-module. (Let’s go forking ;-) )
**
-
RE: The definitive feature request & bug fix roadmap
Feature request:
Going through all dynamic layers with MPE-modulators increasing/decreasing press gesture as explained in post 3 improvement suggestions for MPE-modulator (1. suggestion) would be a nice feature for us MPE device owners.
-
3 improvement suggestions for MPE-modulator
Going through all dynamic layers with loudness and timber changes would make many acoustic instruments sound much more realistic. And of course MPE’s property to change volume after voice has started and each individual chord notes loudness/pitch (vibrato) is essential to realism (think of wind instrument section playing a nice chord with dynamics (swell) crescendo→fff→decrescendo).
Other two suggestions are not so important.
I drew a picture to clarify my thinking
The idea here is that one can throw bunch of own multilayer samples in Sampler-module which is part of ready-made base HISE project that includes all the bells and whistles one can wish for (minus your own samples) and soon you can start playing using MPE gestures and everything would work automagically and sound nice and dynamic!.
Round robin group xfades are rather laborious to do and sfz imports have mainly failed (crash or otherwise).
-
MPE data reading, Aftertouch...?
Question?
Does anyone know how to read Channel Aftertouch data? Message.getChannelAfterTouchValue() - not found in HISE-script?**
Reading MPE data experiments
Here is few of my experiments to see what data Sensel Morph is sending in MPE mode (and a few AKAI MPK249 nonMPE devices outputs) and how to read it in HISE to later do some processing.I'm using Linux (Mint Cinnamon 20.1), so that may or may not pose some random problems.
Reading MPE data summary
Press, z, aftertouch, pressure,... NotOK???????? see Experiment 3 and 7
Glide, x, pitchbend, pitch, note bend, horizontal,... OK! see Experiment 2
Slide, y, CC74, vertical,... OK! see Experiment 4
Stroke, velocity,... OK! see Experiment 8
Lift, release velocity,... OK! see Experiment 8**
Experiment 1 CC numbers sent in Sensel Morphs MPE mode
function onController() { /* Moving/pressing/sliding finger on my MPE keyboard keys */ Console.print(Message.getControllerNumber()); }
Interface: 128
Interface: 74
Interface: 129
Interface: 128
Interface: 74
Interface: 129
Interface: 128
Interface: 74
Interface: 129
Interface: 128
Interface: 74Conclusions:
CC #128 Pitchbend OK! see Experiment 2
CC #74 MPE slide CC#74 (maybe initial value = 0 better (than 63), then slide up ...127 or init value 127 slide down to 0?) see Experiment 4
CC #129 PolyAftertouch, not ChannelAftertouch? see Experiment 7**
Experiment 2 Pitchbend
function onController() { /* Pressing my MPE keyboard key and sliding quickly right and left (2^14 =16384/2=8192, 14 bits) */ if (Message.getControllerNumber() == 128) // initial value 8192, glide right/left increases/decreases => PitchBend range -8192 - +8192, 14 bits { Console.print(Message.getControllerValue() - 8192); } }
before subtracting - 8192
Interface: 8192
Interface: 8193
Interface: 8196
Interface: 8200
Interface: 8207
Interface: 8218
Interface: 8231
Interface: 8247
Interface: 8266
Interface: 8291
Interface: 8319
Interface: 8355
Interface: 8393
Interface: 8459
Interface: 8524
Interface: 8589
Interface: 8651
Interface: 8708
Interface: 8782
Interface: 8845
Interface: 8897
Interface: 8936
Interface: 8964
Interface: 8979
Interface: 8992
Interface: 8991
Interface: 8962
Interface: 8899
Interface: 8823
Interface: 8737
Interface: 8650
Interface: 8537
Interface: 8431
Interface: 8326
Interface: 8208
Interface: 8100
Interface: 8003
Interface: 7912
Interface: 7840
Interface: 7790after subtracting - 8192
Interface: 0
Interface: 0
Interface: 0
Interface: 0
Interface: 0
Interface: 0
Interface: 0
Interface: 1
Interface: 1
Interface: 2
Interface: 3
Interface: 5
Interface: 8
Interface: 12
Interface: 16
Interface: 21
Interface: 26
Interface: 32
Interface: 39
Interface: 47
Interface: 60
Interface: 73
Interface: 88
Interface: 103
Interface: 119
Interface: 159
Interface: 199
Interface: 237
Interface: 277
Interface: 317
Interface: 356
Interface: 394
Interface: 429
Interface: 463
Interface: 516
Interface: 569
Interface: 617
Interface: 662
Interface: 702
Interface: 734
Interface: 762
Interface: 782
Interface: 809
Interface: 827
Interface: 838
Interface: 840
Interface: 841
Interface: 826
Interface: 802
Interface: 770
Interface: 717
Interface: 659
Interface: 598
Interface: 534
Interface: 466
Interface: 377
Interface: 284
Interface: 195
Interface: 107
Interface: 0
Interface: -101
Interface: -198
Interface: -302
Interface: -400
Interface: -515Conclusion: Reading pitchbend values seems to work
**
Experiment 3 CC129 = PolyAftertouch see Experiment 7
function onController() { /* Pressing my MPE keyboard key with increasing/decreasing pressure */ if (Message.getControllerNumber() == 129) { Console.print(Message.getControllerValue()); } }
Press and release
Interface: 64
Interface: 64
Interface: 64
Interface: 65
Interface: 65
Interface: 65
Interface: 65
Interface: 65
Interface: 65
Interface: 65
Interface: 65
Interface: 65
Interface: 65
Interface: 65
Interface: 66
Interface: 66
Interface: 66
Interface: 66
Interface: 66
Interface: 66
Interface: 229Press and slide up/down
initial contact 63
63 - 127 slide up
63 - 0 slide down
229 when key releasedConclusion: // initial value 64, slide up/down increases/decreases: 0 <= 64 <= 127, release value 229? confused - polyAT or ?
**
Experiment 4 CC#74 value
function onController() { if (Message.getControllerNumber() == 74) { Console.print(Message.getControllerValue()); } }
Interface: 63
Interface: 63
Interface: 64
Interface: 64
Interface: 64
Interface: 65
Interface: 66
Interface: 66
Interface: 67
Interface: 69
Interface: 70
Interface: 71
Interface: 73
Interface: 75
Interface: 77
Interface: 79
Interface: 80
Interface: 82
Interface: 84
Interface: 86
Interface: 88
Interface: 89
Interface: 90
Interface: 91
Interface: 92
Interface: 93
Interface: 93
Interface: 93
Interface: 93
Interface: 92
Interface: 92
Interface: 90
Interface: 89
Interface: 87
Interface: 85
Interface: 83
Interface: 80
Interface: 78
Interface: 75
Interface: 73
Interface: 70
Interface: 67Conclusion: Initial value ca. 63, slide up/down increases/decreases: 0 <= 63 <= 127 (can be set to other modes with SenselApp)
**
Experiment 5 AKAI MPK249 pitchwheel and modwheel
function onController() { /* Operating my AKAI MPK249 pitchwheel=128 and modwheel=1 */ Console.print(Message.getControllerNumber()); }
Interface: 128 - pitchwheels CC#
Interface: 128
Interface: 128
Interface: 128
Interface: 128
Interface: 128
Interface: 1 - modwheels CC#
Interface: 1
Interface: 1
Interface: 1
Interface: 1**
Experiment 6 AKAI MPK249 ChnAT/Poly AT
function onController() { /* Pressing my AKAI MPK249 pad with Aftertouch set to: Chn or Poly => same result = 129 (keyboard part sends only channel aftertouch, pads can send also PolyAT) */ Console.print(Message.getControllerNumber()); }
Interface: 129
Interface: 129
Interface: 129
Interface: 129
Interface: 129
Interface: 129
Interface: 129**
Experiment 7 AKAI MPK249 pad Aftertouch set to: Poly or Chn
function onController() { /* Pressing pad with Aftertouch set to: Poly or Chn */ if (Message.getControllerNumber() == 129) { Console.print(Message.getControllerValue()); } }
Pressing pad with Aftertouch set to: Poly
Interface: 127
Interface: 53
Interface: 0
Interface: 62
Interface: 77
Interface: 94
Interface: 106
Interface: 114
Interface: 119
Interface: 121
Interface: 127
Interface: 120
Interface: 119
Interface: 116
Interface: 111
Interface: 106
Interface: 100
Interface: 89
Interface: 72
Interface: 64
Interface: 63
Interface: 66
Interface: 67
Interface: 64
Interface: 53
Interface: 39
Interface: 27
Interface: 23
Interface: 22
Interface: 18
Interface: 1
Interface: 0
Interface: 12
Interface: 0
Interface: 101
Interface: 113
Interface: 123
Interface: 127
Interface: 96
Interface: 0Pressing pad with Aftertouch set to: Chn
Interface: 229 - prints 229 with increasing pressure and stops when pressed with enough force
Interface: 229
Interface: 229
...
Interface: 229 - last one when pressure releasedConclusion:
Poly Aftertouch works as expected!
Channel Aftertouch does not!!!**
Experiment 8 Sensel Morphs Velocity and Release Velocity OK
function onNoteOn() { Console.print("Velocity: " + Message.getVelocity()); } function onNoteOff() { Console.print("Release Velocity: " + Message.getVelocity()); }
Interface: Release Velocity: 26
Interface: Velocity: 127
Interface: Release Velocity: 22
Interface: Velocity: 39
Interface: Release Velocity: 21
Interface: Velocity: 23 - hard to get velocities lower than that
Interface: Release Velocity: 23
Interface: Velocity: 48
Interface: Release Velocity: 29
Interface: Velocity: 49
Interface: Release Velocity: 20
Interface: Velocity: 47
Interface: Release Velocity: 18 - releasing pressure very slowly
Interface: Velocity: 60
Interface: Release Velocity: 23
Interface: Velocity: 41
Interface: Release Velocity: 38
Interface: Velocity: 66
Interface: Release Velocity: 127 - releasing pressure very fast**