Sounds einbinden

Für Probleme bezüglich Grafik, Audio, GL, ACS, ...
DarkClasher
Beiträge: 7
Registriert: Do 31. Mai 2012, 17:25

Re: Sounds einbinden

Beitrag von DarkClasher »

shokwave hat geschrieben:Wenn es dir nur um einen Sound geht und nicht mehrere gleichzeitig, dann reicht schon:

Code: Alles auswählen

uses mmsystem,..
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  PlaySound('bang_3.wav', 0, SND_FILENAME or SND_ASYNC);
end.


Funktioniert nur unter Windows und die Datei muss eine Wave-datei sein.

Edit: Freie Sounds gibts z.B. unter http://www.pacdv.com/sounds/index.html


erklär mir bitte den playsound befehl mit snd ,0 usw.

Komoluna
Beiträge: 565
Registriert: So 26. Aug 2012, 09:03
OS, Lazarus, FPC: Windows(10), Linux(Arch)
CPU-Target: 64Bit

Re: Sounds einbinden

Beitrag von Komoluna »

Hier findest du die offizielle Dokumentation zu diesem Befehl:
http://msdn.microsoft.com/en-us/library ... 85%29.aspx
Programmer: A device to convert coffee into software.

Rekursion: siehe Rekursion.

MmVisual
Beiträge: 1466
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 3.0 FPC 3.2)
CPU-Target: 32/64Bit

Re: Sounds einbinden

Beitrag von MmVisual »

Wenn das Sound abspielen Betriebssystem unabhängig funktionieren soll, geht auch die "bass.dll", google mal danach. Der kann auch mehrere Sounds gleichzeitig. Die DLL ist free und gibt es für alle möglichen Betriebssysteme.
EleLa - Elektronik Lagerverwaltung - www.elela.de

5woho19
Beiträge: 9
Registriert: Fr 12. Jul 2013, 02:56

Re: Sounds einbinden

Beitrag von 5woho19 »

shokwave hat geschrieben:Wenn es dir nur um einen Sound geht und nicht mehrere gleichzeitig, dann reicht schon:

Code: Alles auswählen

uses mmsystem,..
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  PlaySound('bang_3.wav', 0, SND_FILENAME or SND_ASYNC);
end.


Funktioniert nur unter Windows und die Datei muss eine Wave-datei sein.

Edit: Freie Sounds gibts z.B. unter http://www.pacdv.com/sounds/index.html




Richtig....

auch ich habe unter win7 folgenden code benutzt: Für ein Spiel mit diversen Sounds.........
//playsound('C:\debugTest\wavedateien\clapping.wav',0,SND_FILENAME OR SND_NODEFAULT OR SND_ASYNC ); // war für XP

playsound('C:\a_Lazprojecte\debug\wavedateien\clapping.wav',0,SND_FILENAME OR SND_NODEFAULT OR SND_ASYNC );
r:= LazarusResources.Find('clapping');

// dat:= r.value; // win7 Meckert an,habe es einfach auskommentiert...

sndPlaySound(PChar(dat),SND_MEMORY OR SND_ASYNC); //Und läuft unter win7......

Komoluna
Beiträge: 565
Registriert: So 26. Aug 2012, 09:03
OS, Lazarus, FPC: Windows(10), Linux(Arch)
CPU-Target: 64Bit

Re: Sounds einbinden

Beitrag von Komoluna »

Gibt es eigentlich eine Möglichkeit mit PlaySound mehrere Sounddateien gleichzeitg abzuspielen, oder muss ich dann irgendwelche Soundbibliotheken benutzen?

MFG

Komoluna
Programmer: A device to convert coffee into software.

Rekursion: siehe Rekursion.

Maria73
Beiträge: 6
Registriert: Di 4. Feb 2014, 16:32
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: 8700

Re: Sounds einbinden

Beitrag von Maria73 »

Hallo, auch ich würde gerne einen Sound einbinden, habe allerdings eine WAV. Wenn ich es so mache, wie hier im Forum beschrieben, dann höre ich immer die ersten 5 Sekunden und dann hängt sich das ganze Programm auf. Habe es auch mal auf anderen Rechnern ausprobiert, da ich zuerst dachte, dass es an mir liegt. Wer kann mir helfen?

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: Sounds einbinden

Beitrag von Michl »

Hallo und herzlich willkommen im Lazarus-Forum!

Ich hoffe Du bist wirklich an einer Lösung interessiert und willst nicht nur irgendwelche Werbung/Links platzieren (6 Einträge innerhalb 10 Minuten als Newbee macht Dich verdächtig!)?!

Ansonsten habe ich eben mal getestet. PlaySound scheint ab einer gewissen Größe nicht mehr zu funktionieren - ist bei mir auch so, ansonsten könntest Du wie hier (mittels bass.dll) verfahren:

Code: Alles auswählen

procedure TForm1.Button1Click(Sender: TObject);
var
  WAVStream: HSTREAM;
  FileName: String;
begin
  FileName:='xmas-special.wav';
  WavStream:=BASS_StreamCreateFile(False, pchar(FileName), 0, 0, 0 {$IFDEF UNICODE} or BASS_UNICODE {$ENDIF});
  if WavStream <> 0 then
    BASS_ChannelPlay(WavStream, False);
end;

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

newartco
Beiträge: 2
Registriert: Sa 24. Dez 2022, 17:13

Re: Sounds einbinden

Beitrag von newartco »

shokwave hat geschrieben:
Do 18. Feb 2010, 22:00
Wenn es dir nur um einen Sound geht und nicht mehrere gleichzeitig, dann reicht schon:

Code: Alles auswählen

uses mmsystem,..
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  PlaySound('bang_3.wav', 0, SND_FILENAME or SND_ASYNC);
end.
Funktioniert nur unter Windows und die Datei muss eine Wave-datei sein.

Edit: Freie Sounds gibts z.B. unter http://www.pacdv.com/sounds/index.html
"PlaySound('bell.wav', 0, SND_FILENAME or SND_ASYNC);"
funktioniert bei mir unter Windows einwandfrei.
Ich hatte auch das Package "playwavepackage (Tplaysound, Unplaysound)" in LazControls installiert,
funktioniert unter Linux aber macht auf Windows nur Probleme und bleibt stumm....

Gutes Gelingen
Klaus

Mathias
Beiträge: 6194
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Sounds einbinden

Beitrag von Mathias »

Ich hatte auch das Package "playwavepackage (Tplaysound, Unplaysound)" in LazControls installiert,
funktioniert unter Linux aber macht auf Windows nur Probleme und bleibt stumm....
Ich würde SDL nehmenL

Code: Alles auswählen

uses
  ... sdl, sdl_mixer;

var
  music: PMix_Music;
  scratch PMix_Chunk;

procedure TForm1.FormCreate(Sender: TObject);
begin
  if SDL_Init(SDL_INIT_AUDIO) < 0 then begin
    Writeln('Kann SDL nicht öffnen: ', SDL_GetError);
  end;

  if Mix_OpenAudio(48000, MIX_DEFAULT_FORMAT, 2, 4096) = -1 then begin
    Write('Kann Audio nicht öffnen');
  end;

  music := Mix_LoadMUS('doom.mid');
  if music = nil then begin
    WriteLn('Kann Musik nicht laden');
  end;

  scratch := Mix_LoadWAV('scratch.wav');
  if scratch = nil then begin
    WriteLn('Kann Sound nicht laden');
  end;

end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  Mix_FreeChunk(scratch);
  Mix_FreeMusic(music);
  Mix_CloseAudio;
  SDL_Quit;
end;
Dies hat noch den Vorteil, es ist Plattformübergtreifend.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

wp_xyz
Beiträge: 4889
Registriert: Fr 8. Apr 2011, 09:01

Re: Sounds einbinden

Beitrag von wp_xyz »

newartco hat geschrieben:
So 29. Okt 2023, 16:33
Ich hatte auch das Package "playwavepackage (Tplaysound, Unplaysound)" in LazControls installiert,
funktioniert unter Linux aber macht auf Windows nur Probleme und bleibt stumm....
Das beigefügte Projekt verwendet die unit uPlaySound aus dem PlayWavePackage, etwas zurechtgestutzt, dass man nichts installieren muss, und das löuft unter Windows einwandfrei. Da die Unit eine windows-interne Routine aufruft, geht es natürlich nur mit wav-Dateien. Oder hast du versucht, ihm ein .mp3 unterzujubeln? Aber warum schreibst du dann 'bell.wav'?
Dateianhänge
soundPlayer.zip
(182.73 KiB) 49-mal heruntergeladen

Antworten