From the original SynthMaker forum (2004–2014), with its members’ names and dates.
oddson ·
I made a couple improvements to my GUI keyboard.
The biggest is that you can drag to play glissando with mouse drags and held notes with right clicks.
[url=http://www.members.shaw.ca/oddson/keyboard3.osm]
OSM[/url]
The visuals are still pretty basic (as before) - I might pretty it up a bit sometime.
I might also add something to display incoming midi notes played elsewhere.
oddson ·
Added midi through... cleaned up the schematic.
keyboard4.osm
AngularMomentum ·
Excellent, kudos to you Leif!!
stefan ·
This is great!
Small bug report, take a look at what happens with the bottom of the outline rectangle upon a note on...
lalo ·
excellent work oddson 🙂
sambean ·
Brilliant!
Really nice to use, responsive and smooth, How about key colours in the properties? in case one is feeling a bit avant garde..
Added to the toolbox! Thanks!
😀
Sam
rl ·
stefan wrote: Small bug report, take a look at what happens with the bottom of the outline rectangle upon a note on...
BTW: can be solved by setting V-smooth to false
oddson ·
sambean wrote: ..Really nice to use, responsive and smooth...
You should have seen an interim version where the incoming midi was split inside each key module. I didn't realize it would be processed inside every note so when you played at sequence it would play it back note by note each one taking about a second. 😮
Stefan wrote: Small bug report, take a look at what happens with the bottom of the outline rectangle upon a note on...
I noticed the draw bug... I assumed it would clear up if it was inside a parent window as it doesn't occur if the module is selected when played.
Thanks Rudolph for finding a solution but is this my bug or SM's?
oddson ·
Further update...
Fixed the draw bug (their's or mine?) by adding 1 grid to right and bottom (or more acurately subtracting 1 from the view area before doing the math to layout the keys).
A smaller subtraction works but this way the keyboard keeps even grid square dimensions for placement in a GUI.
Added more draw properties (on and off note colours for black and white notes etc.)
Changed behavior so that notes held from external keyboard are not turned off by mouse-glissando. They are still turned off by an explicit click.
keyboard5.osm
(Edit - minor correction. Black key size ratios were not working.)
(Edit2- more minor fixes... same file name)
Tom7777 ·
Nice work oddson 😀
oddson ·
Latest and likely final 'new' version.
keyboard7.osm
It's not nearly as quick as the simple two-tone version and I can't really see it getting used in any serious projects in its current form because of CPU usage issues.
Mostly it was a learning exercise.
I'm particularly proud of myself for figuring out how to show reasonable shadows without having to pass the state of adjacent keys.
sambean ·
Hey, that looks amazing! Are the textures done using colour gradient? If that's why the cpu is a problem, you can always use the bitmap create to render them at startup, so you don't need to recalculate the gradients each time...
Good show 😀
Sam
oddson ·
sambean wrote: ...Are the textures done using colour gradient? If that's why the cpu is a problem, you can always use the bitmap create to render them at startup...
Yeah... there are no bitmaps in the current setup.
It was just an exercise and I don't know how much CPU that would save as I did have a version where you could turn the gradients off and it wasn't much faster with them off.
I might give your suggestion a try but I don't know if I want to spend that much more time on it given it's not something I really think would be useful in a plugin.
Tom7777 ·
Nice update, just wondering can we use this keyboard in our projects if we want? 🙂
Shifrin ·
Woah, that's purrty 😍 😉
Shif.
AngularMomentum ·
That looks brilliant!! 😍
skOre ·
it does 🙂 If only it was lighter on the cpu... one needs to implement a vector-bmp routine I fear...
oddson ·
Tom7777 wrote: Nice update, just wondering can we use this keyboard in our projects if we want? 🙂
Of course... if someone is going to use it for real I might try to get it to be a little more efficient.
Tom7777 ·
🙂
sambean ·
I'm not sure if I'd personally use it, but I think the version you have made is pretty definitive.. It looks great, the properties are comprehensive and it reacts well.. If you have the time spare it may be good for all to streamline it a little.
One problem I can see arising if moving to bitmaps, is the resizing ability. A possible solution to this may be to have a 'render' option in the properies, whereby the GUI switches to a bitmap version and is no longer resizable..
And a slight asthetic note: Most GUI's have the light coming from the top left, I'm not sure if this is an unspoken rule between devs or something.. 😉
Thanks for sharing..
Sam
oddson ·
sambean wrote: I'm not sure if I'd personally use it, but I think the version you have made is pretty definitive.. It looks great, the properties are comprehensive and it reacts well.. If you have the time spare it may be good for all to streamline it a little.
Spare time! 😀 I make time to build SM projects. I just thought this one was 'done' given it was just a lark to see how good a job I could do with the visual appeal within SM with a resizable GUI keyboard.
sambean wrote: One problem I can see arising if moving to bitmaps, is the resizing ability. A possible solution to this may be to have a 'render' option in the properies, whereby the GUI switches to a bitmap version and is no longer resizable..
That's how I took your earlier suggestion. If I was going to freeze the size I'd do the whole thing with bitmaps.
sambean wrote: And a slight asthetic note: Most GUI's have the light coming from the top left, I'm not sure if this is an unspoken rule between devs or something.. 😉
I wondered if that would get pointed out... The keyboard I looked at as a model was lighted from the right... Before the shadows it didn't really stand out as 'wrong'. Changing it now would be a minor hassle... again if there is any interest in it I may still do it.
Lighting from the left would be OK but from above left will mean the highlight at the end of the black key won't make sense. Without that it's hard to define the shape of the key. I've lent my keyboard to my mother-in-law so I'm lacking a model to try things out right now...
I'll ruminate about it for a while and see what happens...
skOre ·
The first idea that I have to make this better is to take the mouse events out of the keys themselves and make a module that tracks the mouse movement and sends midi events to the graphics. Started working on this.
oddson ·
skOre wrote: The first idea that I have to make this better is to take the mouse events out of the keys themselves and make a module that tracks the mouse movement and sends midi events to the graphics. Started working on this.
That won't be easy if you mean to use my schematic as a starting point. I think you'd be better off starting from scratch with a bit-mapped/fixed size model... but maybe you have thought of something that I missed on how to do it. 😕
oddson ·
Left/Right light source selector added... I had to figure out the old clipping problem with this one or the shadow of the last key hangs out in space.
For some reason you have to give the outline an extra pixel of room or you get clipping.
Anyway... here's the file. Next step is to try Sam's idea. That could take a while.
keyboard7LR.osm
Can someone check and let me know if it's more sluggish than the last version. It is on my machine tonight but that could be something else. 😕 🙁
skOre ·
Is it just me or does the Midi splitter handle note on and offs as Status= 144 ???
oddson ·
On is 144 (x90) , Off is 128 (x80)
skOre ·
Yeah, but I only get 144... all the time... O_o
oddson ·
skOre wrote: Yeah, but I only get 144... all the time... O_o
Do you mean from your controller?
I seem to recall someone has a controller that zeros the velocity instead of note off (or something like that). 😕
If that's what you mean, just use the PC Keyboard for testing.
EDIT
Wait... that means my keyboards won't get the note-off they're expecting and will show their down state all the time. 🙁
Here's the thread I was thinking of Midi in - NOTE OFF vs VEL=0
skOre ·
Yes, I only get 144's from that... so I guess my keyboard must be like this...
oddson ·
Here's a simiplified version with assumed left hand lighting and has no shadows. It is much quicker than with shadows but not quite as fast as the two-tone version.
I've also added what I hope is something to handle velocity=0 keyboards - but I don't have one so I can't test it.
Can some one try this and any of the others above that take midi input and let me know if this one works and that the others do not.
keyboard7b.osm
sequencer ·
Hi Oddson
I have integrated this keyboard into an Editor I'm making for an old Synth module called a Cheetah MS6 (Curtis Synth chips inside it, but no knobs to program it, hence the editor attempt). Anyway, 2 questions.
1. Any objections to my use of this brilliant Keyboard OSM ?:D
2. Have you done any more optimisations to it (too much of an unskilled person to do any myself, at least for now) ?
3. I am likely to start to try and do some editors for my Yamaha SY85 and Korg Prophecy and was wondering if you had any objections to possible use of the keyboard for future donation/pay ware editors. Full credit for your build will be noted.
Err. Monty Python applies here, so it's 3 questions...
The future donation ware project will probably just remain just a pipedream, but I thought it best to ask just in case.
Thanks 🙂
oddson ·
I more or less gave up on the keyboard. I couldn't get the pretty version fast enough (that would be the answer to 'question the second').
As for 'question the first' (which is more or less the same as the third) no problem. (Giving credit is nice but not essential.)
If I've posted it, go ahead and use it. If someone took a more or less completed project and re-skinned it and tried to sell it I might object. (But even then all I'd do is make a better version and give it away.)
I could try to optimize the project a little more. Which version were you going to use?
There's still the option of a bitmapped optimization but I might need some help from some of the experts here to get it to work.
Glad you like it that much. 🙂
sequencer ·
Yeah. I do like it.
I'm using version 7b as it seemed to be the most optimised of the later versions. 🙂
It's not an essential addition for my editor as I can patch in via my Korg Prophecy as a controller but, if someone does not have a keyboard available to do such a thing, it is IMHO a necessity.
Anyway, thanks. My regards to you and Vancouver, lovely city.
oddson ·
7b is usable... still need to check to see if it's compatable with keyboards that use 0 veleocity instead of note-off.
Can anyone with such a keyboard check this for me?
I might have a look at a bitmapped version to see if the shadows can be reintroduced and still get acceptable performance... but it won't be for a while.
😀
oddson ·
There are some problems with my keyboards and there interaction with external MIDI. 🙁
I think I can fix them but you may want to hold of including it in any published projects or at least don't connect the incoming MIDI to the keyboard until I've got it fixed. 😕
keyboard7b has been updated in the above link (it was not showing keys as 'off' when external keyboard used) but other problems remain.
jobro ·
Well, time to put my creativity online. Unfortunatly I dunno a sh*t about SM graphics so the keyboards I produce are a little missaligned, but I'm sure that you guys can help out.
Most normal MIDI keyboards have an extra C added to the end of the keyboard, so I added it. Here is a 49 keys keyboard
OSM
76 keys keyboard E - G:
OSM
29 keys keyboard F - A:
OSM
oddson ·
Cool... i was planning on doing that (adding the missing C) but it looked like a lot of work and I though I'd wait 'til I redid the whole thing.
The method you've used is roughly what I planned to do but I see you haven't bothered to get it to resize based on the overall dimension (you get some blank space off the right side). It's actually a pretty good compromise given how much trouble I suspect it would be to have it resize all the way. 🙂
jobro ·
I have no knowledge how to do that, simply that's why I didn't do that.
oddson ·
Me either! 😕
It wouldn't be 'simple' but seeing what you've done has given me some ideas.
This project isn't on my 'front burner' right now (i get bored easily) but I might just take this as an impetus to start up again.
Thanks.
jobro ·
Never the less I like what you've done so far, thought that someone should pick up the pace to bring it a bit further.
ansuman ·
hi,
just as an excellent keyboard module a similar modulation module and pitch bend module can also be introduced into the list of examples...i hope that will be pretty appreciated...
djaram ·
Dear Oddson,
This is a great keyboard. I tried to look an inside of it and it seems you have not used any bitmap? that makes it much better.
Keep up the good work.
Regards,
oddson ·
Thanks 🙂
Yeah... that was the idea, to make a keyboard that was fully resizable using vector elements only.
(The missing upper C note really seems significant now... so I'd like to fully integrate Jobro's addition to it.)
If you review this thread you'll see that there was some discussion about rendering to bitmaps when the size has been selected to help with the speed issue.
It started just as a way to practice my SM graphics skills and knowledge and then it started to generate some interest.
I guess I should pick it up again and see where it gets me but I'm starting to have way too many half finished projects.
jobro ·
I will take a look at the internal structure and see if I can get the resize working.
oddson ·
jobro wrote: I will take a look at the internal structure and see if I can get the resize working.
Feel free... but it will likely take a while to get it figured out.
As I recall the resizing is pretty complicated.
[edit - turned out to be fairly easy once I figured out how I had done it the first time.]
I'm tempted to start from scratch to deal with all the issues together.
oddson ·
Before I start over... here's my last version (without shadows) but with the missing C added to the end.
The layout module in each octave has been split and some is now outside in the first level down. Also the octaves chain together to increment the octave number for each one and for the final C.
keyboard9.osm
jobro ·
Splendid! So how did you do the sizing of the last C?
dreamkeeper ·
jobro wrote: Splendid! So how did you do the sizing of the last C?
If I understand it correctly, it's not about sizing the last C alone, but adjusting the width and positioning of all keys depending on their number, so they fit into the GUI.
Go into layout > divide by # octaves, change the Plus last C integer to 0 (or 2 or 3) and see what happens. HTH
werner
oddson ·
...If I understand it correctly, it's not about sizing the last C alone, but adjusting the width and positioning of all keys depending on their number, so they fit into the GUI.
Right... Before I was dividing the space by the number of octaves and then dividing the octave space for the seven white keys. Now I multiply the number of octaves by 7 and add one for the number of white keys and then divide up the space. In the process I discovered I had some layout math inside the octave module that should have been in the first level.
jobro ·
Bug found in keyboard. Export to vst and only the white keys are exported.
jobro ·
Same bug found in the exe export as well.
oddson ·
Very odd... seems to be only on the last version. All the others don't have this.
There doesn't seem to be any significant difference so I'm at a loss. 😕
Tom7777 ·
No doub't Malc could find the cause, he is a master at that 😀 He is away at the moment though i think.
oddson ·
He might be able to see the difference but there must be a program bug behind this or it wouldn't work within SM and not as VST or exe.
Tom7777 ·
Yeah sounds like a program bug, SMs OSM and VST should be exactly the same.
dreamkeeper ·
Works here...
Ok, just kidding. 😈
Found the bug: You made the black key generator purgeable.
oddson ·
Really 😮
Umm... well then that would be my bug and not SMs. 😊
Good spotting... thanks much 🙂
Tom7777 ·
Yeah i didn't have the chance to check the latest yet but that most definately sounds like thats the reason why 😉 Nice find dreamkeeper 😀
jobro ·
That's really odd dk because the black keys are not purgeable.
electrogear ·
Hi Oddson,
When I use your keyboard in my OSM, I get crackles and pops in the audio. It's only when I can see the keyboard though. When I am inside a different module and I play a note the sound is fine.
Does anyone else get this problem?
Great work though. I'm sure it's probably just something I've done wrong anyway,
Mike
oddson ·
Sounds like CPU overload... the thing is a pig! 😊
You're not using the version with shadows are you? That one's unusable because of greedy redraw and complex graphics.
If you're not, make sure the keyboard module is not selected. For some reason graphic heavy modules draw more CPU when they're selected within SM.
I'd like to get it to be more usable but I've kinda lost interest in it since I think only a complete rethink/rebuild would give any significant improvement in performance.
Tom7777 ·
Didn't malc say the graphics CPU's seperate to the audio so it shouldn't have an effect on it or something along those lines, i never knew if i should believe that and stuff like this confuses me more so 😉 But then again i havent seen the file your talking about so it may have nothing to do with the graphics CPU level.
oddson ·
I know for a fact that GUI load can get so bad it starts to give audio glitches. It does have a lower priority but it can get in the way.
My keyboard stuff is very CPU heavy. If the module is selected it's much worse (I don't know why - it doesn't really make sense).
I'd like to hear back from electrogear if it is the selection problem.
Tom7777 ·
I know for a fact that GUI load can get so bad it starts to give audio glitches. It does have a lower priority but it can get in the way.
Yeah i definately agree, when i have said about this in the past and redraw issues causing clicks and stuff i was told the audio and graphics work seperately so they shouldn't effect each other, from my experience in the past and stuff like this though im not sure if i agree with that 🙂
electrogear ·
It wasn't a selection problem as such. The nature of my synth meant that I had to have the keyboard a few layers deep... and I couldn't press the keys using my mouse, but my SM knowledge is broadening (if that's a word hehe) every day, so I'll have a play with it again tomorrow night & I'll let you know some more details.
Cheers,
Mike
oddson ·
I've found a major bug in this. It was firing two note on messages whenever the key was clicked. Turned out the glissendo module was firing when a note was clicked as well as when a drag occured.
keyboard9.osm
I don't know if this will clear up electrogear's problem but it couldn't hurt.
EDIT -- it's using a MIDI keyboard and this thing at the same time. It's unusable for now. Sorry! 😊
malc ·
Tom7777 wrote: Didn't malc say the graphics CPU's seperate to the audio so it shouldn't have an effect on it or something along those lines
Ok so I'm a month late - didn't spot this before 🙂 The GUI and Audio are usually on separate threads. Mouse messages get sent at a lower priority and so you can be handlng as many messages as possible with your cpu showing 100% without any glitches or your PC hanging up.
However, it depends what's happening and if it's redraws or other processing (as opposed to mouse or other message handling) that takes the cpu up then it can indeed cause clicks, crackles glitches and hanging.
oddson ·
Malc... with V1 is out of the way could you take a look at the schematic for keyboard9 above.
It's pretty responsive until you hook midi incoming to it and then it can get pretty bogged down. It doesn't seem to happen right away but sooner or later you can get up to several seconds of delay between incoming and processing of note messages.
oddson ·
bump!
I'm pretty sure I need to rethink the whole note event mechanism but any help anyone can give in pointing me in the right direction would be great.
Dj-Grobe ·
I add testing teh keyboard, now, exelent work : )
What is the real latency the keyboard have?
Dj-Grobe ·
Some ide how can add 2 buttons for make when click button + keybopard go one otcave up, and con click - button make keyboard go one octave down?
nippybaynes404 ·
Great stuff Oddson, these keyboards a brilliant!!!
🙂 🙂 🙂
Do you mind if I use them in my projects???
infuzion ·
Dj-Grobe wrote: Some ide how can add 2 buttons for make when click button + keybopard go one otcave up, and con click - button make keyboard go one octave down?
I think it generates MIDI messages? If my memory serves me, an octave=12 notes, so just have something to +/-12 before the MIDI Event primitive.
Dj-Grobe ·
Yes infuzion that its the idea, i trying figue how, lol 🙂
exonerate ·
oddson have you checked this recently?
CPU doesn't seem to be a problem any more, something must of been fixed thats sorted this problem.
i've got it in a project of mine and it works fine 🙂
the only problem with it now is the glissando glide doesn't work, i'm guessing this is to do with the changes in how mouse overs work.
any ideas on how to get it working again?
cheers 😉
oddson ·
Malc has sorted me out on what happened with Mouse Over handling.
Some time ago there was a change to the old 'mouse over' primitive which took a V and A input and output a boolean that was true if the mouse was over the area. It no longer would signal true if the mouse was down when it entered the area - breaking my glissando feature.
But they added a 'mouse over' primitive which takes a Mouse and an Area input and works regardless of the state of the mouse button... they just forgot to announce it in the version update in which it was released.
The fix for my keyboard was dead simple... here's version 9 with the fix applied:
keyboard9fixed.osm
exonerate ·
great news!
thanks for the update
cheers 😉
exo
Tom7777 ·
Great work, thanks 🙂
Acrobat ·
Thank you oddson!
Your work is brilliant as always!!
exonerate ·
I've just been playing with the keyboard and i though it would be good feature to have velocity zones, so the note gets quieter the further up the key you press, I've noticed this before on a few synths.
Anyway I've added this functionality, i think it's a cool feature 🙂
http://www.box.net/shared/qry0e5p2z8
Let me know of any issues...
cheers 😉
Exo
echopark ·
Thanks ! Will try it.
Kara ·
Thank you, trying out now;....
k
Hollow Ghost ·
Thank you for this keyboard.
Do you also see keys remaining dark after you have dragged your mouse all across the keyboard? 😕
By the way, Merry Christmas! 🙂
sunsynth ·
Wow, this is such a great keyboard oddson!
And exo's velocity zones feature is a cool addition!
Thank you guys 4 your schematics 🙂
Walter
AngularMomentum ·
exonerate wrote: I've just been playing with the keyboard and i though it would be good feature to have velocity zones, so the note gets quieter the further up the key you press, I've noticed this before on a few synths.
Anyway I've added this functionality, i think it's a cool feature 🙂
http://www.box.net/shared/qry0e5p2z8
Let me know of any issues...
cheers 😉
Exo
A cool feature???! That's an awesome feature! 😍
stw ·
Hello members,
here comes my first gui attempt. 🙂
I added graphical keyzones to the keyboard which can bet set up with a control module inside the shematic.
In connection with a audio module which has to be placed in the signal path you can extend any synth/osc with keyboard zones for individual use. Graphical as well as audio crossfade feature is included.
The .osm comes with two zones that can easily be expanded
Hope you like it
infuzion ·
stw wrote: here comes my first gui attempt.
Looks nice!
I spent a year understanding SM's GUI & green system before moving on to SM's audio...
20081225 ·
Needless to say nothing. Just hope do something like this somelife.
djn12inch ·
i soooo needed this thank you very very much oddson!!!
Neptune ·
I really love this keyboard too and cant stop say thank you for this.
One real noobie question from my side:
Is is somehow possible to save and reload the "notes held" (right click on the note) in presets?
This would be a possible workaround to program sequences for C.Hackls arp.
Greetings
Neptune
oddson ·
Is is somehow possible to save and reload the "notes held" (right click on the note) in presets?
I guess it's possible but it's not likely the way to go... you'd have to establish a boolean parameter for each note which seems like overkill just to recall a chord.
RunBeerRun2 ·
This is great for me, I like to work without any midi controller attached, and the hold note comes in handy.
MortisDraco ·
Salvation at last!! 😀
jjs ·
Really Brilliant!
A pitty it is not a standard module!
It really deserves it!
In synthedit there is a little piano-roll available, so why not in SM...
Thanks for the great work! 🙂
Xtinct ·
jjs wrote: Really Brilliant!
A pitty it is not a standard module!
It really deserves it!
In synthedit there is a little piano-roll available, so why not in SM...
Thanks for the great work! 🙂
Seconded, also with the new update all the graphicly stuck notes and red loops have apparently disappeared.
Wrote something here? To have a post removed or your name hidden, write to [email protected].