It should in the end. But unfortunately I think that is currently not the
case yet.

Rob

On 4 July 2017 at 12:24, 杨金骉 <[email protected]> wrote:

> @Rob, would the new implementation allow me to accomplish my need?
>
>
> Best regards,
> Jinbiao Yang(杨金骉)
>
> ------------------------------------------------------------
> -----------------
> Cell Phone: +86 13162513165 <+86%20131%206251%203165>
> Email: [email protected]
>
> Research Associate,
> NYU-ECNU Institute of Brain and Cognitive Science,
> NYU Shanghai,
> 3663 North Zhongshan Road, Shanghai, China 200062
>
> 2017-07-04 18:21 GMT+08:00 杨金骉 <[email protected]>:
>
>> I'm afriad not.
>> I want the sound keep playing in the period no matter I press, hold, or
>> release the key. But your solution will stop the sound when the event
>> handler (check_key_status) working.
>>
>>
>> Best regards,
>> Jinbiao Yang(杨金骉)
>>
>> ------------------------------------------------------------
>> -----------------
>> Cell Phone: +86 13162513165 <+86%20131%206251%203165>
>> Email: [email protected]
>>
>> Research Associate,
>> NYU-ECNU Institute of Brain and Cognitive Science,
>> NYU Shanghai,
>> 3663 North Zhongshan Road, Shanghai, China 200062
>>
>> 2017-07-04 15:06 GMT+08:00 Benjamin Moran <[email protected]>:
>>
>>> For instant key press feedback, the window.on_key_press event is the
>>> easiest method.
>>> If you want to check for held-in keys, maybe a KeyStateHandler would
>>> work.
>>> http://pyglet.readthedocs.io/en/latest/programming_guide/key
>>> board.html#remembering-key-state
>>>
>>> You could then make a function to query the key state:
>>>
>>> from pyglet.window import key
>>>
>>> window = pyglet.window.Window()
>>> keys = key.KeyStateHandler()
>>> window.push_handlers(keys)
>>>
>>> def check_key_status(dt):
>>>     global keys
>>>     if keys[key.J]:
>>>         do_something()
>>>
>>> pyglet.clock.schedule_interval(check_key_status, 1/60.0)
>>>
>>>
>>>
>>> Would that work?
>>>
>>>
>>>
>>>
>>> On Tuesday, July 4, 2017 at 2:27:15 PM UTC+9, 杨金骉 wrote:
>>>>
>>>> Thanks for your reply!
>>>>
>>>> - Is it necessary to create your own event loop?
>>>> I built a toolbox for the psychological/neuroscience experiments. The
>>>> pyglet.app.run() might confuse the user so I sidestepped it and made a flat
>>>> way (e.g. http://expy.readthedocs.io/en/latest/quickstart/) for the
>>>> coders of experiments.
>>>>
>>>> - My  project
>>>> I'm writing a function that enables the experiment participants to
>>>> adjust the volume or pitch of the sound output by pressing keyboard
>>>> continuously.
>>>> In that way, I need the sound playing track and the keyboard sensor
>>>> working in different threads.
>>>> I'll be appreciated if you have the better solution!
>>>>
>>>>
>>>> Best regards,
>>>> Jinbiao Yang(杨金骉)
>>>>
>>>> ------------------------------------------------------------
>>>> -----------------
>>>> Cell Phone: +86 13162513165 <+86%20131%206251%203165>
>>>> Email: [email protected]
>>>>
>>>> Research Associate,
>>>> NYU-ECNU Institute of Brain and Cognitive Science,
>>>> NYU Shanghai,
>>>> 3663 North Zhongshan Road, Shanghai, China 200062
>>>>
>>>> 2017-07-04 12:15 GMT+08:00 Benjamin Moran <[email protected]>:
>>>>
>>>>> I don't think win.dispatch_events() will work unless it's on the main
>>>>> thread, but I haven't look at this code recently.
>>>>> Is it necessary to create your own event loop? The Player class
>>>>> already uses threads internally for playback.
>>>>>
>>>>> There is an example in the pyglet repositories that might be useful:
>>>>> https://bitbucket.org/pyglet/pyglet/src/aca0272d8f04e75f3452
>>>>> 72f8e1b5027ec8091586/examples/synthesizer.py?at=default&file
>>>>> viewer=file-view-default
>>>>>
>>>>> If that doesn't help, could you descrbe your project more?
>>>>>
>>>>> On Monday, July 3, 2017 at 2:04:04 PM UTC+9, 杨金骉 wrote:
>>>>>>
>>>>>> No. I just used loop + dispatch_events() manually.
>>>>>>
>>>>>>
>>>>>> On Jul 3, 2017 1:00 PM, "Benjamin Moran" <[email protected]> wrote:
>>>>>>
>>>>>>> Are you using pyglet.app.run() in your code?
>>>>>>>
>>>>>>>
>>>>>>> On Sunday, July 2, 2017 at 11:29:12 PM UTC+9, 杨金骉 wrote:
>>>>>>>>
>>>>>>>> I'm building a real-time sound controller.
>>>>>>>> I tried to put the sound player and detector of keypress in
>>>>>>>> different threads, and used a variable as the messenger. Below is the 
>>>>>>>> demo
>>>>>>>> code:
>>>>>>>>
>>>>>>>> ## detector
>>>>>>>> def wait():
>>>>>>>>     while True:
>>>>>>>>         win.dispatch_events()
>>>>>>>>
>>>>>>>>                      shared.pressing = e['key'] # the got key
>>>>>>>>
>>>>>>>>         if shared.figure_released:
>>>>>>>>             shared.pressing = None
>>>>>>>>
>>>>>>>>         time.sleep(0.01)
>>>>>>>>
>>>>>>>>
>>>>>>>> td = threading.Thread(target=wait)
>>>>>>>> td.start()
>>>>>>>>
>>>>>>>> ## player
>>>>>>>> while 1:
>>>>>>>>    if shared.pressing=='k':
>>>>>>>>        # pitch up
>>>>>>>>    elif shared.pressing=='j':
>>>>>>>>        # pitch down
>>>>>>>>
>>>>>>>> And then I got the error:
>>>>>>>>
>>>>>>>>> *RuntimeError: EventLoop.run() must be called from the same thread
>>>>>>>>> that imports pyglet.app*
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> Why can't pyglet get the events from another thread?
>>>>>>>>
>>>>>>> --
>>>>>>> You received this message because you are subscribed to a topic in
>>>>>>> the Google Groups "pyglet-users" group.
>>>>>>> To unsubscribe from this topic, visit https://groups.google.com/d/to
>>>>>>> pic/pyglet-users/PrD2Z8O1qnI/unsubscribe.
>>>>>>> To unsubscribe from this group and all its topics, send an email to
>>>>>>> [email protected].
>>>>>>> To post to this group, send email to [email protected].
>>>>>>> Visit this group at https://groups.google.com/group/pyglet-users.
>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>
>>>>>> --
>>>>> You received this message because you are subscribed to a topic in the
>>>>> Google Groups "pyglet-users" group.
>>>>> To unsubscribe from this topic, visit https://groups.google.com/d/to
>>>>> pic/pyglet-users/PrD2Z8O1qnI/unsubscribe.
>>>>> To unsubscribe from this group and all its topics, send an email to
>>>>> [email protected].
>>>>> To post to this group, send email to [email protected].
>>>>> Visit this group at https://groups.google.com/group/pyglet-users.
>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>
>>>>
>>>> --
>>> You received this message because you are subscribed to a topic in the
>>> Google Groups "pyglet-users" group.
>>> To unsubscribe from this topic, visit https://groups.google.com/d/to
>>> pic/pyglet-users/PrD2Z8O1qnI/unsubscribe.
>>> To unsubscribe from this group and all its topics, send an email to
>>> [email protected].
>>> To post to this group, send email to [email protected].
>>> Visit this group at https://groups.google.com/group/pyglet-users.
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>
> --
> You received this message because you are subscribed to the Google Groups
> "pyglet-users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at https://groups.google.com/group/pyglet-users.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"pyglet-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/pyglet-users.
For more options, visit https://groups.google.com/d/optout.

Reply via email to