The audio players use their own threading. In case of PulseAudio this is a thread from libpulse. So the application event loop should not be necessary. I did not have time to check it out yet, the current tests for media playback do not work :-(.
Rob Op woensdag 18 februari 2015 08:01:44 UTC+1 schreef Sebastian Meyer: > > I tried to put app.run() into its own thread. But it fails: > > from threading import Thread > import pyglet > > class SoundThread(Thread): > > def __init__(self, pyglet): > Thread.__init__(self) > self.pyglet = pyglet > > def run(self): > self.pyglet.app.run() > > sthread = SoundThread(pyglet) > sthread.start() > > def play_sound(): > path = "test.wav" > source = pyglet.media.load(path, streaming=False) > player.queue(source) > > If I call play_sound() it will play the sound once. Then, after it ended, > following error occurs: > > ArgumentError: argument 2: <type 'exceptions.TypeError'>: expected > CFunctionType instance instead of NoneType > > In the self.pyglet.app.run()inside the thread. > > > > I also make some tests with the code before adding the Thread and it seems > that the first sound is played and the queque does not jump to the next if > one is added to the queue. Reading player.source and player.time, after the > sound is played one time, says: source last played source, time is the > length of the audiofile. But it does not use the next source. I tried > player.next_source(); > player.play() if source is not None before adding to queue, but it makes > no difference. > > /Sebastian > > Am Dienstag, 17. Februar 2015 22:52:52 UTC+1 schrieb Sebastian Meyer: >> >> No. For testing I loaded all Sounds as pyglet.media.StaticSound into a >> dict and call it from there. Same there: only the first sound works. >> Maybe the missing pyglet-loop because I don't run pyglet.app.run() ? >> >> Am Dienstag, 17. Februar 2015 22:40:46 UTC+1 schrieb Richard Jones: >>> >>> Does pre-loading all the sounds make a difference? >>> >>> On Wed Feb 18 2015 at 8:21:19 AM Sebastian Meyer < >>> [email protected]> wrote: >>> >>>> Hmm, ok that sounds possible. >>>> I tried this: >>>> >>>> player = pyglet.media.Player() # init player >>>> player.play() # let player play >>>> >>>> def play_sound(name): >>>> path = name + ".wav" >>>> source = pyglet.media.load(path, streaming=False) >>>> print "Playing sound!", name >>>> player.queue(source) >>>> >>>> >>>> This works for exactly one sound. The second call of the function >>>> brings the print-statement but no sound. >>>> Did I missunderstand something? >>>> I tried also a player.play() after adding the source to the queue - >>>> same result. >>>> >>>> Thanks, >>>> Sebastian >>>> >>>> >>>> Am Dienstag, 17. Februar 2015 17:05:43 UTC+1 schrieb Rob: >>>> >>>>> I suspect a new player is created for every sound. The player >>>>> registers a stream. As long as the player is not destroyed, the stream >>>>> remains active. Try if you can control a single player: http://pyglet. >>>>> readthedocs.org/en/pyglet-1.2-maintenance/programming_guide/media.html >>>>> >>>>> Rob >>>>> >>>>> Op dinsdag 17 februari 2015 11:36:41 UTC+1 schreef Sebastian Meyer: >>>>>> >>>>>> Hi there! >>>>>> >>>>>> I have a small project which uses pyQt for the GUI. It is >>>>>> OS-independent and I want to add some sound-notifacation on it. >>>>>> After some searching I decided the best solution to have >>>>>> OS-independent sound-output is using pyglet for it. And it works great. >>>>>> >>>>>> But there is one problem: >>>>>> I'm using Linux with KDE and the mixer for adjusting the volume-level >>>>>> shows a modulator for every program that plays sound. >>>>>> But for my programm it shows a new regulator everytime I use pyglet >>>>>> to play a sound. So after the first sound, there appears one, after the >>>>>> second there are two and so on. >>>>>> >>>>>> I'm playing the sound as descripted here: >>>>>> http://www.pyglet.org/doc/programming_guide/playing_ >>>>>> sounds_and_music.html >>>>>> >>>>>> Any ideas? >>>>>> >>>>>> Cheers >>>>>> Sebastian >>>>>> >>>>> -- >>>> 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 http://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 http://groups.google.com/group/pyglet-users. For more options, visit https://groups.google.com/d/optout.
