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 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/aca0272d8f04e75f345272f8e1b502 > 7ec8091586/examples/synthesizer.py?at=default&fileviewer=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/ > topic/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.
