Entwickler-Ecke

Multimedia / Grafik - Kurze Audiodateien in das Programm einbinden


Baltus - Do 17.05.07 12:50
Titel: Kurze Audiodateien in das Programm einbinden
Hallo,
ich hab schon überall geschaut, doch alles hat irgendwie nicht so recht geklappt. Also ich möchte kurze Audiodateien in meine Anwendung einbinden, soll heißen, dass die Anwendung größer wird und ich die Sounds auch dann abspielen kann, wenn die Anwendung nicht im selben Ordner, wie die Audiodateien liegt. Oder dass ich nur eine Resourcendatei immer mit der Anwedung sein muss, doch aus resourcen konnte ich bis jetzt noch keinen einzigen Sound abspielen, nur aus WAVE. Kenn ihr vielleicht ein Programm, mit dem man .res Dateien erzeugen kann, mit WAVE-Dateien drin?!
Außerdem möchte ich gerne mehrere Sounds gleichzeitig abspielen, da es sich um ein kleines Spiel handelt. Also eine Hintergrundmusik und dann noch Geräusche von Gegnern, Angriffen, Umgebung etc.

Danke schon mal im voraus. :)

MfG


Chryzler - Do 17.05.07 13:04



Baltus - Do 17.05.07 13:25

Ja SUPER danke!!!! :)
Aber wie kann ich mehrere Sounds gleichzeitig abspielen?? Bis jetzt wird der erste immer gestoppt und dann der zweite Abgespielt...Ich möchte ja, dass zusätzlich zum ersten noch der zweite oder auch noch ein dritter abgespielt wird...
Kann ich auf die weiße auch Bitmaps und Icons in die Resourcedatei laden?

MfG


Chryzler - Do 17.05.07 13:32

user profile iconBaltus hat folgendes geschrieben:
Kann ich auf die weiße auch Bitmaps und Icons in die Resourcedatei laden?

Klar kannst du auch Bilder einfügen, die kannst du dann wieder mit

Delphi-Quelltext
1:
  Image1.Picture.Bitmap.LoadFromResourceID(HInstance, 3);                    

in ein Image laden. Hier das Bild mit dem Index 3.


user profile iconBaltus hat folgendes geschrieben:
Ja SUPER danke!!!! :)
Aber wie kann ich mehrere Sounds gleichzeitig abspielen?? Bis jetzt wird der erste immer gestoppt und dann der zweite Abgespielt...Ich möchte ja, dass zusätzlich zum ersten noch der zweite oder auch noch ein dritter abgespielt wird...

Leider ist meine Delphi Hilfe seit ein paar Tagen Schrott, deswegen kann ich dir nicht genau sagen, was du ändern musst. Versuch mal

Delphi-Quelltext
1:
  PlaySound(PChar(1), HInstance, snd_Memory or snd_Resource);                    


Baltus - Do 17.05.07 13:51


Delphi-Quelltext
1:
PlaySound(PChar(1), HInstance, snd_Memory or snd_Resource);                    

Es wird zwar noch Musik abgespielt, jedoch ist das Programm solange der Sound abgespielt wird nicht ansprechbar...


neocox - Fr 24.04.09 18:24

erstma danke... funzt auch bei mir ;) wie kann ich den sound als loop abspielen lassen ? also endlos ?


Narses - Fr 24.04.09 18:41

Moin!

user profile iconneocox hat folgendes geschrieben Zum zitierten Posting springen:
erstma danke... funzt auch bei mir ;) wie kann ich den sound als loop abspielen lassen ? also endlos ?
Schau dir doch mal die entsprechenden Konstanten in der mmSystem.pas an oder drück Strg+Space beim letzten Parameter. Dann überlegen wir noch mal kurz, was auf Englisch wiederholen, endlos, Schleife, etc.pp. heißen könnte... "loop", richtig. :zwinker:

cu
Narses


neocox - Fr 24.04.09 18:52

naja ich wusste schon, dass es loop is. aber es funzt net - ich gebs irgendwie verkehrt ein

Delphi-Quelltext
1:
2:
PlaySound(PChar(1), hInstance, SND_ASYNC or SND_MEMORY or SND_RESOURCE);
SND_Loop = 2;

aber is ja falsch. ich find die richtige lösung net

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt


Narses - Fr 24.04.09 18:57

Moin!


Delphi-Quelltext
1:
PlaySound(PChar(1), hInstance, SND_ASYNC or SND_MEMORY or SND_RESOURCE or SND_LOOP);                    
Na, so wie die anderen Flags eben auch... :D

cu
Narses


neocox - Fr 24.04.09 19:14

so hatte ich das:


Delphi-Quelltext
1:
PlaySound(PChar(1), hInstance, SND_ASYNC or SND_MEMORY or SND_RESOURCE or SND_LOOP=3)                    


also für 3 wiederholungen ;)

Moderiert von user profile iconNarses: Color- durch Highlight-Tag ersetzt


jaenicke - Fr 24.04.09 19:20

SND_LOOP sagt nur, dass wiederholt werden soll, eine Anzahl gibts da nicht...
Siehe Dokumentation: http://msdn.microsoft.com/en-us/library/ms712879.aspx


ness - Di 21.07.09 05:07

BEI MIR FUNKTIONIERT DAS ALLES NICHT!
Ich kriege eine Zugriffsverletzung!!!!!
Habe Delphi 2007,habe auch RICHITIG eine RIS.rc erstellt ,und auf BIN und alle Audiodateien reingetan,dann mit MS DOS RICHTIG KOMPILIERT!
Dannach die ris.res in delphi projekt ordner reingetan,dann in unit mmsystem und alles drum und dran hinzugefuegt und TROTZDEM FUNZT ES NICHT!
Eine Exeption ist aufgetreten! :(
SO langsam geht mir Delphi auf den SACK!

Brauche unbedingt RAT,wie ich das Problem beheben kann!


HAB eine Button1 Funktion,MEHR AUCH NICHT!
DADRINNE steht folgendes:

PlaySound(PChar(1), HInstance, snd_ASync)


///Mehr auch nicht!


Teekeks - Di 21.07.09 07:53

Hast du denn auch das hier drin?

Delphi-Quelltext
1:
2:
{$R *.DFM}
{$R ris.res}

Und: Schrei nicht so und ein Ausrufezeichen reicht völlig.
Achso: und das dürftest du auch brauchen: SND_RESOURCE


jaenicke - Di 21.07.09 14:26

user profile iconness hat folgendes geschrieben Zum zitierten Posting springen:

Delphi-Quelltext
1:
PlaySound(PChar(1), HInstance, snd_ASync)                    
Da gehört der Name der Ressource hinein, den du in der Ressourcendatei vergeben hast.
Ansonsten siehe user profile iconTeekeks, was er geschrieben hat, gehört auch dazu.


ness - Mi 22.07.09 00:06

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconness hat folgendes geschrieben Zum zitierten Posting springen:

Delphi-Quelltext
1:
PlaySound(PChar(1), HInstance, snd_ASync)                    
Da gehört der Name der Ressource hinein, den du in der Ressourcendatei vergeben hast.
Ansonsten siehe user profile iconTeekeks, was er geschrieben hat, gehört auch dazu.


Problem habe ich entdeckt! Wenn ich die " NICHT schreibe,funzt es dann!

Ich habe ein neues Problem!

Die LOOP Funtkion funktioniert GARNICHT!

Button1:
SndPlaySound( 'intro.WAV', SND_LOOP );

Es wird nur einmal abgespielt! Die Sounddatei ist nur 5 Sekunden lang! Wieso funktioniert das nicht?

Edit: Ich moechte aber auch,dass das Programm dabei REAGIERT und nicht einfriert!!!!!


jaenicke - Mi 22.07.09 04:38

user profile iconness hat folgendes geschrieben Zum zitierten Posting springen:
Edit: Ich moechte aber auch,dass das Programm dabei REAGIERT und nicht einfriert!!!!!
Du hast das async ja wieder rausgenommen...
Vielleicht solltest du dir in der Dokumentation [http://msdn.microsoft.com/en-us/library/ms712879.aspx] einmal die Flags anschauen, falls dir gar nicht klar war was das async macht. Zudem hast du jetzt die veraltete sndPlaySound Funktion erwischt, die man nicht mehr nutzen sollte.

Mit der Ressource sollte es so gehen...

Delphi-Quelltext
1:
PlaySound('ResourceName', HInstance, SND_ASYNC or SND_LOOP or SND_RESOURCE);                    


Narses - Mi 22.07.09 11:09

Moin!

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Zudem hast du jetzt die veraltete sndPlaySound Funktion erwischt, die man nicht mehr nutzen sollte.
Aha, was sollte man denn alternativ nutzen? :shock: AFAIK nutzt selbst der Explorer die, um die ganzen Ereignis-Sounds abzududeln... :nixweiss:

cu
Narses


turboPASCAL - Mi 22.07.09 11:30

user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Zudem hast du jetzt die veraltete sndPlaySound Funktion erwischt, die man nicht mehr nutzen sollte.
Aha, was sollte man denn alternativ nutzen? :shock:

Na, PlaySound. ;) Das Teil kann ein wenig mehr als sndPlaySound.

user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
AFAIK nutzt selbst der Explorer die, um die ganzen Ereignis-Sounds abzududeln... :nixweiss:

Wie kommst du darauf ?


Quelltext
1:
2:
3:
4:
5:
Offset(h)
00068498  72 6F 6C 44 65 74 61 69 6C 73 00 2E 00 00 6D 69 78 65 72 43  rolDetails....mixerC
000684AC  6C 6F 73 65 00 00 00 00 50 6C 61 79 53 6F 75 6E 64 57 00 00  lose....PlaySoundW..
...       00 00 6D 69 78 65 72 4F 70 65 6E 00 00 00 77 61 76 65 4F 75  ..mixerOpen...waveOu
...       74 47 65 74 4E 75 6D 44 65 76 73 00 00 00 6D 69 78 65 72 4D  tGetNumDevs...mixerM


Narses - Mi 22.07.09 12:02

Moin!

user profile iconturboPASCAL hat folgendes geschrieben Zum zitierten Posting springen:
Na, PlaySound. ;) Das Teil kann ein wenig mehr als sndPlaySound.
[...]
Wie kommst du darauf ?
:nut: Irgendwie ist mir das snd wohl durchgerutscht... :gruebel:

cu
Narses