 *********************************************************************
 *                                                                   *
 *      Wave maker for SoundBlaster 1.5 by HaJott                    *
 *                                                                   *
 *********************************************************************

  This is a simple wavemaker for OS/2 2.1 and DOS.
  It generates sine, pulse and triangle waves and writes it in a file
  : c:\mmos2\sounds\aaa.wav
  
  Don't be angry about the pascal source, I know, that it could be done
  better. But it was a fine way to find out the structure of
  *.wav files.
  I would like to add a inverse FOURIER transformation to create
  more sounds. If you have a sourceccode of it, please let me know.
 

  Try it and play with it !
 

  File in the zip archive :

  emx.dll           need to run mwave.exe 
  mwave.c           generated by p2c
  mwave.exe         OS/2 executable
  mwave.mak         Makefile : nmake -f mwave.mak
                    (OS/2 and emx with nmake/2)
  mwave.pas         pascal file for p2c
  mwave.tp          turbo pascal file
  mwavetp.exe       DOS executable
  readme.txt        this file
 


  Discription of data types used to make a *.wav file :

  type
  chunk = record
    main               : string[4];             = RIFF
    main_length        : array[0..3] of byte;   = length of file
    chunk_type         : string[4];             = WAVE
    sub_chunk          : string[4];             = fmt_ :_=space=ASCII 32
    sub_chunk_length   : array[0..3] of byte;   = always 16 bytes
                                                  don't know why !
    format             : word;                  = always 1 for PCM mode
                         every SoundBlaster works with format = 1
    modus              : word;                  1 = mono, 2 = stereo
    sample_freq        : array[0..3] of byte;   11.025 kHz = $2B11
                                                22.050 kHz = $5622
                                                44.100 kHz = $AC44
    bytes_per_sec      : array[0..3] of byte;   as it is
    bytes_per_sample   : word;                  1 = 8 Bit, 2 = 16 Bit
    bits_per_sample    : word;                  only 8, 12 or 16
    data_chunk         : string[4];             = data
    data_length        : array[0..3] of byte;   length of data block
    rf                 : array[1..16384] of byte = wavedata
  end;




   Hans-Juergen Hochkamp
   Universitaet-GHS-Essen, FB 8
   Institut fuer Physikalische und Theoretische Chemie
   Universitaetsstr. 3-7
   D-45141 Essen
   Germany
   Tel.  : 49-(0)201-183-3059
   FAX   : 49-(0)201-183-3228
   EMail : cph080@vm.hrz.uni-essen.de

