Seite 1 von 1

pygame - play sound/music: grundlegegende Verständnisfragen

Verfasst: Donnerstag 13. Oktober 2011, 11:28
von djh
Hallo Leute,

sorry, newby-Frage, aber ich habe da offenbar etwas Grundlegendes nicht verstanden. Ich will aus einem Python-Script eine sound-Datei abspielen. Beim Stöbern im Internet bin ich daher auf pygame gestossen und ein ganz einfaches Bsp.-Programm. Wenn ich folgende Zeilen im interaktiven Modus dem Python-Interpreter übergebe, funktioniert das auch, aber wenn sie als Skript.py abspeichere und ausführen will, funktioniert das nicht.

so gehts:

Code: Alles auswählen

Python 2.6.5 (r265:79063, Apr 16 2010, 13:09:56) 
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pygame
>>> pygame.init()
(6, 0)
>>> pygame.mixer.music.load('/home/dirk/sounds/gong.wav')
>>> pygame.mixer.music.play()
>>> 
so nicht:

Code: Alles auswählen

#!/usr/bin/python
# -*- coding: utf-8 -*-

import pygame
pygame.init()
pygame.mixer.music.load("/home/dirk/sounds/gong.wav")
pygame.mixer.music.play()

# das hier war ein anderes Experiment - das funktioniert allerdings
#import subprocess
#subprocess.call("play /home/dirk/sounds/gong-chinese.wav", shell=True)

print "ende"
Das Skript läuft ohne Fehlermeldung bis zur Ausgabe von "ende" durch, aber ich höre nix!? Kann mir da einer vielleicht etwas auf die Sprünge helfen? Danke im voraus,
Grüße, Dirk

Re: pygame - play sound/music: grundlegegende Verständnisfra

Verfasst: Donnerstag 13. Oktober 2011, 12:24
von /me
djh hat geschrieben:Das Skript läuft ohne Fehlermeldung bis zur Ausgabe von "ende" durch, aber ich höre nix!? Kann mir da einer vielleicht etwas auf die Sprünge helfen?
Ich vermute mal, dass die Soundausgabe beim Beenden des Programms direkt abgebrochen wird. Bau doch mal am Ende einfach noch ein sleep oder ein raw_input ein um das Programm länger laufen zu lassen.

Re: pygame - play sound/music: grundlegegende Verständnisfra

Verfasst: Donnerstag 13. Oktober 2011, 12:44
von djh
Ah - danke! Sowohl raw_input als auch time.sleep(0) vor dem print-ende-Statement hilft hier ab.

So richtig verstehe ich das aber nicht: "wartet" das Statement nicht darauf, daß das vorhergehende abgearbeitet ist?

Re: pygame - play sound/music: grundlegegende Verständnisfra

Verfasst: Donnerstag 13. Oktober 2011, 12:53
von /me
djh hat geschrieben:So richtig verstehe ich das aber nicht: "wartet" das Statement nicht darauf, daß das vorhergehende abgearbeitet ist?
Nein, offensichtlich nicht. Es ist auch typischerweise nicht sinnvoll das Programm einzufrieren nur um Musik oder Sounds abzuspielen.

Stell dir einen Ego-Shooter vor. Du schießt die Pistole ab, dann wird der passende Sound abgespielt und währenddessen friert das Bild ein bis der Sound vorbei ist. Das wäre dann zwar eine einerseits interessante, andererseits aber völlig unbrauchbare Spielweise. Folglich erfolgt das Abspielen asynchron.

Re: pygame - play sound/music: grundlegegende Verständnisfra

Verfasst: Donnerstag 13. Oktober 2011, 13:12
von djh
Hmmja, in dem Zusammenhang leuchtet das ein. So gesehen ist das ja ganz pfiffig gelöst. :)

(A propos gelöst: Muß/kann ich den thread irgendwo als gelöst markieren? Seh's grad' nicht.)

Re: pygame - play sound/music: grundlegegende Verständnisfra

Verfasst: Donnerstag 13. Oktober 2011, 15:28
von snafu
djh hat geschrieben:(A propos gelöst: Muß/kann ich den thread irgendwo als gelöst markieren? Seh's grad' nicht.)
Nein, muss man hier zum Glück nicht.