Re: WAV-Dateien verschmelzen
Zitat:
Gruß LDer. Edit: Wie bekomme ich die Spiellänge einer WAV-Datei raus? |
Re: WAV-Dateien verschmelzen
Das ist mein Rohbau:
Delphi-Quellcode:
So, der macht vollautomatisch genau das was ich brauche ;)
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; 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. |
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:
Frage noch mal geöffnet...
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; Gruß vom LDer |
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. |
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