Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi WAV-Dateien verschmelzen (https://www.delphipraxis.net/131765-wav-dateien-verschmelzen.html)

LDericher 31. Mär 2009 09:56

Re: WAV-Dateien verschmelzen
 
Zitat:

Zitat von Wishmaster
Tipp. Schaue dir mal die Hilfe der Bass an!

Wo? Deutsch? Englisch?

Gruß LDer.

Edit: Wie bekomme ich die Spiellänge einer WAV-Datei raus?

LDericher 31. Mär 2009 10:28

Re: WAV-Dateien verschmelzen
 
Das ist mein Rohbau:

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
  Source1, Source2,
  start, length,
  Mixer : Cardinal;
begin
Source1 := BASS_StreamCreateFile(false, PChar('chord.wav'), 0, 0, BASS_STREAM_DECODE);
Source2:= BASS_StreamCreateFile(false, PChar('chimes.wav'), 0, 0, BASS_STREAM_DECODE);
Mixer:= BASS_Mixer_StreamCreate(44100, 2, 0);
start:=BASS_ChannelGetLength(Source1, BASS_POS_BYTE);
length:=BASS_ChannelGetLength(Source1, BASS_POS_BYTE);
BASS_Mixer_StreamAddChannel(Mixer, Source1, 0);
BASS_Mixer_StreamAddChannelEx(mixer, Source2, 0, start, length);
BASS_ChannelPlay(Mixer, false);
end;
So, der macht vollautomatisch genau das was ich brauche ;)

Frage ist GELÖST. Wer daraus noch eine allgemeine Funktion/Prozedur schreiben will, kann das Ergebnis gerne hier posten, ich baue mir daraus heimlich still und leise genau das was ich brauche :P

Bis zum nächsten Mal!

Gruß: Euer LDer.

LDericher 31. Mär 2009 18:16

Re: WAV-Dateien verschmelzen
 
Jetzt hab ich elend lang an dieser procedure geschreibselt und finde den Fehler nicht...
Kann sich das mal jemand angucken?

Delphi-Quellcode:
procedure TVoiceSynth.Speak;
var
  Mixer : Cardinal;
  Sources,
  Lengths:array of Cardinal;
  ZwErg:TStringList;
  I:integer;
  function LengthSum(Index:integer):Cardinal;
  var
    I:integer;
  begin
  Result:=0;
  if(Index>0)
    then for I:=0 to Index
      do Result:=Result+Lengths[I];
  end;
begin
ZwErg:=TStringList.Create;
ZwErg.Text:=StringReplace(ProcessedString, ' ', #13#10, [rfReplaceAll]);
SetLength(Sources, ZwErg.Count);
SetLength(Lengths, ZwErg.Count);
for I:=0 to(ZwErg.Count-1)do
  begin
  Sources[I]:=BASS_StreamCreateFile(false, PChar(format('speakbase\%s.wav', [ZwErg[I]])), 0, 0, BASS_STREAM_DECODE);
  Lengths[I]:=BASS_ChannelGetLength(Sources[I], BASS_POS_BYTE);
  end;
Mixer:= BASS_Mixer_StreamCreate(44100, 2, 0);
for I:=0 to(ZwErg.Count-1)
  do BASS_Mixer_StreamAddChannelEx(mixer, Sources[I], 0, LengthSum(I-1), LengthSum(I));
BASS_ChannelPlay(Mixer, false);
end;
Frage noch mal geöffnet...
Gruß vom LDer

LDericher 31. Mär 2009 18:23

Re: WAV-Dateien verschmelzen
 
Aua, ich bin echt müde... hatte die Lautsprecher aus :oops:
Es geht ;)
Und erzielt überraschend schlechte Ergebnisse - Aber das ist eine andere Sache, die procedure ist astrein :D

Gruß vom LDer. Frage gelöst.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:21 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz