Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Programmeren

[Delphi] Meerdere wav files gelijktijdig afspelen

ominous
6 antwoorden
  • Hallo,
    Ik wil in Delphi 7 een applicatie maken waarmee ik meerdere wav files gelijktijdig kan afspelen door op buttons te klikken.

    Nu ben ik er achter gekomen dat dit met de PlaySound command niet gaat.
    Op internet heb ik gezocht naar een oplossing en kwam toen bij het volgende stukje freeware terecht:

    Website: http://www.rawos.com/sw/mains/wplayer.htm
    Download hier (het is een .pas file): http://www.rawos.com/sw/downloads/wplayer.zip

    Echter heb ik nu geen flauw idee hoe ik het nu moet aanroepen en hoe ik het in mijn project toe moet voegen?
    Ik ben geen kei in delphi en snap niet hoe ik dit moet fixen…

    Alvast bedankt!
  • Ok, ik geloof dat ik het nu heb kunnen importeren als Component.
    Ik heb Component -> install Component en heb WavePlayer.pas gekozen als "Unit File Name".

    Maar nu weet ik nog steeds niet hoe ik het moet aanroepen.
    Wat moet ik bijvoorbeeld bij button1 in de procedure zetten:

    [quote:e390636a40]procedure TForm1.Button1Click(Sender: TObject);
    begin

    end;

    end.[/quote:e390636a40]

    om via WavePlayer wav files te openen?
  • [quote:82990618bb="ominous"]
    Nu ben ik er achter gekomen dat dit met de PlaySound command niet gaat.
    [/quote:82990618bb]
    Anders maak je toch voor elk geluidje een thread? De thread hoeft niets meer te doen dan het geluidje af te spelen en daarna automatisch te stoppen.
  • [quote:afdee6e8f6="ominous"]Ok, ik geloof dat ik het nu heb kunnen importeren als Component.
    Ik heb Component -> install Component en heb WavePlayer.pas gekozen als "Unit File Name".

    Maar nu weet ik nog steeds niet hoe ik het moet aanroepen.
    Wat moet ik bijvoorbeeld bij button1 in de procedure zetten:

    [quote:afdee6e8f6]procedure TForm1.Button1Click(Sender: TObject);
    begin

    end;

    end.[/quote:afdee6e8f6]

    om via WavePlayer wav files te openen?[/quote:afdee6e8f6]

    Het is geen component dat je kunt installeren, maar een normale klasse.
    Een component is namelijk altijd vanaf TComponent afgeleid.

    Voor zover ik de code lees is het de bedoeling dat je een stream-object aanlevert en dat je dan voor ieder 'kanaal' een los TWaveplayer-object instantieert.

    Code zou dus ruwweg als volgt lopen :

    [code:1:afdee6e8f6]
    var
    iPlyr1, iPlyr2 : TWaveplayer;
    iFile1, iFile2 : TFilestream;
    begin
    iFile1 := TFilestream.create(<bestand1>);
    iPlyr1 := TWaveplayer.create;
    iPlyr1.Source := iFile1;
    // dan evt. instellen of je wilt herhalen en hoeveel keer dat moet

    // idem voor iFile2 en iPlyr2

    // en dan spelen maar :
    iPlyr1.Play;
    iPlyr2.play;
    [/code:1:afdee6e8f6]

    // h4xX0r
    Threads hebben geen zin, want de Windows-functie die de waveplayer-klasse gebruikt regelt dat al.
    Bovendien zit je dan met het probleem van het synchroniseren van threads. Een thread starten kost namelijk ook tijd …
  • Hey JaFo

    hartstikke bedankt, wat dat was inderdaad hoe het moest!!
    precies op die manier.

    het is me nu gelukt, hartstikke bedankt voor al jullie replies!

    greetz
  • I was born intelligen - education ruined me

    Ja dat blijkt maar; intelligent is nog altijd met een t op het eind :lol:

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.