Welcome to %s forums

BrainModular Users Forum

Login Register

Using piano roll, and touchscreen to play vst?

General Discussion about whatever fits..
Post Reply
Littlewoodg
New member
Posts: 4
Contact:

Unread post by Littlewoodg » 11 Nov 2016, 21:08

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!

gurulogic
Member
Posts: 1019
Contact:

Unread post by gurulogic » 11 Nov 2016, 22:42

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:

Unread post by Littlewoodg » 12 Nov 2016, 03:33

Thanks @gurulogic!
Will try and report back.
,

iococoi
Member
Posts: 211
Contact:

Unread post by iococoi » 12 Nov 2016, 07:50

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

sm_jamieson
Member
Posts: 555
Contact:

Unread post by sm_jamieson » 12 Nov 2016, 18:18

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
Image

Littlewoodg
New member
Posts: 4
Contact:

Unread post by Littlewoodg » 13 Nov 2016, 15:53

@sm_jamieson
That looks amazing.

PopstarWannabe
Member
Posts: 13
Contact:

Unread post by PopstarWannabe » 03 Dec 2016, 23:12

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.
Did you manage to post it?
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.
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
Member
Posts: 555
Contact:

Unread post by sm_jamieson » 04 Dec 2016, 04:01

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).

PopstarWannabe
Member
Posts: 13
Contact:

Unread post by PopstarWannabe » 04 Dec 2016, 10:18

Isomorphic keyboard: https://www.youtube.com/watch?v=V5JQ61TSshQ It's just an array of hexagons.

How do I go about building that?

sm_jamieson
Member
Posts: 555
Contact:

Unread post by sm_jamieson » 04 Dec 2016, 17:17

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?
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.

Keyboard interfaces like that certainly look interesting but not something I have time to do at the moment.


23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 04 Dec 2016, 18:06

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 .

sm_jamieson
Member
Posts: 555
Contact:

Unread post by sm_jamieson » 05 Dec 2016, 11:15

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 .
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".

Simon.

PopstarWannabe
Member
Posts: 13
Contact:

Unread post by PopstarWannabe » 06 Dec 2016, 09:42

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 .
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?

I am new to Usine HH and have only learnt the basic things. Can you please direct me what to study next?

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 06 Dec 2016, 21:13

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

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 06 Dec 2016, 23:59

so here is a very basic exemple of simple method (prob not the smartest and more easily upgradable, but very easy and staitforward)
Image

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

Vas
Member
Posts: 60
Location: USA
Contact:

Unread post by Vas » 07 Dec 2016, 01:03

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.
Windows 10-64bit, i9, 32GB RAM, Studio One 5, Reaper 6, FL Studio 20, Komplete 11,

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 07 Dec 2016, 02:09

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.

Image

wks

http://www.sensomusic.org/forums/upload ... ech_06.wkp

sm_jamieson
Member
Posts: 555
Contact:

Unread post by sm_jamieson » 07 Dec 2016, 03:48

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.

Vas
Member
Posts: 60
Location: USA
Contact:

Unread post by Vas » 07 Dec 2016, 06:47

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?
Windows 10-64bit, i9, 32GB RAM, Studio One 5, Reaper 6, FL Studio 20, Komplete 11,

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 07 Dec 2016, 07:24

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

PopstarWannabe
Member
Posts: 13
Contact:

Unread post by PopstarWannabe » 07 Dec 2016, 09:51

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.

Vas
Member
Posts: 60
Location: USA
Contact:

Unread post by Vas » 08 Dec 2016, 02:07

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.
Windows 10-64bit, i9, 32GB RAM, Studio One 5, Reaper 6, FL Studio 20, Komplete 11,

PopstarWannabe
Member
Posts: 13
Contact:

Unread post by PopstarWannabe » 14 Dec 2016, 22:25

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 ...
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.

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.

User avatar
nay-seven
Site Admin
Posts: 5684
Location: rennes France
Contact:

Unread post by nay-seven » 14 Dec 2016, 23:05

maybe i miss something and i know it's not really hexa, but what about using rotated shape ?
Download patch

PopstarWannabe
Member
Posts: 13
Contact:

Unread post by PopstarWannabe » 14 Dec 2016, 23:24

nay-seven wrote:... but what about using rotated shape ?
Ha ha :) That is nice, thank you.

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...

User avatar
nay-seven
Site Admin
Posts: 5684
Location: rennes France
Contact:

Unread post by nay-seven » 14 Dec 2016, 23:41

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

PopstarWannabe
Member
Posts: 13
Contact:

Unread post by PopstarWannabe » 14 Dec 2016, 23:53

nay-seven wrote:...so maybe we can use 8 shapes to create a real hexa, each shape sending the same note ?
Now you created an octagon :) but I get point. I think it would work.

How did you create the shapes anyway? Using the module "Shape, Rectangle, Circle, Oval" ?

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 15 Dec 2016, 01:11

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:
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."
..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.

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.

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 15 Dec 2016, 12:15

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.

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 15 Dec 2016, 13:09

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)

Image

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

User avatar
nay-seven
Site Admin
Posts: 5684
Location: rennes France
Contact:

Unread post by nay-seven » 15 Dec 2016, 13:38

Congrats 23FX !!
well done

23fx23
Member
Posts: 2545
Contact:

Unread post by 23fx23 » 15 Dec 2016, 15:21

here is a multitouch compatible version:

hexa multitouch version

PopstarWannabe
Member
Posts: 13
Contact:

Unread post by PopstarWannabe » 16 Dec 2016, 18:58

Wow, seems like you've done it.

I will dive into it and test it in the next couple of days.

Thank you!

Post Reply

Who is online

Users browsing this forum: No registered users and 134 guests