Also unicode will give you caps if you type shift or caps lock. So if you
hold 'b' then hold shift and let go of 'b' I suspect you'll replicate the
issue. Although it looks like the "KEYUP" events don't have a unicode so
that may also be it.

It's better to use the key attribute which is independent of caps lock and
shift.

Jeffrey


On Sun, Jun 22, 2014 at 8:36 PM, Jeffrey Kleykamp <
jeffrey.kleyk...@gmail.com> wrote:

> It may help to have less duplicate code.
>
>                         if event.type is KEYDOWN or KEYUP:
>  x = event.unicode
>
>  if x in KEYLIST:
>                                         play_number = 100 if event.type ==
> KEYDOWN else 0
>                                         key_select = True if event.type ==
> KEYDOWN else False
>  v.keyMIDInn = KEY_TO_MIDI_NN[x] + v.octave
> player.note_on(v.keyMIDInn, play_number,1)  # play the note
>
> for key in keyboard_full:
> if v.keyMIDInn == key.midi_note_no:
> key.key_select = key_select
>
> Also your code may run into issues if you change KEYLIST and/or
> keyboard_full between frames. It may also be that you're losing the screen
> and pressing getting the keyup event off screen where you may not get it.
> You can check for the status of keys using the keyboard pygame module
> independent of events. That'll give you the status of the key right now.
> Also make sure you're completely using the event buffer. It may get full.
> If you use event.get(type) then all the other types stay on the list. So
> use pump to get rid of them.
>
> Jeffrey
>
>
>
> On Sun, Jun 22, 2014 at 3:43 AM, diliup gabadamudalige <dili...@gmail.com>
> wrote:
>
>> Dear Pygame experts/enthusiasts around the world,
>>
>> Having looked at some possible solutions on stackoverflow I optimized the
>> code to this
>>
>> #------------------- play keyboard via computer keyboard
>> -------------------
>>
>> if event.type is KEYDOWN:
>> x = event.unicode
>>
>> if x in KEYLIST:
>>  v.keyMIDInn = KEY_TO_MIDI_NN[x] + v.octave
>> player.note_on(v.keyMIDInn, 100,1)  # play the note
>>
>> for key in keyboard_full:
>> if v.keyMIDInn == key.midi_note_no:
>> key.key_select = True
>>
>> if event.type is KEYUP:
>> x = event.unicode
>>
>> if x in KEYLIST:
>>  v.keyMIDInn = KEY_TO_MIDI_NN[x] + v.octave
>> player.note_off(v.keyMIDInn, 0,1)
>>
>> for key in keyboard_full:
>>  if v.keyMIDInn == key.midi_note_no:
>> key.key_select = False
>>
>> Still, if I play the keyboard really fast there are stuck MIDI notes and
>> stuck animations.
>> What could be the reason?
>> Any help is much appreciated.
>>
>>
>>
>> On Sun, Jun 22, 2014 at 12:59 PM, diliup gabadamudalige <
>> dili...@gmail.com> wrote:
>>
>>> Below is my code
>>> the indention is wrong here but in the program it is correct
>>>
>>>                         if event.type is KEYDOWN:
>>>                              x = check_chr_key(event.key) if x in
>>> KEYLIST: if x in KEY_TO_MIDI_NN: # if key in midi note dict v.keyMIDInn =
>>> KEY_TO_MIDI_NN[x] + v.octave player.note_on(v.keyMIDInn, 100,1) # play the
>>> note
>>> for key in keyboard_full: if v.keyMIDInn == key.midi_note_no:
>>> key.key_select = True if event.type is KEYUP: x = check_chr_key(event.key)
>>> if x in KEYLIST: v.keyMIDInn = KEY_TO_MIDI_NN[x] + v.octave
>>> player.note_off(v.keyMIDInn, 0,1) for key in keyboard_full: if v.keyMIDInn
>>> == key.midi_note_no: key.key_select = False If I play the keyboard
>>> leisurely this works fine. But If I play the keyboard really fast
>>> sometimes the MIDI notes get stuck and so does the Animation ( the stuck
>>> MIDI note shows the keyboard note as down)
>>> I can't see anything wrong in the code. Is it that Pygame is not
>>> scanning the keyboard fast enough? What is the work around to this?
>>>
>>> --
>>> Diliup Gabadamudalige
>>>
>>> http://www.diliupg.com
>>> http://soft.diliupg.com/
>>>
>>>
>>> **********************************************************************************************
>>> This e-mail is confidential. It may also be legally privileged. If you
>>> are not the intended recipient or have received it in error, please delete
>>> it and all copies from your system and notify the sender immediately by
>>> return e-mail. Any unauthorized reading, reproducing, printing or further
>>> dissemination of this e-mail or its contents is strictly prohibited and may
>>> be unlawful. Internet communications cannot be guaranteed to be timely,
>>> secure, error or virus-free. The sender does not accept liability for any
>>> errors or omissions.
>>>
>>> **********************************************************************************************
>>>
>>>
>>
>>
>> --
>> Diliup Gabadamudalige
>>
>> http://www.diliupg.com
>> http://soft.diliupg.com/
>>
>>
>> **********************************************************************************************
>> This e-mail is confidential. It may also be legally privileged. If you
>> are not the intended recipient or have received it in error, please delete
>> it and all copies from your system and notify the sender immediately by
>> return e-mail. Any unauthorized reading, reproducing, printing or further
>> dissemination of this e-mail or its contents is strictly prohibited and may
>> be unlawful. Internet communications cannot be guaranteed to be timely,
>> secure, error or virus-free. The sender does not accept liability for any
>> errors or omissions.
>>
>> **********************************************************************************************
>>
>>
>
>
> --
>
>       Jeffrey Kleykamp
>



-- 

      Jeffrey Kleykamp

Reply via email to