Einzelnen Beitrag anzeigen

TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.060 Beiträge
 
Delphi 10.4 Sydney
 
#17

AW: BASS.DLL - Rauschen erzeugen / create noise

  Alt 16. Mai 2014, 12:54
Nun bin ich ein paar Schritte weiter - eigentlich (fast) fertig.
Es gab noch ein paar Kleinigkeiten zu bereinigen, die da wären:
- Ein definierter Ausgangpegel mit Werten zwischen -32767/32768 (ein SmallInt), damit die Hardware nicht übersteuert und
- Azsgangspegel regelbar,

Ersteres gestattet sich ein wenig schwierig, weil m.M.n. die Ableitung von Maximalwerten aus dem Random-Wert nicht so ganz einfach ist. Ich habe das mittels sukzessiver Approximation folgendermaßen gelöst:
Randnom bekommt zunächst einen Wert zugewiesen, mit dem "pur"-Werte bis ca. 55.000 erreicht werden.
Diese Werte werden dann normalisiert, so dass man im Ergebnis maximal-Werte von +-27.500 erhält.
Sowas?

Delphi-Quellcode:
type
  TOutputArray = array of Single;

function GetNoiseArray(ALength : Integer) : TOutputArray;
var
  I : Integer;
const
  MaxAmplitude : Integer = High(SmallInt);
  HalfMaxAmplitude : Integer = High(SmallInt) div 2;
begin
  SetLength(Result, ALength);

  for I := Low(Result) to High(Result) do
  begin
    Result[I] := (Random(MaxAmplitude) - HalfMaxAmplitude) / HalfMaxAmplitude;
  end;
end;

procedure TForm2.Button1Click(Sender: TObject);
var
  TestNoise : TOutputArray;
begin
  TestNoise := GetNoiseArray(512);
end;
  Mit Zitat antworten Zitat