Thema: Delphi Visualiesirung

Einzelnen Beitrag anzeigen

Benutzerbild von Desmulator
Desmulator

Registriert seit: 3. Mai 2007
Ort: Bonn
169 Beiträge
 
#1

Visualiesirung

  Alt 17. Feb 2008, 11:46
HalliHallo,

also ich komme mal direkt zu sache, ich abreite immoment an einer Visualiesirung für Waves, bzw Soundaten. Das heißt das ein Kreis passend zur musik seine größe ändern soll, bei 8bit Mono geht das ja alles ganz gut... nur jetzt habe ich ein problem mit 16 bit.

Mein Ziel ist, einen Kreis (300 px durchmesser maximal) relativ zu den schwinungen zu vergrößern / verkleiner. heißt bei 8 bit :
127 / 256 ( Bei 8 Bit gibt es Maximal 256 tonfrequenzen ) soll der kreis nur halb so groß sein.

Delphi-Quellcode:
  Visual : record
    Center : Word;
    Right : Word;
    Left : Word;
  end;


    { Wenn Mono }
    if WaveEx.nChannels = Mono then begin
      //Position ermitteln
      Stream.Position := Position.sample * ( WaveEx.wBitsPerSample div 8 * WaveEx.nBlockAlign ) + AudioStart;
      //Einlesen
      Stream.Read(Visual.Center,WaveEx.wBitsPerSample div 8);
      //Amplitude anpassen Maximal 300 Pixel und Zentriren
      Amplitude := round(( Visual.Center / WaveEx.wBitsPerSample * WaveEx.nBlockAlign ) * 300 - 150);
      if Amplitude < 0 then
        Amplitude := 0;
      //Position berechnen
      DrawXYPos := 300; //Position
      DrawXYPos := DrawXYPos - round(Amplitude / 2);
      //Kreiszeichnen
      VisualWnd.Canvas.Pen.Color := RGB(Random(255),Random(255),Random(255));
      VisualWnd.Canvas.Ellipse(bounds(DrawXYPos,DrawXYPos,Amplitude,Amplitude)); //Der Kreis wird einfach drüber gemalt
    end;
So aber Irgendwie will der net, was muss ich ändern?
Lars
  Mit Zitat antworten Zitat