AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

BASS.dll Probleme

Ein Thema von juelin · begonnen am 20. Mai 2024 · letzter Beitrag vom 25. Mai 2024
 
juelin

Registriert seit: 9. Mai 2006
Ort: Mannheim
142 Beiträge
 
Delphi XE5 Professional
 
#6

BASS.dll bin verzweifelt

  Alt 25. Mai 2024, 12:00
Hallo Delphi-Gemeinde,
ich bin verzweifelt. Seit 2 Wochen versuche ich meine Soundkarten mit BASS.dll zum laufen zu bringen.
Habe mir von der Webseite www.un4seen,com die Beispiuelprogramme runter geladen.
Ich habe 3 Soundkarten an meinem Computer.
Möchte von Soundkarte 8-USB (Mikroeingang) den Sound in ein WAV-File speichern
und gleichzeitig auf einer anderen Soundkarte 6_USB (Lautsprecher) ausgeben.
Dazu habe ich nach dem Vorbild von rectest.pas von www.un4seen,com gemacht (siehe Anhang).
Es wird zwar das WAV-File ordentlich erstellt, aber ich höhre kein Sound über den Lautsprecher
und das WAV-File bring auch keinen Sound.
Hier jetzt mein Code (nur die wichtigen Stellen).
Delphi-Quellcode:
//audioein2:=4;
// 0=intern 1=6-USB 2=intewrn 3=8-USB
//audioaus2:=3;
// 0=noSound 1=Default 2=intern 3=8-USB 4=6-USB
    if BASS_Init(audioaus2,44100,0,BASS_DEVICE_SPEAKERS,nil) then
    begin
      ChannelOR:=Bass_StreamCreate(44100,2,0,@StreamProc_Out,nil);
      if ChannelOR > 0 then
      begin
        BASS_ChannelPlay(ChannelOR, True);
        BASS_ChannelSetAttribute(ChannelOR,BASS_ATTRIB_VOL,1);
        if BASS_RecordInit(audioein2) then
        begin

          Def:=audioein2;
          WaveStream:=TMemoryStream.Create;
          if (rchan > 0) then
             rchan := 1;
          InitDevice(audioein2);
          if WaveStream.Size > 0 then
          begin
            BASS_StreamFree(rchan);
            WaveStream.Clear;
          end;
          with WaveHdr do
          begin
            riff := 'RIFF';
            len := 36;
            cWavFmt := 'WAVEfmt ';
            dwHdrLen := 16;
            wFormat := 1;
            wNumChannels := 2;
            dwSampleRate := 44100;
            wBlockAlign := 4;
            dwBytesPerSec := 176400;
            wBitsPerSample := 16;
            cData := 'data';
            dwDataLen := 0;
          end;
          WaveStream.Write(WaveHdr, SizeOf(WAVHDR));

          rchan:=BASS_RecordStart(44100, 2, BASS_INPUT_TYPE_MIC and BASS_INPUT_ON, @RecordingCallback, nil);
          if (rchan > 0) then
          begin
            BASS_ChannelPlay(rchan, True);
            BASS_ChannelSetAttribute(rchan,BASS_ATTRIB_VOL,1);

            BASS_ChannelStop(ChannelOR);
            Bass_StreamFree(ChannelOR);
            BASS_ChannelStop(rchan);
            if (rchan > 0) then
            begin
              if (rchan <> 1) then
              begin
                if (BASS_ChannelIsActive(rchan) = 0) then
                begin
                  rchan := 0;
                  WaveStream.Position := 4;
                  i:=WaveStream.Size - 8;
                  WaveStream.Write(i, 4);
                  i:=i - $24;
                  WaveStream.Position:=40;
                  WaveStream.Write(i, 4);
                  WaveStream.Position:=0;
                  chan:=BASS_StreamCreateFile(True,WaveStream.Memory,0,WaveStream.Size,0);
                  if chan = 0 then
                  begin
                    Label2.Caption:='Fehler erzeugen Filedaten von Audiodaten';
                    basslauf:=False;
                  end else begin
                    WaveStream.SaveToFile(wavfile);
                  end;
                end;
              end;
            end;
            bassret:=BASS_RecordFree();
            BASS_Free;
            WaveStream.Free;

function StreamProc_Out(channel: HRECORD; buffer: pointer; length: DWord; user: pointer): Boolean; stdcall;
begin
  Result:=True;
end;

function RecordingCallback(Handle: HRecord; buffer: Pointer; length: DWord; user: Pointer): boolean; stdcall;
  var rueck: Boolean;
begin
  rueck:=False;
  if Length > 0 then
  begin
    WaveStream.Write(buffer^, length);
    Bass_StreamPutData(ChannelOR, buffer, length);
    rueck:=True;
  end;
  Result:=rueck;
end;
Vielleicht hat jemand eine Idee.
Gruß
Jürgen
Angehängte Dateien
Dateityp: pas Unit1.pas (9,8 KB, 1x aufgerufen)
Jürgen Linder
  Mit Zitat antworten Zitat
 

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz