Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   BASS_SAMPLE_FLOAT kein Beat (https://www.delphipraxis.net/162189-bass_sample_float-kein-beat.html)

EWeiss 11. Aug 2011 12:16

BASS_SAMPLE_FLOAT kein Beat
 
Wie muss ich den Stream berechnen damit ich wieder den richtigen ausschlag bei der Visualisierung erhalte?

Damit ich nicht meine API abermals ändern muss habe ich mir folgendes gedacht.
Ich hole mir über ChanInfo die Informationen vom Stream ein

Delphi-Quellcode:
var
ChanInfo: BASS_CHANNELINFO;

begin
      FillChar(ChanInfo, SizeOf(BASS_CHANNELINFO), 0);
      BASS_ChannelGetInfo(FChannelID, ChanInfo);
und vergleiche anschließend ob BASS_SAMPLE_FLOAT verwendet wird.

Delphi-Quellcode:
      if ((ChanInfo.flags and BASS_SAMPLE_FLOAT) = BASS_SAMPLE_FLOAT) then
      begin

So weit so gut.
Wie berechne ich nun den Stream damit er wieder korrekt Visualisiert wird.


Delphi-Quellcode:
        if (FChannels = 1) or (FChannels > 2) then
        begin
          BASS_ChannelGetData(FChannelId, @SpectrumData, BASS_DATA_FFT2048);

          for i := 1 to 576 do
          begin
            p2^ := Trunc(SpectrumData[i] * FVisScale);
            Inc(p2);
          end;

          for i := 1 to 576 do
          begin
            p2^ := Trunc(SpectrumData[i] * FVisScale);
            Inc(p2);
          end;
        end
Die frage wäre also zurück in einen 16Bit Stream konvertieren? (Wie?)
Dann muss ich meine Function nicht neu schreiben.

oder über einen Temporären Buffer schicken.
Mir fällt aber nicht ein wie ich das berechnen kann.

schön wenn mir da jemand helfen könnte.

gruss

EWeiss 11. Aug 2011 19:40

AW: BASS_SAMPLE_FLOAT kein Beat
 
Will oder kann mir niemand helfen ? :-D :wiejetzt:

gruss

Wishmaster 12. Aug 2011 05:17

AW: BASS_SAMPLE_FLOAT kein Beat
 
Hi

erstens du musst nichts zurück nach 16 Bit konvertieren! Schaue dir mal die SampleVis Demo an
und im code BASS_StreamCreateFile ad BASS_SAMPLE_FLOAT und du wirst sehen das alles genau so funst wie es so inc. 16/32 Bit

EWeiss 12. Aug 2011 12:20

AW: BASS_SAMPLE_FLOAT kein Beat
 
Zitat:

Zitat von Wishmaster (Beitrag 1116362)
Hi

erstens du musst nichts zurück nach 16 Bit konvertieren! Schaue dir mal die SampleVis Demo an
und im code BASS_StreamCreateFile ad BASS_SAMPLE_FLOAT und du wirst sehen das alles genau so funst wie es so inc. 16/32 Bit

Sorry verstehe nicht was du mir damit sagen willst.
Es ist so das meine Renderengine mit einem 32Bit floating Stream nicht mehr so funktioniert wie sie es mit einem 16 Bit Stream tut.

Ich muss quasi den Stream der mir geliefert wird gegenprüfen um dann darauf reagieren zu können.
Mein Problem ist nur wie ich dann den 32 Bit stream berechnen bzw. meine Renderfunction darauf anpassen muss.

EDIT:
Zitat:

und im code BASS_StreamCreateFile ad BASS_SAMPLE_FLOAT und du wirst sehen das alles genau so funst wie es so inc. 16/32 Bit
Nö funst nicht (in deiner Sprache) ;)

Es tut genau das was es soll.
Es hat genau die gleichen probleme wie ich, was auch verständlich ist ein 16Bit Stream ist halt kein 32Bit Stream.

16Bit-Integer ist nun mal mehr oder weniger als 32Bit-Float..
Deshalb funktioniert es nicht richtig.


gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:46 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