Einzelnen Beitrag anzeigen

Wishmaster

Registriert seit: 14. Sep 2002
Ort: Steinbach, MB, Canada
301 Beiträge
 
Delphi XE2 Architect
 
#9

Re: Stille aus Wave-Dateien entfernen?

  Alt 2. Jul 2009, 10:51
Hi

Zitat:
wie jetzt, um dann die neue Wave zu speichern? Ähm, wie denn? Ich hab nicht mal 'ne Idee.
Nein! Mit der bassmix.dll kannst mehrere Dateien zusammen mixen, Samplerate und Channels ändern.
du kannst auch die Lautstärke und Balance ändern

Zitat:
When mixing a channel, the mixer makes use of the channel's freq/volume/pan attributes, as set with BASS_ChannelSetAttribute. The BASS_CONFIG_CURVE_VOL and BASS_CONFIG_CURVE_PAN config option settings are also used.

Zitat:
Ich hatte ihn so klein gehalten, da ich möglichst na an die errechnete Endposition heranwollte - und der Trick mit dem eingesetzten SyncPos nicht geklappt hat.
Das kannst du auch mit der bassmix.dll erreichen!

Delphi-Quellcode:
Procedure Encode(inFile, outFile : String; Samplerate, Bits, Channels : integer) // 44100, 16, 2
Var Channel, Mixer : DWORD;
       Flag, encFlag : DWORD;
       StopTime : INT64;
begin
     Channel:= BASS_StreamCreateFile(FALSE, PChar(inFile), 0, 0, Flag);

     Mixer := BASS_Mixer_StreamCreate(Samplerate, Channels, BASS_SAMPLE_FLOAT or BASS_STREAM_DECODE);

    (*
        limiting the duration to X seconds
        StopTime = The maximum amount of data (in bytes) to mix... 0 = no limit.
    *)


     StopTime := BASS_ChannelSeconds2Bytes(Mixer, 2) ; // in Sec.

     Flag:= BASS_MIXER_LIMIT or BASS_MIXER_FILTER or BASS_MIXER_BUFFER;
     BASS_Mixer_StreamAddChannelEx(Mixer, Channel, Flag, 0, StopTime);

     BASS_ChannelSetPosition (..., Startposition, BASS_POS_Byte);

     encFlag:= 0;
    if Bits = 8 then encFlag:= encFlag or BASS_ENCODE_FP_8BIT;
    if Bits = 16 then encFlag:= encFlag or BASS_ENCODE_FP_16BIT;
    if Bits = 24 then encFlag:= encFlag or BASS_ENCODE_FP_24BIT;
    if Bits = 32 then encFlag:= encFlag or BASS_ENCODE_FP_32BIT;
   // else 32 Bit (floating-point)

     BASS_Encode_Start(..., PChar(outFile), encFlag or BASS_Encode_AutoFree, nil, nil)
  Mit Zitat antworten Zitat