![]() |
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:
und vergleiche anschließend ob BASS_SAMPLE_FLOAT verwendet wird.
var
ChanInfo: BASS_CHANNELINFO; begin FillChar(ChanInfo, SizeOf(BASS_CHANNELINFO), 0); BASS_ChannelGetInfo(FChannelID, ChanInfo);
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:
Die frage wäre also zurück in einen 16Bit Stream konvertieren? (Wie?)
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 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 |
AW: BASS_SAMPLE_FLOAT kein Beat
Will oder kann mir niemand helfen ? :-D :wiejetzt:
gruss |
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 |
AW: BASS_SAMPLE_FLOAT kein Beat
Zitat:
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:
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 19:31 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