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?