home *** CD-ROM | disk | FTP | other *** search
/ Audio 4.94 - Over 11,000 Files / audio-11000.iso / mac / soundutl / unsn070b.hqx / CreateFxFile.p < prev    next >
Encoding:
Text File  |  1993-07-09  |  1.3 KB  |  49 lines

  1. program CreateFxFile;
  2.  
  3. {This program will create a file containing a function table [ f(x) table ] }
  4. {which can be read into a function device in a UniSon circuit. The function}
  5. { F can be any function for which -1<=f(x)<=1 when -1<=x<=1.}
  6. { After it is created, use ResEdit or some other utility to change the}
  7. {file's type to 'UnFx' and its creator to 'UnSn' if you want it to have the}
  8. {proper file icon, and be recognized properly by UniSon.}
  9.  
  10.     const
  11.         HalfTable = 128;
  12.         TwoPower23 = 8388608;
  13.     type
  14.         IndexType = -HalfTable..HalfTable;
  15.         DataTable = array[IndexType] of longint;
  16.     var
  17.         TheDataTable: DataTable;
  18.         i: IndexType;
  19.  
  20.     function F (x: double): double;
  21.     begin
  22.         F := 2.0 * sqr(x) - 1.0
  23.     end;
  24.  
  25.     procedure WriteToFile (var TheData: DataTable);
  26.         var
  27.             TheFile: file of DataTable;
  28.             TheName: str255;
  29.     begin
  30.         TheName := NewFileName('Save Function as...');
  31.         if length(TheName) <> 0 then
  32.             begin
  33.                 rewrite(TheFile, TheName);
  34.                 write(TheFile, TheData);
  35.                 close(TheFile)
  36.             end
  37.     end;
  38.  
  39. begin {main}
  40.     for i := -HalfTable to HalfTable do
  41.         begin
  42.             TheDataTable[i] := round(TwoPower23 * F(i / HalfTable));
  43.             if TheDataTable[i] > TwoPower23 then
  44.                 TheDataTable[i] := TwoPower23;
  45.             if TheDataTable[i] < -TwoPower23 then
  46.                 TheDataTable[i] := -TwoPower23;
  47.         end;
  48.     WriteToFile(TheDataTable)
  49. end. {main}