Welcome

4 views
Skip to first unread message

Andrew Wagner

unread,
Oct 21, 2009, 2:48:38 PM10/21/09
to diyke...@googlegroups.com, francesco....@gmail.com
Welcome to DIY Keyboard, Francesco!

eFFeeMMe

unread,
Oct 22, 2009, 6:13:50 PM10/22/09
to diykeyboard
Heh, right while I was thinking of writing a presentation message :)

Hello everybody, I'm an italian high school student, planning to
become a programmer(been writing in Python for 5 years now). I love
open-source, and I hope to contribute as soon as possible.

I've been thinking of making a MIDI controller keyboard for some weeks
now. I haven't created anything yet, not even CAD designs. Rather,
I've spent hours on the internet searching all the information I can
about making piano-like instruments. There's probably no market at all
here for alternative layouts, so I'm only concerned with making a
single keyboard.
I hope to build a keyboard with a compact Janko layout.

Here's what I think are the steps involved:
-sketching out the mechanical design using Rhinoscript(Your work in
that regard is inspiring, Andrew!)
-designing a circuit schematic, adapting it to a PCB(perhaps Python
could do that. It would be very hard to code, though)
-getting the PCB printed and shipped to me
-making the keys(out of wood)

Finally, assembling it all. And then, just maybe, learning how to play
it :p

A few details I've been thinking about:
-the key action. It has got to be weighted, and well. I would be
playing guitar if I didn't care about piano and forte. Harpsichord
keys, as seen at http://sankey.ws/action.html , seem like an
interesting starting point.
-the key speed sensing. I'm not an expert in circuits by any means,
but instead of using two sensors I was thinking about using a single
contact sensor, which the key scrapes while going down. Speed is
calculated by checking how long the sensor was pressed.

Since I tend to lose motivation veery easily(the fact that I prefer IM
over discussion boards doesn't help), I hope to keep myself and you
interested by documenting the process, and every prototype inbetween
(single-key prototypes, breadboard circuits, etc.). I still won't be
useful to any of you for a while though, that's why I was holding out
on presenting myself.

Andrew Wagner

unread,
Oct 22, 2009, 9:41:08 PM10/22/09
to diyke...@googlegroups.com
On Thu, Oct 22, 2009 at 5:13 PM, eFFeeMMe
<francesco....@gmail.com> wrote:
>
> Heh, right while I was thinking of writing a presentation message :)
>
> Hello everybody, I'm an italian high school student, planning to
> become a programmer(been writing in Python for 5 years now). I love
> open-source, and I hope to contribute as soon as possible.

> Here's what I think are the steps involved:


> -sketching out the mechanical design using Rhinoscript(Your work in
> that regard is inspiring, Andrew!)

Thanks! I'm a bit stalled on that since this is the last year of my
Ph.D., but my plan was to switch to the Python bindings around Open
Cascade. It's nowhere near as polished a product as Rhino and the API
is rather daunting, but you get to use Python instead of VBScript, and
there's no financial barrier. I'd get a kick out anyone making use of
my code, even minimally, and would be happy to answer questions. I
fear there are parts of the code that may be hard to follow without a
diagram; ask if you get stuck!

> -designing a circuit schematic, adapting it to a PCB(perhaps Python
> could do that. It would be very hard to code, though)

Writing your own EDA tools is probably not the way to go.

> -getting the PCB printed and shipped to me

That's the easy part.

> -making the keys(out of wood)

If your plan is to carve keys for a single keyboard out of wood,
you'll probably be better served by some paper templates to help you
get the basic geometry right, and then winging the parts that are hard
to draw a cad model for. I have a few hand-written postscript files
in the repository that you might find useful if you go this route.

> A few details I've been thinking about:
> -the key action. It has got to be weighted, and well. I would be
> playing guitar if I didn't care about piano and forte. Harpsichord
> keys, as seen at http://sankey.ws/action.html , seem like an
> interesting starting point.

Have you played on a Harpsichord? The keys are very light except for
the resistance of the plectrum. Playing a piano doesn't feel like
you're hitting something with a hammer, but playing a harpsichord
feels very much like plucking a string.

> -the key speed sensing. I'm not an expert in circuits by any means,
> but instead of using two sensors I was thinking about using a single
> contact sensor, which the key scrapes while going down. Speed is
> calculated by checking how long the sensor was pressed.

How do you know if the key is down or up?

> Since I tend to lose motivation veery easily(the fact that I prefer IM
> over discussion boards doesn't help), I hope to keep myself and you
> interested by documenting the process, and every prototype inbetween
> (single-key prototypes, breadboard circuits, etc.). I still won't be
> useful to any of you for a while though, that's why I was holding out
> on presenting myself.

Great! Let me know if you want to use any of the diykeyboard
resources; I can get you set up on the svn repository and/or the wiki.

If you want to get to a finished keyboard in a hurry and are already
willing to do a lot of manual work in making the keys, you might
consider taking Ken up on his offer of a free set of key adaptors for
one of the m-audio keyboards, and then epoxy on your own key tops.
You can ask him if his offer still stands. Alternatively, you could
buy the keyboard and modify the keys directly.

A while ago I actually tried to merge the CAD models he commissioned
with my script for generating key tops. I'm sure there's a way, but I
didn't get very far. If you successfully combine them, you could have
a couple keys rapid prototyped, duplicate them by resin casting, and
then have keys that fit right into an existing keyboard. Perhaps you
could also physically combine a chopped off keyboard key with a
rapid-prototyped key top, and resin-cast duplicate that.

Cheers,
Drew

Ken on Google Rushton

unread,
Oct 23, 2009, 3:06:43 AM10/23/09
to diyke...@googlegroups.com
Hi, as always, we welcome contributors.

I've been puttering around on stuff like this for a while. You may have read my MusicScienceGuy blog. 
I gave my 2 handmade M-Audio ES-88 Keyboard conversion kits away (I'm currently using Axis-49s instead) but you may be able to get them from the people I gave them to - they seen not to be using them :-((

Ken. 

eFFeeMMe

unread,
Oct 23, 2009, 10:15:12 AM10/23/09
to diykeyboard
On Oct 23, 3:41 am, Andrew Wagner <drewm1...@gmail.com> wrote:
> Thanks! I'm a bit stalled on that since this is the last year of my
> Ph.D., but my plan was to switch to the Python bindings around Open
> Cascade. It's nowhere near as polished a product as Rhino and the API
> is rather daunting, but you get to use Python instead of VBScript, and
> there's no financial barrier. I'd get a kick out anyone making use of
> my code, even minimally, and would be happy to answer questions. I
> fear there are parts of the code that may be hard to follow without a
> diagram; ask if you get stuck!

Well, luckily my father has been buying Rhino since v1.0 using my edu
license, for hobby reasons. Since it's a nice software, I might as
well use it. Of course I'd love to script the keyboard in Python...
But VBScript looks manageable.

> Writing your own EDA tools is probably not the way to go.

Not a full blown EDA application, just a script to calculate paths to
and from components on a board(and perhaps not even output gerber
files, if that's too much work). That shouldn't be hard, I could adapt
one of my pathfinding scripts to do just that. The hard part would be
perfecting the circuit. How could the software know it's doing good
(area extimates?)? How would it know how to improve? A friend of mine
once fiddled a bit with genetic programming, I could start from there.

> Have you played on a Harpsichord? The keys are very light except for
> the resistance of the plectrum. Playing a piano doesn't feel like
> you're hitting something with a hammer, but playing a harpsichord
> feels very much like plucking a string.
Never played on an harpsichord, but I guessed it would feel like that.
I don't mean to implement any plucking :) I was just attracted by the
vertical pins holding keys together and providing the pivoting point,
and the proportions. A better idea of what I'd try first is the Kawai
MP8's keybed, as seen at http://www.youtube.com/watch?v=_Kut2kcdjPo at
1:30, but without the hammers. The lack of them would make it differ
from a piano, but maybe no expressiveness is lost. I don't know.
That's why I'll be prototyping :p

> How do you know if the key is down or up?

Well, it hopefully starts up. Then software keeps track of its position
(a bool per key). It could be fooled, I'm not yet sure how easily.

> Great! Let me know if you want to use any of the diykeyboard
> resources; I can get you set up on the svn repository and/or the wiki.

Sure! If anything, to make that "Keybed Action" image on the wiki a
bit smaller :p

> If you want to get to a finished keyboard in a hurry and are already
> willing to do a lot of manual work in making the keys, you might
> consider taking Ken up on his offer of a free set of key adaptors for
> one of the m-audio keyboards, and then epoxy on your own key tops.
> You can ask him if his offer still stands. Alternatively, you could
> buy the keyboard and modify the keys directly.
>
> A while ago I actually tried to merge the CAD models he commissioned
> with my script for generating key tops. I'm sure there's a way, but I
> didn't get very far. If you successfully combine them, you could have
> a couple keys rapid prototyped, duplicate them by resin casting, and
> then have keys that fit right into an existing keyboard. Perhaps you
> could also physically combine a chopped off keyboard key with a
> rapid-prototyped key top, and resin-cast duplicate that.

I'm in no hurry. I bought a Kawai MP-5 a month or so ago, because I
still intend to improve my piano playing(had lessons as a kid, but I
want to do things properly now). However, while playing it I can't
stop thinking "this would be easier on a Janko" every now and then.
That's among my reasons, too.

By the way, are there good Janko notations out there?

On Oct 23, 9:06 am, Ken on Google Rushton <bogrush...@gmail.com>
wrote:
> Hi, as always, we welcome contributors.
> I've been puttering around on stuff like this for a while. You may have read
> my MusicScienceGuy <http://musicscienceguy.vox.com/>blog. I gave my 2
> handmade M-Audio ES-88 Keyboard conversion kits away (I'm currently using
> Axis-49s instead) but you may be able to get them from the people I gave
> them to - they seen not to be using them :-((
>
> Ken.

Hi, yeah I've read your blog :) It was one of the first things to come
up while searching for alternative layouts, and it's been very useful.
I'm not going to make an instrument as revolutionary as yours, but
you've still helped me get a good view of all the possibilities of
alternative keyboards. As I said above, I'm not really in search of
quick adapters. Still, thank you!

eFFeeMMe

unread,
Oct 23, 2009, 2:27:02 PM10/23/09
to diykeyboard
Alright. Andrew's Rhinoscript code seemed straightforward up to the
point where I actually ran it. After opening Rhino, and loading the
geom, misc, parameters, and the janko script, in order, the janko
script gives an error on line 11, char 1: object doesn't support
method Rhino.ATan2. Debugging ain't easy.

Andrew Wagner

unread,
Oct 23, 2009, 3:00:36 PM10/23/09
to diyke...@googlegroups.com
On Fri, Oct 23, 2009 at 9:15 AM, eFFeeMMe
<francesco....@gmail.com> wrote:
> Well, luckily my father has been buying Rhino since v1.0 using my edu
> license, for hobby reasons. Since it's a nice software, I might as
> well use it. Of course I'd love to script the keyboard in Python...
> But VBScript looks manageable.
That's a lucky stroke!

>> Writing your own EDA tools is probably not the way to go.
>
> Not a full blown EDA application, just a script to calculate paths to
> and from components on a board(and perhaps not even output gerber
> files, if that's too much work). That shouldn't be hard, I could adapt
> one of my pathfinding scripts to do just that. The hard part would be
> perfecting the circuit. How could the software know it's doing good
> (area extimates?)? How would it know how to improve? A friend of mine
> once fiddled a bit with genetic programming, I could start from there.

Autorouting is a rather interesting problem. Many Ph.D. theses have
been, and probably still will, be written on the topic. Maybe it will
be your thesis! I couldn't find the link I was looking for, but

Here's one:
http://www.wand.net.nz/~amb33/toporouter/

Here's another:
http://intranet.cs.man.ac.uk/apt/projects/tools/mucs-pcb/

>> How do you know if the key is down or up?
>
> Well, it hopefully starts up. Then software keeps track of its position
> (a bool per key). It could be fooled, I'm not yet sure how easily.

What if the key changes direction while on the contact?

>> Great!  Let me know if you want to use any of the diykeyboard
>> resources; I can get you set up on the svn repository and/or the wiki.
>
> Sure! If anything, to make that "Keybed Action" image on the wiki a
> bit smaller :p

fixed it.

> By the way, are there good Janko notations out there?

I like the idea of Twinline Notation by Thomas Reed. I have tried
reading a Bach invention in Twinline, but until I have a Janko to play
on, there is too much cognitive dissonance mapping between a uniform
notation and a traditional keyboard layout to make it pay off. If you
want to discuss notations, the best place for that is the music
notation project's e-mail list. Last I checked, progress on music
notation had effectively stalled because they don't have anyone who
knows enough to hack on Lillypond.

Twinline:

http://musicnotation.org/musicnotations/2linesmajorthirdcompact.html

The last person who knew enough to hack alternative notations into
Lilypond, but has abandoned the project:

http://kelphead.org/chromatic/

Cheers,
Drew

Andrew Wagner

unread,
Oct 23, 2009, 3:14:05 PM10/23/09
to diyke...@googlegroups.com
Sounds like your version of Rhino doesn't have a two parameter version
of arctan. I'd either update Rhino, or hack together an ATan2 routine
by wrapping the built-in atan function with an if/else statement.

Cheers,
Drew
Reply all
Reply to author
Forward
0 new messages