AGB  ·  Datenschutz  ·  Impressum  







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

rand und Random Delphi

Ein Thema von EWeiss · begonnen am 11. Mai 2007 · letzter Beitrag vom 24. Mai 2007
Antwort Antwort
EWeiss
(Gast)

n/a Beiträge
 
#1

rand und Random Delphi

  Alt 11. Mai 2007, 09:42
Hallo

Wieder mal ich

Code:
{
  Random rand = new Random();
  int x = 0;

  for (int i = 0; i < 1024; i++)
  {
    audioData[x] = (byte)rand.Next(0, 127);
    audioData[x + 1024] = (byte)rand.Next(128, 255);
    x++;
  }
}
In dieser schleife werden zufällige WaveDaten generiert.
Wie könnte ich diese nach Delphi übersetzen in verbindung mit Random
bzw. ist das mit Random überhaupt zu verwirklichen ?
Da Random ja nur über einen parameter verfügt.

gruss Emil
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: rand und Random Delphi

  Alt 11. Mai 2007, 09:48
Hallo Emil,

first try:

Delphi-Quellcode:
const
  N = 1024;
  AMP = 128;
var
  i: Integer;
begin
  Randomize;
  for i := 0 to Pred(N) do
  begin
    audiodata[i] := Random(AMP);
    audiodata[i + N] := Random(AMP) + AMP
  end;
end;
Freundliche Grüße
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

Re: rand und Random Delphi

  Alt 11. Mai 2007, 09:51
Zitat von marabu:
Hallo Emil,

first try:

Delphi-Quellcode:
const
  N = 1024;
  AMP = 128;
var
  i: Integer;
begin
  Randomize;
  for i := 0 to Pred(N) do
  begin
    audiodata[i] := Random(AMP);
    audiodata[i + N] := Random(AMP) + AMP
  end;
end;
Freundliche Grüße
Aber sicher doch..
Danke mal wieder für deine Supi Hilfe.

Gruss Emil
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#4

Re: rand und Random Delphi

  Alt 11. Mai 2007, 10:02
Nochmal ein kleines mit FFT

EDIT:

Übersetzt bis auf rand

Delphi-Quellcode:
function GetFreqData(audioData: array of byte): boolean;
Var
  fft : array of single;
  stepValue : single;
  val : single;

begin
  SetLength(fft, 1024);
  stepValue := 1.0 / 1024;

  Randomize;

  for i := 0 to Length(fft) do
  begin
    val := (float)rand.Next(0, (1024 / 2)) * stepValue;
    fft[i] := val;
  end;

  for i := 1 to 1024 do
  begin
    try
       val := fft[i] * 255;
       if (val < 0) then
         val := 0;

       if (val > 255) then
         val := 255;

         audioData[i] := byte(val);
         audioData[i + 1024] := byte(val);
     except
       Result := false;
     end;
     Result := true;
  end;

end;
dann kann ich testen..
Sorry mit einigen sachen komme ich noch nicht zurecht.


gruss Emil
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: rand und Random Delphi

  Alt 24. Mai 2007, 07:46
Hallo Emil,

ich bin spät dran und du hast das bestimmt lösen können, aber trotzdemhier mein Versuch:

Delphi-Quellcode:
uses
  Types;

procedure GetFreqData(var audioData: TByteDynArray);
var
  i: Integer;
  n, range: Word;
  b: Byte;
begin
  n := Length(audioData) shr 1;
  range := SizeOf(b) shl 8;
  for i := 0 to Pred(n) do
  begin
    b := Random(range);
    audioData[i] := b;
    audioData[i + n] := b;
  end;
end;
Randomize() darfst du aber nur einmal beim Start der Anwendung aufrufen, z.B. im OnCreate() der MainForm oder im Projektquelltext vor dem Eintritt in die Nachrichtenschleife. Nicht dass dir sonst der Himmel auf den Kopf fallen würde, aber der mehrmalige Aufruf von Randomize() kann unschöne Auswirkungen auf die Pseudo-Zufälligkeit der generierten Zahlen haben.

Nebenbei: War audioData nicht ein array of ShortInt?

Freundliche Grüße
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#6

Re: rand und Random Delphi

  Alt 24. Mai 2007, 08:47
Hallo marabu
Werde mir den Thread mal als PDF herunterladen.
Allerdings hat sich der Thread schon erledigt da ich diese abfrage nur temporär benötigt habe.

Da mein Sample jetzt fertig ist kann ich reale Daten übergeben und auswerten.

Trotzdem Danke für deine Infos.
Kann sie sicher noch brauchen

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 18:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz