Avatar billede r.hegaard Nybegynder
22. september 2003 - 16:33 Der er 8 kommentarer og
1 løsning

Sammensætte lyde fra wave-filer.

Hvis jeg bruger koden
PlaySound('d:\lyd1.WAV', HInstance, SND_FILENAME or SND_SYNC );
PlaySound('d:\lyd2.WAV', HInstance, SND_FILENAME or SND_SYNC );
til at afspille to lyde lige efter hinanden, så kommer der alligevel et lille mellemrum mellem de to lyde.
Hvad kan jeg gøre for at det bliver afspillet lige efter hinanden ?? Er det muligt at sammensætte lydene, inden de afspilles ??
Avatar billede Slettet bruger
22. september 2003 - 17:30 #1
Måske virker det her bedre:

var
  Start: integer;
begin
  MediaPlayer1.FileName := 'd:\lyd3.WAV';
  MediaPlayer1.Open;
  PlaySound('d:\lyd3.WAV', 0, SND_FILENAME or SND_ASYNC );
  Start := GetTickCount;
  repeat
    Application.ProcessMessages;
  until GetTickCount - Start > MediaPlayer1.Length;
  PlaySound('d:\lyd2.WAV', 0, SND_FILENAME or SND_ASYNC );
  MediaPlayer1.Close;
end;
Avatar billede r.hegaard Nybegynder
27. december 2003 - 10:49 #2
hejhej > Jeg har været ved at kigge lidt på koden. Desværre forstår jeg den ikke helt, så jeg har derfor heller ikke fundet ud af om den virker helt som den skal.
Kan du forklare hvordan det virker ??
Hvad skal jeg gøre, hvis jeg skal afspille 3 lyde efter hinanden ??
Avatar billede r.hegaard Nybegynder
09. januar 2004 - 16:52 #3
hejhej > Er du der ??
Hvad skal jeg gøre, hvis jeg skal afspille 3 lyde efter hinanden ??
Lægger du ikke også lige et svar ??
Avatar billede Slettet bruger
09. januar 2004 - 19:33 #4
Prøv det her:

var
  Start: integer;
begin
  MediaPlayer1.FileName := 'd:\lyd3.WAV';
  MediaPlayer1.Open;
  PlaySound('d:\lyd3.WAV', 0, SND_FILENAME or SND_ASYNC );
  Start := GetTickCount;
  repeat
    Application.ProcessMessages;
  until GetTickCount - Start > MediaPlayer1.Length;
  MediaPlayer1.Close;

  MediaPlayer1.FileName := 'd:\lyd2.WAV';
  MediaPlayer1.Open;
  PlaySound('d:\lyd2.WAV', 0, SND_FILENAME or SND_ASYNC );
  Start := GetTickCount;
  repeat
    Application.ProcessMessages;
  until GetTickCount - Start > MediaPlayer1.Length;
  PlaySound('d:\lyd3.WAV', 0, SND_FILENAME or SND_ASYNC );
  MediaPlayer1.Close;
end;
Avatar billede r.hegaard Nybegynder
09. januar 2004 - 20:23 #5
hejhej > Det ser ikke lige ud til at det virker helt som det skal....
Jeg regner med at der skal stå d:\lyd3.WAV i 3. sidste linie....
Men jeg synes umiddelbart det lyder som om den klipper lidt af enden på lyd 3 og 2 (de to øverste).
Avatar billede Slettet bruger
09. januar 2004 - 20:31 #6
Hvis du lægger lidt til MediaPlayer1.Length kan du få den til at afspille lydene med lidt størrer mellemrum, f.eks.:

  Start := GetTickCount;
  repeat
    Application.ProcessMessages;
  until GetTickCount - Start > MediaPlayer1.Length+1000;

Får lyden efter til at blive afspilt 1 sekund senere.
Avatar billede r.hegaard Nybegynder
09. januar 2004 - 22:21 #7
OK, jeg vil prøve at kigge lidt på det.
Hvad betyder/gør GetTickCount ??
Avatar billede Slettet bruger
09. januar 2004 - 23:01 #8
GetTickCount returnere antallet af millisekunder siden windows startede.
Avatar billede r.hegaard Nybegynder
09. januar 2004 - 23:04 #9
OK, tak for svaret og tak for hjælpen.....
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB