AGB  ·  Datenschutz  ·  Impressum  







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

wieder konvertierungs problem

Ein Thema von EWeiss · begonnen am 21. Mär 2007 · letzter Beitrag vom 25. Mär 2007
Antwort Antwort
EWeiss
(Gast)

n/a Beiträge
 
#1

Re: wieder konvertierungs problem

  Alt 24. Mär 2007, 10:36
Zitat von marabu:
Hallo Emil,

wenn ich mir die Doku zur BASS.DLL anschaue, dann kommt mir der Verdacht, dass du mit deinem byteweisen Zugriff falsche Werte verarbeitest. Wenn du die Samples nicht explizit umschaltest, dann werden 16-bit Integer-Werte (SmallInt) geliefert. Prüfe das doch erstmal.

Freundliche Grüße
Hallo Achim

Ja habe ich schon.
Du darfst nicht von Bass ausgehen
Sondern was du nicht wissen kannst du mußt von Winamp ausgehen
dort werden die Wavedaten als byte übergeben genauso wie in meinen Plugin Wrapper für Winamp Plugins.

Delphi-Quellcode:
  TWinAMPVisModule = record
    Description : PChar;
    hWNDParent : HWND;
    hDLLInstance : HINST;
    sRate : Integer;
    nCh : Integer;
    LatencyMs : Integer;

    DelayMs : Integer;
    SpectrumNch : Integer;
    WaveformNch : Integer;

    SpectrumData : array[0..1,0..575] of byte;
    WaveformData : array[0..1,0..575] of byte;
    Config : procedure(This_Mod: PWinAMPVisModule); cdecl;
    Init : function(This_Mod: PWinAMPVisModule): Integer; cdecl;
    Render : function(This_Mod: PWinAMPVisModule): Integer; cdecl;
    Quit : procedure(This_Mod: PWinAMPVisModule); cdecl;
    UserData : Pointer;
  end;
Deshalb habe ich auch die beiden Datentypen >
Delphi-Quellcode:
  TSpectrumData = Array[0..575] Of byte;
  PSpectrumData = ^TSpectrumData;

  TWaveData = Array[0..575] Of byte;
  PWaveData = ^TWaveData;
als byte declariert.

Ich habe das problem das die berechnung des exakten Bogenmaß irgendwie nicht
mit den übergebenen werten von WaveData verglichen werden.
Der effekt für das richtige Pendeln soll über

meterlphi := meterlphi+(lphi - meterlphi)*(dt*10.0); emuliert werden..
wobei dt
dt := currenttime - lastcurrenttime; eine art zeitverschiebung bewirken soll abhängig von
Delphi-Quellcode:
function GetTimes: single;

begin

   if (StartMilliseconds = 0) then
     StartMilliseconds := GetTickCount();


    CurrentMilliseconds := GetTickCount();
    Result := (CurrentMilliseconds - StartMilliseconds) / 1000.0;
end;
Delphi-Quellcode:
        specdata := @This_Mod^.spectrumData[0][0];
        wavedata := @This_Mod^.WaveformData[0][0];

          lastcurrenttime := currenttime;
         currenttime := GetTimes();
danach wird das rendern ausgeführt.

So wie es zur zeit ist funktioniert es zwar aber wie schon gesagt
hat das nichts mit einen VU Meter zu tun.
Das Teil schleicht nur so vor sich hin und reagiert nicht wirklich auf
die übergebenen Sample Daten.

Das originale Plugin 'StarflightAnalyze' (Quelltext habe ich vor Jahren vom Author bekommen(Marc Schneider))
funktioniert einwandfrei und wurde eigentlich auch richtig nach Delphi portiert.
Verstehe nicht das es hier nicht richtig läuft.

gruss Emil
  Mit Zitat antworten Zitat
Antwort Antwort


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 17:28 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