Re: [LAU] GPIO to alsa

From: Raphaël Mouneyres <rmouneyres@email-addr-hidden>
Date: Sun Feb 28 2016 - 21:47:59 EET

> I was originally planning to take my $3 keyboard and cut it up into 4 switch rows and rewire it, and plug the USB into into my RPi... done, I have the SW to compile on the rpi already to go :) The "rollover" is only 4 and it would probably be nice to have more, but a lot of the mechanical KB have "n rollover" if they are used with PS2. So I am going to see if I can set up one of the RPi serial lines to deal with that.

hello Len, I had deep^ly looked at you excellent work with this keyboard midi controller when you mentioned it on the list. Excellent work !

>
>> After searching for information, nothing revelant was found, except a experimental python script to read gpio and using the mididings library to output messages.
>
> What kind of a keyboard for what use? If you mean a piano style keyboard then latency becomes more important. I would suggest script may not be the best way to go. c or c++ makes more sense.

oops, yes my question is about Piano/Organ keyboards.
C programming is the intended way

>
>> Is there a existing project which would scan rows/colums of a keyboard from the designated(configured) gpios, and throw midi message to an alsa midi port ?
>
> My next phase for midikb (the SW I used above) is to add ALSA MIDI to the mix. However, have you looked at:
> http://ucapps.de/
> http://wiki.midibox.org/
> They do not use the RPi mostly because this project has been around longer than the RPi.

Let me explain why I try to know if this is possible :
The raspberry board is intended to run a single organ/piano application (jackd is not mandatory here) as a standalone board.
In order to keep the keyboard size and electronics to a minimum, using the onboard gpios for keyboard scanning would be wonderfull.
Be aware that for now the raspberry is running perfectly with a cheap USB MIDI keyboard.

>
>> Would such a program better be a kernel module or a userland program ?
>
> Making a kernel module/patch is at another level of programming which i may attempt some day by starting with the snd-serial-u16550 or mpu401 code.

This is why it could be a good training for me aswell.
Using the snd-serial-u16550 and adding the scanning code was part of the plan, and I was wondering if anyone tried it before.
It looks like nobody did ;)

> Placement of diodes on switches is important to allow chording (more than one switch at a time).

The keyboards I have (from unrepaired pianos/organs) have all the diode matrix in place. Ready to use.

> After you have this input you will want to do some debounce. Then you have a list of keys that are down. What you do with them from there is up to you, some kind of a lookup table to convert from key to MIDI note... 8 address by 8 data lines will give you 64 keys. Thats 16 GPIO lines for no external circuitry. The RPi is not overflowing with gpio that are not multipurpose... so maybe try this:
> http://pi.gadgetoid.com/article/building-the-pico-piduino

this is only a lightweight arduino way to do the thing, I would not learn anything new using this µp, and I love to learn new things.
Would it be that nobody tried it before because it is so easy to do with an external µp ?

> or this:
> http://www.hardkernel.com/main/products/prdt_info.php?g_code=G135390529643

would better use multiplexers on the GPIOs

>
> Not very comprehensive for sure. However, that is what DIY is all about, Take the bits, do research, make something new.

indeed, your answers are part of the quest.

Raphaël
_______________________________________________
Linux-audio-user mailing list
Linux-audio-user@email-addr-hidden
http://lists.linuxaudio.org/listinfo/linux-audio-user
Received on Mon Feb 29 00:15:02 2016

This archive was generated by hypermail 2.1.8 : Mon Feb 29 2016 - 00:15:02 EET