AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Amplitude und Frequenz durch BASS_ChannelGetData
Thema durchsuchen
Ansicht
Themen-Optionen

Amplitude und Frequenz durch BASS_ChannelGetData

Ein Thema von Killerregenwurm · begonnen am 16. Feb 2008 · letzter Beitrag vom 13. Jul 2009
Antwort Antwort
Seite 2 von 3     12 3      
Killerregenwurm

Registriert seit: 10. Feb 2008
Ort: Herten
13 Beiträge
 
Delphi 5 Professional
 
#11

Re: Amplitude und Frequenz durch BASS_ChannelGetData

  Alt 24. Feb 2008, 16:41
zum einen: Ja ich habe damit Probleme wie Delphi das macht^^

zum anderen, ich kann bei deinem Test Programm nach wählen des Sounddevices also meiner Soundkarte nur ein Mirko auswählen

Aber bei delphi muss ich dann erstmal über

BASS_RecordSetDevice(i);

die Karte Auswählen und danach über

BASS_RecordSetInput(i, BASS_INPUT_ON)

den richtigen Kanal, oder?
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#12

Re: Amplitude und Frequenz durch BASS_ChannelGetData

  Alt 24. Feb 2008, 16:50
Ok, ich glaube ich verstehe jetzt langsam dein Problem.

Du möchtest ein Programm schreiben das immer den Masterausgang anzeigt. Dein Problem dabei ist welcher Eingang ist das? Aber das ist doch die ganze Zeit auch schon das Thema hier. Da du nicht weißt was auf anderen Rechnern für Soundkarten eingebaut sind kannst du das eigentlich nie genau automatisch rausfinden.
Es kann Soundkarten geben, die solch einen Ausgang gar nicht haben oder er heisst dort anders oder er ist an einem anderen Indexplatz. Du könntest nach dem Namen suchen und einen Auswahlvorschlag machen. Trotzdem würde ich aber immer auch die Auswahlmöglichkeit lassen.
Was ist wenn es den Mastereingang nicht gibt und der Benutzer aber gerne den WAVE-Eingang ansehen möchte?

Vielleicht verstehe ich dich aber auch nicht richtig, sorry.

Meine Frage ist eigentlich erstmal nur eine funktioniert das Beispielprogramm bei dir? Kannst du da ein Spektrum sehen.
Das ist doch nur ein minimal Beispiel, das du erstmal verstehen musst und dann kannst du anfangen alles umzubauen oder zu erweitern.

Edit: und ja deine Frage: ja das ist richtig.

Gruss
Thorsten
  Mit Zitat antworten Zitat
Killerregenwurm

Registriert seit: 10. Feb 2008
Ort: Herten
13 Beiträge
 
Delphi 5 Professional
 
#13

Re: Amplitude und Frequenz durch BASS_ChannelGetData

  Alt 24. Feb 2008, 17:05
ok,

das Programm muss auch gar nicht auf anderen Rechnern erstmal laufen, da es im eh bestimme Externe Hardware braucht, die nur an diesem Rechner existiert.

Bei deinem Programm sehe ich ein Spektrum des Mikro einganges. Bei Sounddevice kann ich zwischen meiner webcam(oben) und meiner Soundkarte(unten) wählen.

Also ist die Webcam sounddevice 0 und die Soundkarte 1, oder?

bei Input kann ich beidemale nur ein Mikrofon wählen. leider hier nicht Stereomix oder den line Eingang, den ich auch habe.

Ob das Programm Master oder Wave abgreift, ist eher egal, da ich als Hauptziel das Spektrum der Musik haben möchte wäre Wave komfortabler.
Dies halte ich aber erstmal für nebensächlich, da es ja erstmal überhaupt gehen sollte *grins*


Was ich bei deinem Programm nicht ganz durschaue ist, bei RecordingCallback den Handle belegts.

Achja kannst du mir mal sagen wofür eigentlich das @ genau macht, ich hab das jetzt einfach so benutzt weiß aber ehrlich nicht genau was das bewirkt.
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#14

Re: Amplitude und Frequenz durch BASS_ChannelGetData

  Alt 24. Feb 2008, 17:27
Ups, da war noch ein Fehler. Beim wechseln des Devices wurden die Eingänge nicht neu geladen. Ich vermute mal dein Webcam-Device ist das erste Device und hat nur das Mikrofon. Versuch es mal mit der neuen Version.

Über
  _Channel:=BASS_RecordStart(44100, 2, 0, @RecordingCallback, 0); wird die Aufnahme gestartet. Dabei enthält _Channel den Aufnahmehandle, dies ist hier aber nur für das Stoppen wichtig.
  BASS_ChannelStop(_Channel); Beim Start wird nämlich eine Callback-Routine installiert, die von der Bass.dll automatisch aufgerufen wird.
Delphi-Quellcode:
function RecordingCallback(Handle: HRECORD; buffer: Pointer; length,
                           user: DWord): boolean; stdcall;
und dieser Routine übergibt die Bass.dll den Kanalhandle, wenn sie die Routine aufruft.

Das @-Zeichen weisst den Delphicompiler an die Adresse der Routine zu übergeben, damit die Dll von "außen" deine Routine findet und aufrufen kann.

In dem Bass-Archiv findest du auch eine bass.chm Datei, die die einzelnen Befehle der bass.dll erklärt.

Gruss
Thorsten
Angehängte Dateien
Dateityp: zip basstest_137.zip (13,5 KB, 33x aufgerufen)
  Mit Zitat antworten Zitat
Killerregenwurm

Registriert seit: 10. Feb 2008
Ort: Herten
13 Beiträge
 
Delphi 5 Professional
 
#15

Re: Amplitude und Frequenz durch BASS_ChannelGetData

  Alt 24. Feb 2008, 22:14
vielen dank langsam raff ich es

Delphi-Quellcode:
procedure TmfMovinhead.btItunesClick(Sender: TObject);
var
  _Channel:HStream;
  fft : array[1..512] of single;
  n,i : integer;
  dName: PChar;
  begin
  BASS_RecordInit(-1);
  self.laDevice.caption := BASS_RecordGetDeviceDescription(0);
  BASS_RecordSetDevice(0);
  self.laInput.Caption := BASS_RecordGetInputName(3);
  BASS_RecordSetInput(3, BASS_INPUT_ON);
  _Channel:=BASS_RecordStart(44100, 2, 0, nil , 0);
  self.laItunetrackOut.caption := getCurrentTitle(iTunesApp);
  BASS_ChannelGetData(_Channel,@fft,BASS_DATA_FFT512);
  PaintBox1.Canvas.FillRect(rect(0, 0, paintbox1.width, paintbox1.height));
  PaintBox1.Canvas.Pen.Color := clBlack;
  for i := 1 to 256 do begin
    n := round(fft[i]*100);
    PaintBox1.Canvas.PenPos := point(i, 100);
    PaintBox1.Canvas.LineTo(i, 100 - n);
    self.Label3.Caption := self.Label3.Caption+ IntToStr(i) + ':' + intToStr(n) + ' ,';
  end;
  BASS_ChannelStop(_Channel);
  bass_free;
end;

endlich klappt es so wie es soll

danke echt, ich war schon kurz vorm verzweifeln.


Hab einfach bei mir die Webcam gezogen, dann konnte ich die verschieden Inputs auhc wählen, aber ich glaub das refreshen beim wechseln des Inputs hat nun auch noch nicht ganz so geklappt wie es sollte bei dir. Müsste ich nochmal genau beobachten wennd ie Webcam wieder angeschlossen ist.

Falls ich nochmal probleme habe komm ich einfach auf dich zurück
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#16

Re: Amplitude und Frequenz durch BASS_ChannelGetData

  Alt 24. Feb 2008, 22:17
Schön das du weiterkommst.

Zitat von Killerregenwurm:
Hab einfach bei mir die Webcam gezogen, dann konnte ich die verschieden Inputs auhc wählen, aber ich glaub das refreshen beim wechseln des Inputs hat nun auch noch nicht ganz so geklappt wie es sollte bei dir. Müsste ich nochmal genau beobachten wennd ie Webcam wieder angeschlossen ist.
Ich habe hier leider nur eine Soundkarte und kann das deshalb nicht wirklich testen. Wäre toll wenn du das nochmal ausprobieren könntest.

Gruss
Thorsten
  Mit Zitat antworten Zitat
Killerregenwurm

Registriert seit: 10. Feb 2008
Ort: Herten
13 Beiträge
 
Delphi 5 Professional
 
#17

Re: Amplitude und Frequenz durch BASS_ChannelGetData

  Alt 24. Feb 2008, 22:40
also das updaten der InputListe funktioniert noch nicht bei device change.

wenn du willst kann ich das dann noch für dich testen bis das klappt
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#18

Re: Amplitude und Frequenz durch BASS_ChannelGetData

  Alt 24. Feb 2008, 22:53
Hier nochmal ein neuer Versuch...
Angehängte Dateien
Dateityp: zip basstest_328.zip (13,5 KB, 155x aufgerufen)
  Mit Zitat antworten Zitat
Killerregenwurm

Registriert seit: 10. Feb 2008
Ort: Herten
13 Beiträge
 
Delphi 5 Professional
 
#19

Re: Amplitude und Frequenz durch BASS_ChannelGetData

  Alt 24. Feb 2008, 22:57
nice klappt jetzt
  Mit Zitat antworten Zitat
WS1976
(Gast)

n/a Beiträge
 
#20

Re: Amplitude und Frequenz durch BASS_ChannelGetData

  Alt 25. Feb 2008, 05:51
Hallo,
bei mir klappt das überhaupt nicht habe Probleme mit der bass.dll.
Es wäre nett wenn du die mal posten könntest.

Prozedureinstiegspunkt Bass_recordsetdevice wurde in der bass.dll nicht gefunden.

Grüsse
Rainer
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 10:53 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