Using piano roll, and touchscreen to play vst?
-
Littlewoodg
- New member
- Posts: 4
- Contact:
2 separate questions from a new comer, related to vst use in HH.
Probably obvious, or dealt with in the manual...
1st, how does one use a piano roll to play a VST instrument? I'm not clear on the rack building (or patching) needed to do this simple thing: draw a pattern in piano roll that triggers note on/off of my loaded synth...
EDIT: ok I patched piano roll to vst, i guess I'm still curious if drag n drop works for this at the rack level?
2nd is there any module or library item that would allow me to play VST instrument from the touchscreen, live, or is a midi controller the only way to play VST live in HH? Is there a way to use the qwerty keys to play vst? (I'm using a Surface Pro 3, would love to use Hollyhock as a strictly touch software, but I do have the accessory keyboard)
Thanks!
Probably obvious, or dealt with in the manual...
1st, how does one use a piano roll to play a VST instrument? I'm not clear on the rack building (or patching) needed to do this simple thing: draw a pattern in piano roll that triggers note on/off of my loaded synth...
EDIT: ok I patched piano roll to vst, i guess I'm still curious if drag n drop works for this at the rack level?
2nd is there any module or library item that would allow me to play VST instrument from the touchscreen, live, or is a midi controller the only way to play VST live in HH? Is there a way to use the qwerty keys to play vst? (I'm using a Surface Pro 3, would love to use Hollyhock as a strictly touch software, but I do have the accessory keyboard)
Thanks!
Hi, I made a very barebones example for you so that you can see it is possible. There is probably better ways than my example, it will take some exploration to find the best way, or maybe someone else has made a better method already. Furthest towards the bottom on the midi key is maximum velocity. http://www.sensomusic.com/forums/upload ... _patch.pat
-
Littlewoodg
- New member
- Posts: 4
- Contact:
Thanks @gurulogic!
Will try and report back.
,
Will try and report back.
,
hi,
there is the 14 note midi keyboard in the add-on section. Somebody did a qwerty keyboard thingy, but i think that was pre hollyhock...
best
there is the 14 note midi keyboard in the add-on section. Somebody did a qwerty keyboard thingy, but i think that was pre hollyhock...
best
-
sm_jamieson
- Member
- Posts: 555
- Contact:
I've done a SDK user module that is a full sized midi keyboard (88 notes or more), can be played with a touchscreen and also includes midi controller functionality (zones, splits, sliders, etc). Also can have mappings for PC keys. I'll post it in add-ons when I can sort out some type of simple tutorial.
It works fine with multi-touch, but requires the module mouse output parameters to be wired back into the user module parameters due to problems with the SDK multi-touch support.
The sliders set the zone key ranges and the grey inset slider controls the transpose / octave shift.
I'll post a screen shot of my workspace that includes the module.
http://www.sensomusic.com/forums/upload ... roller.jpg

It works fine with multi-touch, but requires the module mouse output parameters to be wired back into the user module parameters due to problems with the SDK multi-touch support.
The sliders set the zone key ranges and the grey inset slider controls the transpose / octave shift.
I'll post a screen shot of my workspace that includes the module.
http://www.sensomusic.com/forums/upload ... roller.jpg
-
PopstarWannabe
- Member
- Posts: 13
- Contact:
Did you manage to post it?sm_jamieson wrote:I've done a SDK user module that is a full sized midi keyboard (88 notes or more), can be played with a touchscreen ...
... I'll post it in add-ons when I can sort out some type of simple tutorial.
Would that be a problem for me to create a perfectly functional isomorphic keyboard for touchscreen? I started to learn HH 2 mainly for that reason. I am not advanced and don't wanna make the effort and find out at the end that it is not possible...sm_jamieson wrote:It works fine with multi-touch, but requires the module mouse output parameters to be wired back into the user module parameters due to problems with the SDK multi-touch support.
-
sm_jamieson
- Member
- Posts: 555
- Contact:
I've not posted it yet. The trouble is I keep adding features. Just adding XML-based setlist / song / combi stuff.
Each time I play I think of some new stuff that would be useful. Maybe lyrics and chords in a text box next ..
Its turning into Mainstage in a Usine module !
I'm not sure what you mean by an "isomorphic" keyboard. If you mean a photo realistic keyboard, Usine's User module drawing functions are perhaps not up to that. But the SDK can launch a new window that you can draw into using whatever graphics libraries you want. You'd need a very wide screen to display an full piano though
My module is a basic keyboard graphic, but I did put in a mode to simulate 3D, i..e narrowing of the keys toward the back. Just a touch of that makes it look much more like you are sitting at a keyboard (the setting is not in use in the screenshot I posted).
Each time I play I think of some new stuff that would be useful. Maybe lyrics and chords in a text box next ..
Its turning into Mainstage in a Usine module !
I'm not sure what you mean by an "isomorphic" keyboard. If you mean a photo realistic keyboard, Usine's User module drawing functions are perhaps not up to that. But the SDK can launch a new window that you can draw into using whatever graphics libraries you want. You'd need a very wide screen to display an full piano though
My module is a basic keyboard graphic, but I did put in a mode to simulate 3D, i..e narrowing of the keys toward the back. Just a touch of that makes it look much more like you are sitting at a keyboard (the setting is not in use in the screenshot I posted).
-
PopstarWannabe
- Member
- Posts: 13
- Contact:
Isomorphic keyboard: https://www.youtube.com/watch?v=V5JQ61TSshQ It's just an array of hexagons.
How do I go about building that?
How do I go about building that?
-
sm_jamieson
- Member
- Posts: 555
- Contact:
Its certainly possible in a User module that you write in C++ using the SDK (software development kit). How easy it is depends on your programming experience. Essentially a user module can have a graphic canvas that you draw on with the drawing functions that the SDK provides. Then you have to match the multi touch points to the notes and convert into midi to send out of the module.PopstarWannabe wrote:Isomorphic keyboard: https://www.youtube.com/watch?v=V5JQ61TSshQ It's just an array of hexagons.
How do I go about building that?
Keyboard interfaces like that certainly look interesting but not something I have time to do at the moment.
-
PopstarWannabe
- Member
- Posts: 13
- Contact:
What about the procedure described here http://www.sensomusic.org/wiki3/doku.ph ... and_faders ??
I see several ways, making arrays of individual "cells" knobs/panels with hexa bitmaps, or line arrays of matrixes (one line, then one line offseted under ext), using the draw object panel
to place and lock circles then place a bitmap behing with hexa layouts ,or sdk .
to place and lock circles then place a bitmap behing with hexa layouts ,or sdk .
-
sm_jamieson
- Member
- Posts: 555
- Contact:
Ok heres something for the future. Variable shaped buttons, text fields, etc. (hexagons, circles, etc), that will automatically lock together in the most compact form using some enhancement of the physics engine. Then these isomorphic layouts would sort of form themselves from a pile of shapes and "gravity".23fx23 wrote:I see several ways, making arrays of individual "cells" knobs/panels with hexa bitmaps, or line arrays of matrixes (one line, then one line offseted under ext), using the draw object panel
to place and lock circles then place a bitmap behing with hexa layouts ,or sdk .
Simon.
-
PopstarWannabe
- Member
- Posts: 13
- Contact:
Ok, what's the most "immediate" method for me to try to build the keyboard? I mean - not knowing C++ (hence not being able to build a user module) - what other thing should I learn first in order to be able to build that keyboard?23fx23 wrote:I see several ways, making arrays of individual "cells" knobs/panels with hexa bitmaps, or line arrays of matrixes (one line, then one line offseted under ext), using the draw object panel
to place and lock circles then place a bitmap behing with hexa layouts ,or sdk .
I am new to Usine HH and have only learnt the basic things. Can you please direct me what to study next?
the most immediate simple/method is imo using a simple panel as a cell that create a midi message as a tinypatch, then duplicate this and place by hand. drawback is quite long to place, not easy to make evolve, not the most cpu efficient, but workable and 'relatively' quick done without fancy knowledge
based on this we can see next a way to semi-automatically spread each cell and assign it a number using a polyphonic patch wich is an interessant concept to check if ya hav'ent yet, , this will make placing much easier / automatic, adaptative if larger cell or XY grid changes.
One other simple way is to make a layout using ie photoshop or some graphic soft and display as backround of a panel, then we have XY info of where the mouse is pressed, just have to recover wich cell it correspond with a bit of math, can be done via patch or an interesting way to discover simple script, but as a starting point, i would not dive into script/sdk so quick.
this mich be even simpler and very cpu efficient but multitouch handling will be tiny more tricky (not that much tho)
So imo good concepts to explore/catch that can be useful for this project are Arrays and their global manipulations, and Polyphonic patchs.
ill try to give a simple ex of those 2 possible ways starting points
based on this we can see next a way to semi-automatically spread each cell and assign it a number using a polyphonic patch wich is an interessant concept to check if ya hav'ent yet, , this will make placing much easier / automatic, adaptative if larger cell or XY grid changes.
One other simple way is to make a layout using ie photoshop or some graphic soft and display as backround of a panel, then we have XY info of where the mouse is pressed, just have to recover wich cell it correspond with a bit of math, can be done via patch or an interesting way to discover simple script, but as a starting point, i would not dive into script/sdk so quick.
this mich be even simpler and very cpu efficient but multitouch handling will be tiny more tricky (not that much tho)
So imo good concepts to explore/catch that can be useful for this project are Arrays and their global manipulations, and Polyphonic patchs.
ill try to give a simple ex of those 2 possible ways starting points
so here is a very basic exemple of simple method (prob not the smartest and more easily upgradable, but very easy and staitforward)

a simple hexa cell is done in a subpatch with custom path module. on mouse down it emmit note on, note off on relase. when clicking on a cell you can clic 'find in patch' and edit the path caption, color, and on the midi message what note number it is (code 1) and velocity (code 2). then just duplicate and place the cells and edit them as wish. all midi message goes to a bus that you see on top of patch to route to whatever.
nb: clicking on patch header with mouse wheel and scroll allow global zoom wich can be convenient here.
a next step/different tech would be as said to use polyphonic patchs, but it will imply more complex maths, dealing with arrays for colors, midi messages, captions lists spread ect and might by feel quicly involve scripting to be more workable and efficient, ect so maybe better start simple^^
patch:
http://www.sensomusic.org/forums/upload ... XAMPLE.pat

a simple hexa cell is done in a subpatch with custom path module. on mouse down it emmit note on, note off on relase. when clicking on a cell you can clic 'find in patch' and edit the path caption, color, and on the midi message what note number it is (code 1) and velocity (code 2). then just duplicate and place the cells and edit them as wish. all midi message goes to a bus that you see on top of patch to route to whatever.
nb: clicking on patch header with mouse wheel and scroll allow global zoom wich can be convenient here.
a next step/different tech would be as said to use polyphonic patchs, but it will imply more complex maths, dealing with arrays for colors, midi messages, captions lists spread ect and might by feel quicly involve scripting to be more workable and efficient, ect so maybe better start simple^^
patch:
http://www.sensomusic.org/forums/upload ... XAMPLE.pat
I like all windows Multi touch keyboards
currently using XotoPad.
I like the isomorphic and other alternative keyboard lay outs.
The possibilities are endless what can be done on a large multi-touch screen.
Many features can be added later.
one very important one is to include a way to register velocity.
currently using XotoPad.
I like the isomorphic and other alternative keyboard lay outs.
The possibilities are endless what can be done on a large multi-touch screen.
Many features can be added later.
one very important one is to include a way to register velocity.
Windows 10-64bit, i9, 32GB RAM, Studio One 5, Reaper 6, FL Studio 20, Komplete 11,
yes ideally would need pressure senitive touchscreens... could do something with a second fader or Y pressed position as velocity maybe
here is a tiny more complex example using polyphonic patch, (how i would do personally if wanted to not deal with scripts or sdk). this time there is only one cell and this will allow much faster semi automatic placement and assigns without copy/paste. ive been lasy connecting all the math together so have to play a bit with faders if relayout but it's to show the overall idea, each cell is a 'voice' and will be placed, sclaled, receive an id and name according to it's voice number. (have to wait a bit if changing polyphony for usine to relayout).
im not used to isomorph but it seems there are various/many possible 'notes' layouts, so there is an array editor on top of patch where man can assign wanted midi note number for each cell, then it will auto get the name and output midi code accordingly, and also take different color if sharps.
it's then possible to make differents sets of 'mapping' arrays and recall them via preset manager for example tho i would isolate the array editor in a separated subpatch if so.

wks
http://www.sensomusic.org/forums/upload ... ech_06.wkp
here is a tiny more complex example using polyphonic patch, (how i would do personally if wanted to not deal with scripts or sdk). this time there is only one cell and this will allow much faster semi automatic placement and assigns without copy/paste. ive been lasy connecting all the math together so have to play a bit with faders if relayout but it's to show the overall idea, each cell is a 'voice' and will be placed, sclaled, receive an id and name according to it's voice number. (have to wait a bit if changing polyphony for usine to relayout).
im not used to isomorph but it seems there are various/many possible 'notes' layouts, so there is an array editor on top of patch where man can assign wanted midi note number for each cell, then it will auto get the name and output midi code accordingly, and also take different color if sharps.
it's then possible to make differents sets of 'mapping' arrays and recall them via preset manager for example tho i would isolate the array editor in a separated subpatch if so.

wks
http://www.sensomusic.org/forums/upload ... ech_06.wkp
-
sm_jamieson
- Member
- Posts: 555
- Contact:
Well that custom path module is new to me, Very useful.
Regarding velocity on a touchscreen, I thought you could use a gesture, i.e touch and flick. The faster you flick the louder the note. Obviously this requires a short delay between when you first touch the key and the sound output. But you could develop a playing technique to make it work I think.
Simon.
Regarding velocity on a touchscreen, I thought you could use a gesture, i.e touch and flick. The faster you flick the louder the note. Obviously this requires a short delay between when you first touch the key and the sound output. But you could develop a playing technique to make it work I think.
Simon.
Currently XotoPad uses locational velocity sensing.
http://feelyoursound.com/xotopad/
and so does nchord.
http://www.avantgardesound.com/
The higher up a key the higher the velocity.
However on a small hexagonal key this may be difficult to accomplish.
23fx23, looks interesting.
perhaps velocity randomization?
And be able to controller the velocity limits?
http://feelyoursound.com/xotopad/
and so does nchord.
http://www.avantgardesound.com/
The higher up a key the higher the velocity.
However on a small hexagonal key this may be difficult to accomplish.
23fx23, looks interesting.
perhaps velocity randomization?
And be able to controller the velocity limits?
Windows 10-64bit, i9, 32GB RAM, Studio One 5, Reaper 6, FL Studio 20, Komplete 11,
yes thats the problem with hexagonal shapes, from what ive tried there are high risks of selecting wrong cell if too close to borders, also usine consider a square of the hexa limits, not the shape itself, so small dynamic range would be possible only unless zooming quite a lot..
would be much easier globally with a classic square align matrix layout, easy to rescale, map ect. the flick idea is nice but could be tricky with chords and add latency..
mm have to try stuff and reflect about this velocity thing.. thanks for softs links ill give a look
would be much easier globally with a classic square align matrix layout, easy to rescale, map ect. the flick idea is nice but could be tricky with chords and add latency..
mm have to try stuff and reflect about this velocity thing.. thanks for softs links ill give a look
-
PopstarWannabe
- Member
- Posts: 13
- Contact:
WOW !!!
Thank you so much!! I'll look at it and give feedback.
Velocity can not be dealt with within a hexagonal shape. It doesn't make sense. The only solution is a slider somewhere on the workspace that sets velocity for all touched notes.
Thank you so much!! I'll look at it and give feedback.
Velocity can not be dealt with within a hexagonal shape. It doesn't make sense. The only solution is a slider somewhere on the workspace that sets velocity for all touched notes.
Could have random velocity with setting limits.
Also use loop velocity 110, 98. 77, 82 and then back to 110 and repeat.
So in the order the key is Struck it get the velocity number. Loop any
length and user puts in the velocity value or/and to have presets.
Map velocity to note number. Each note to have its own velocity loop.
I am sure there are interesting ways to deal with velocity.
Edit: perhaps should have used Velocity Round Robin instead of Velocity Loop.
Also use loop velocity 110, 98. 77, 82 and then back to 110 and repeat.
So in the order the key is Struck it get the velocity number. Loop any
length and user puts in the velocity value or/and to have presets.
Map velocity to note number. Each note to have its own velocity loop.
I am sure there are interesting ways to deal with velocity.
Edit: perhaps should have used Velocity Round Robin instead of Velocity Loop.
Windows 10-64bit, i9, 32GB RAM, Studio One 5, Reaper 6, FL Studio 20, Komplete 11,
-
PopstarWannabe
- Member
- Posts: 13
- Contact:
After trying hard to learn about the modules and to decipher your patches I came to the forum and re-read this. This is really not acceptable to what I want.23fx23 wrote:... there are high risks of selecting wrong cell if too close to borders, also usine consider a square of the hexa limits, not the shape itself ...
Is it really not possible that the key you touch is just the hexagon?
The idea was indeed to be able to sound 2 notes when you touch their common border, or 3 notes when you touch the intersection point of the 3 adjacent hexagons, but if I am on the hexagon somewhere CLOSE to the border, I want just the single note to sound.
maybe i miss something and i know it's not really hexa, but what about using rotated shape ?
Download patch
Download patch
-
PopstarWannabe
- Member
- Posts: 13
- Contact:
Ha hanay-seven wrote:... but what about using rotated shape ?
I never thought of an isomorphic keyboard using rotated squares. Well, in theory... why not? I'm not sure though of the efficiency of playing such a keyboard... I have only played several with hexagons.
I could experiment on this one...
Glad you like it,
of course , still 2 axis missing...
so maybe we can use 8 shapes to create a real hexa, each shape sending the same note ?
download patch
of course , still 2 axis missing...
so maybe we can use 8 shapes to create a real hexa, each shape sending the same note ?
download patch
-
PopstarWannabe
- Member
- Posts: 13
- Contact:
Now you created an octagonnay-seven wrote:...so maybe we can use 8 shapes to create a real hexa, each shape sending the same note ?
How did you create the shapes anyway? Using the module "Shape, Rectangle, Circle, Oval" ?
mmm, that's doable with 3 rectangles for hexagon, but will make 3x more shapes per cell, so a 64x layout will need 192 shapes, start to make a lot..plus the feature you described here:
because we have to consider that when we press somewhere with a mouse, there is only one point on one module at a time that will be concerned. and for exemple a single shape with a border won't let you know if you clicked inside or on border, neither wich border id was concerned, and this needed to know what neighboor cell is to be trigged in above scenario.
..so this is a bit more complex than in seems, and either you would have to filter out the mouse datas first if using single shape (check if in, check if in border, wich one) and that will imply doable but tiny complex maths, or deal with an average like 18 'clicable areas' shapes per cell, wich imo is possible for small stacks, but not workable for big layouts of many cells in terms of cpu hit and maintenance, potential re-scalling/position, assigning notes for each ect..
i might be wrong and will reflect about other posibilities, but i do have the feel that will quicly become imo a nighmare to handle, with loads of shapes without scripting or sdk..
the simpler solution i imagine for now to match the requests is kinda have a virtual grid array of points, placed at centers of cells, center of each borders, corners, and then when mouse is down check wich point is the closet distance to where the mouse is, to then trigg wanted results accordingly ie via script,
or maybe simpler, when a point is down, check in wich cell it is, and scan surrounding cells centers distances, if lower than a specified radius threshold then sencond/third cell is/are trigged too.
..will imply 6x more borders made of individual shapes, and also 6x 'corner dots' for 3cells common corner shapes has well, so that when mouse is down you actually know 'where' you are.PopstarWannabe wrote:"The idea was indeed to be able to sound 2 notes when you touch their common border, or 3 notes when you touch the intersection point of the 3 adjacent hexagons, but if I am on the hexagon somewhere CLOSE to the border, I want just the single note to sound."
because we have to consider that when we press somewhere with a mouse, there is only one point on one module at a time that will be concerned. and for exemple a single shape with a border won't let you know if you clicked inside or on border, neither wich border id was concerned, and this needed to know what neighboor cell is to be trigged in above scenario.
..so this is a bit more complex than in seems, and either you would have to filter out the mouse datas first if using single shape (check if in, check if in border, wich one) and that will imply doable but tiny complex maths, or deal with an average like 18 'clicable areas' shapes per cell, wich imo is possible for small stacks, but not workable for big layouts of many cells in terms of cpu hit and maintenance, potential re-scalling/position, assigning notes for each ect..
i might be wrong and will reflect about other posibilities, but i do have the feel that will quicly become imo a nighmare to handle, with loads of shapes without scripting or sdk..
the simpler solution i imagine for now to match the requests is kinda have a virtual grid array of points, placed at centers of cells, center of each borders, corners, and then when mouse is down check wich point is the closet distance to where the mouse is, to then trigg wanted results accordingly ie via script,
or maybe simpler, when a point is down, check in wich cell it is, and scan surrounding cells centers distances, if lower than a specified radius threshold then sencond/third cell is/are trigged too.
mmm well in fact i just discovered shapes have an option to compute if a point is inside or outside the path, wich can help a bit here.
problem is usine globally select an object by it's 'container' rectangle in any cases.. ive posted a suggestion about this.
problem is usine globally select an object by it's 'container' rectangle in any cases.. ive posted a suggestion about this.
Ok found solution, and its much much simpler than i espected, no script, no sdk, no complex maths..
usine is amazing...
only one hexa shape per cell, cell is selected if and only if mouse is inside shape path, no tricky sel at borders, and allow 2 or 3 triggs if mouse is on overlapping neigboor cells borders.
got it all right?^^
in the patch you set everyting on top container, but at the end play on bottom one. (be sure engine is on)

workspace exemple
nb: it's not multitouch enabled here but think it should be possible *relatively easily, will think about it for a later version
only one hexa shape per cell, cell is selected if and only if mouse is inside shape path, no tricky sel at borders, and allow 2 or 3 triggs if mouse is on overlapping neigboor cells borders.
got it all right?^^
in the patch you set everyting on top container, but at the end play on bottom one. (be sure engine is on)

workspace exemple
nb: it's not multitouch enabled here but think it should be possible *relatively easily, will think about it for a later version
Congrats 23FX !!
well done
well done
-
PopstarWannabe
- Member
- Posts: 13
- Contact:
Wow, seems like you've done it.
I will dive into it and test it in the next couple of days.
Thank you!
I will dive into it and test it in the next couple of days.
Thank you!
Who is online
Users browsing this forum: No registered users and 26 guests
