Zitat von
padavan:
Ich denke ich bin dem Problem jetzt ganz nah...
Delphi-Quellcode:
RechterKanal := LoWord(WaveData[i]);
LinkerKanal := HiWord(WaveData[i]);
Delphi-Quellcode:
procedure OscDraw(Paintbox: TPaintBox; WaveData : TWaveData; ScopeOff: Word);
const
DrawRes = 2; // "Genauigkeit"
var
i, YPos : LongInt;
HalfHeight : Integer;
R, L : SmallInt;
begin
With PaintBox do
begin
// Zeichenstifte setzen
Canvas.Pen.Color := clBlack;
Canvas.Brush.Color := clBlack;
// Hintergrund löschen
Canvas.Rectangle(0, 0, Width, Height);
// halbe höhe der PaintBox
HalfHeight := Height div 2;
// Zeichenstifte setzen
Canvas.Pen.Color := clRed;
Canvas.Pen.Width := 1;
// Anfangspos setzen
Canvas.moveto(0, HalfHeight);
// Daten Zeichnen
for i := 0 to 255 do
begin
R := SmallInt(Loword(WaveData[i * DrawRes])); // Rechter Kanal
L := SmallInt(HIword(WaveData[i * DrawRes])); // Linker Kanal
// Zusammenrechnen der Kanäle + Zoom
YPos := Trunc( ((R + L) / (2 * 65535)) * ScopeOff ) ;
Canvas.lineto(i, HalfHeight + YPos);
end;
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
OscDraw(Paintbox1, BassdllPlayer1.getWaveData, 250);
end;
Ähnlichkeiten zu anderen Codes können durchaus entstanden sein.
Beispiele zu VIS sind im Ordner
..\bass21\Delphi\SampleVis
...ohne Worte...