Entwickler-Ecke

Multimedia / Grafik - Hintergrundmusik


ultraz06 - Mo 09.02.09 19:32
Titel: Hintergrundmusik
hi^^
ich habe folgendes problem ich will bei einem programm eine hintergrundmelodie laufen lassen


Delphi-Quelltext
1:
sndPlaySound(PChar(ExtractFilePath(ParamStr(0)) + '11.wav'),SND_aSYNC);                    


die soll ununterbrochen laufen.dazu will das wenn man auf die maus drückt ein geräusch kommt

sndPlaySound(PChar(ExtractFilePath(ParamStr(0)) + 'schuss.wav'),SND_aSYNC);

also ein schuss.
aber immer wenn der schuss kommt hört die melodie auf...
die melodie habe ich in form1.activate geschrieben.


jaenicke - Mo 09.02.09 19:58

Das wird so nicht gehen. Eine einfache Lösung wäre ein TMediaPlayer im Hintergrund für die Melodie und dazu sollte PlaySound gehen, eine schöne Lösung wäre die BASS DLL.


Delete - Mo 09.02.09 20:00

Oder FMOD [http://www.fmod.org/]


ultraz06 - Di 10.02.09 12:10

also soll ich den delphi mediaplayer für die hintergrundmelodie nehmen und playsound für den schuss?


jaenicke - Di 10.02.09 13:58

Das wäre eine Möglichkeit denke ich, ja.

Die Datenmenge wäre natürlich kleiner, wenn du MP3s und BASS z.B. oder FMOD nimmst. Und sauberer wäre die Lösung auch.


ultraz06 - Di 10.02.09 14:44

also soll ich die wav-datei in eine mp3 umwandeln oder was meinstdu mit mp3 und bass verstehe ich nicht was du damit meinst.


jaenicke - Di 10.02.09 15:03

Eine MP3 kannst du z.B. mit der BASS Bibliothek abspielen, das meinte ich:
http://www.un4seen.com/bass.html
Und MP3s brauchen ja signifikant weniger Platz als Wav-Dateien.


ultraz06 - Di 10.02.09 16:37

ich habe es so gemacht

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
var Pfad:string;
procedure TForm1.Button2Click(Sender: TObject);
begin
 begin
getdir(0,Pfad);
 with mediaplayer1 do
 begin filename:=Pfad+'11.wav';
 mediaplayer1.open;
 mediaplayer1.play;
 end;
 end;
  end;
end.

aber es kommt die fehlermeldung :
'Kann keinen Gerätetyp aus der angegebenen dateierweiterung ermitteln'


JayEff - Di 10.02.09 17:32

user profile iconultraz06 hat folgendes geschrieben Zum zitierten Posting springen:
getdir(0,Pfad);
Hast du dir schonmal angeguckt, was genau GetDir tut? :shock:
Niemals darfst du GetDir nutzen, um den Programmordner herauszufinden! Für den Programmordner empfielt sich eine von den folgenden Varianten:

Delphi-Quelltext
1:
2:
Pfad := ExtractFilePath(ParamStr(0)); //in ParamStr(0) ist der Pfad+Dateiname deiner Exe-Datei
Pfad := ExtractFilePath(Application.ExeName); //siehe ParamStr(0) ;)

Ausserdem solltest du auf den with-Block verzichten, der ist hier nicht nötig und sorgt für Verwirrung, da z.B. nicht eindeutig ist, ob du MediaPlayer1.MediaPlayer1.Open meinst oder Form1.MediaPlayer1.Open.
Für das eigentliche Problem hab ich aber keine Lösung, vielleicht hilft ja schon, einen funktionierenden Pfad zu nutzen ... ? :nixweiss:


ultraz06 - Di 10.02.09 17:42


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
var Pfad:string;
procedure TForm1.Button2Click(Sender: TObject);
begin
Pfad := ExtractFilePath(ParamStr(0))   ;
 with mediaplayer1 do
 begin filename:=Pfad+'11.wav';
 mediaplayer1.open;
 mediaplayer1.play;
 end;
 end;
end.

es kommt immernoch die fehlermeldung
'Kann keinen Gerätetyp aus der angegebenen dateierweiterung ermitteln'


jaenicke - Di 10.02.09 17:54

Bei mir funktioniert der Code 1:1 wie du ihn geschrieben hast. :nixweiss:

Das liegt dann an den entsprechenden Windowsfunktionen, aber wie es sein kann, dass die wav-Erweiterung nicht erkannt wird, keine Ahnung, das kann jeder Windows-PC sofort eigentlich.


JayEff - Di 10.02.09 17:56

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Das liegt dann an den entsprechenden Windowsfunktionen, aber wie es sein kann, dass die wav-Erweiterung nicht erkannt wird, keine Ahnung, das kann jeder Windows-PC sofort eigentlich.
Wäre es denkbar, dass die Datei eigentlich keine Wave Audio ist und der Mediaplayer merkt, dass Header und Endung nicht übereinstimmen? Ich kenn mich da jetzt weniger aus. :nixweiss:
Hast du es mal mit einer anderen Datei versucht?


jaenicke - Di 10.02.09 17:57

Dann sollte eigentlich die MCI-Meldung kommen, dass die Datei beschädigt ist. Die angegebene Fehlermeldung tritt schon vorher auf, wenn der entsprechende Handler für die Dateiendung gesucht wird.

Egal ob Windows 98 oder Windows Vista, bei mir funktioniert das mit einer gültigen Wavedatei auch.


ultraz06 - Di 10.02.09 18:11

es kommt die genau fehlermeldung EMCiDdevice error dann das mit dem gerät .
bei ner mp3 gehts a net


jaenicke - Di 10.02.09 18:13

Dass es mit MP3 nicht geht, ist normal.

Ich vermute, dass du in deinem System diesen Fehler hast:
http://support.microsoft.com/kb/171667/EN-US/


ultraz06 - Di 10.02.09 18:20

das habe ich auch schon nachgeschaut, aber war alles so eingestellt :(


jaenicke - Di 10.02.09 18:22

Dann schau dir eben z.B. die BASS Bibliothek an. Das ist ohnehin der bessere Weg und dann bist du unabhängig von solchen Fehlern.

Das mag zwar am Anfang etwas mehr Aufwand sein sich damit auseinanderzusetzen, lohnt aber in jedem Fall.


ultraz06 - Di 10.02.09 18:29

ok ich habe mir das jetzt gedownloadet aber ich blicke überhaupt nicht durch , da das ja auch noch englisch ist ^^


Boldar - Di 10.02.09 18:31

mmh, also kein englisch zu können is ne schlechte Vorraussetzung...


ultraz06 - Di 10.02.09 18:36

was heißt kein eng aber das ist schon sehr komplex


jaenicke - Di 10.02.09 19:09

Du könntest vielleicht etwas hiermit anfangen, das ist auf deutsch:
http://www.delphi-treff.de/tutorials/sonstiges/mein-einfacher-mp3-player/