Addons/media/wav

media/wav - Windows WAV file creation and play

Browse source and examples in [JSvnAddons]SVN.

  1. Examples
  2. Extracting Information
  3. Wave Viewer
  4. Reference
  5. Authors
  6. See Also

Examples

Wave information and data can be obtained from using file on disk directly.

   load 'media/wav'
   wavfile jpath '~addons/media/wav/test1.wav'
File Type       RIFF
Total Size      22390
File Format     WAVE
Channels        1
Sample Rate     11025
Sample Count    22108
Bits per Sample 8

   load 'plot'
   plot 2 wavfile jpath '~addons/media/wav/test1.wav'

wavplot.png

... or from noun in memory.

   W=. fread jpath '~addons/media/wav/test1.wav'
   plot wavdata W

Extracting Information

As seen in the above example, wavfile monad (default parameter 0) shows the header information. Each header value is assigned to a variable, which can be used in further requests:

  wavinfo_pwav_   NB. show wavinfo definition to identify variables
3 : 0
  wavhead y
  r=.      'File Type       ',chunk
  r=. r,LF,'Total Size      ',":8+chunkSize
  r=. r,LF,'File Format     ',format
  r=. r,LF,'Channels        ',":chanels
  r=. r,LF,'Sample Rate     ',":sampleRate
  r=. r,LF,'Sample Count    ',":sampleCount
  r=. r,LF,'Bits per Sample ',":bitsPerSample
)

For example, sampleCount gives total number of data values.

   $2 wavfile jpath '~addons/media/wav/test1.wav'  NB. too expesive
22108
   sampleCount_pwav_                     NB. get total sample count
22108
   sampleCount_pwav_% sampleRate_pwav_   NB. duration in seconds
2.00526

To extract the data, the dyad 2 wavfile file is used for whole file, which may be not desirable. Consider (2;index,count) wavfile file for a subset of samples.

Extracting a subset of 20 last samples:

   (2;sampleCount_pwav_(-,])20) wavfile jpath '~addons/media/wav/test1.wav'
122 122 123 118 121 126 130 130 128 129 130 126 126 130 127 125 124 124 124 125

Reading a subset and saving into a new file:

   NB. extract 1.5 seconds of data
   $ d=. (2;<.0,sampleRate_pwav_*1.5) wavfile jpath '~addons/media/wav/test1.wav'
16537

   NB. save it in a new file with same sample rate
   (sampleRate_pwav_ wavmake d) fwrite jpath'~temp/test.wav'
16581

   load'media/wav/view'                  NB. view the result
   wavview jpath'~temp/test.wav'

See more operations and parameter in the Reference section below.

Wave Viewer

wavview zoom viewer shows the wave form up close. Using memory mapped files, it moves around files of arbitrary size very fast (save your biggest >1hr podcast as WAV and try).

wavview.png

Control elements and interaction:

lens view

(above) shows the whole wave form and highlights selection
dragging positions the selection

detail view

(below) shows selected fragment
dragging shifts the selection gradually

zoom value

(bottom tracker) changes selection size

To run from J session:

   load 'media/wav/view'
   wavview '~addons/media/wav/test1.wav'

You can register the viewer for OS shell to open WAV files. For Windows:

Reference

wavplay

v

plays wav from file or memory

wavmake

v

wav format from samples

wavmakenote

v

make wav format from musical notes

wavnote

v

plays musical notes

wavdata

v

WAVE data from noun

wavinfo

v

WAVE info from noun

wavfile

v

WAVE info or data from file

wavplay

wavplay (v) plays wav from file or memory

  y  wav file or char vector of wav format
 [x] SND_* flags, SND_SYNC default, see wav.ijs for details

wavmake

wavmake (v) wav format from samples

  y  samples vector or (2,N)=$y matrix for stereo
      range is 0..255 or _32768..32767
 [x] sample rate in Hz, RATE default of 11000

wavmakenote

wavmakenote (v) make wav format from musical notes

wavnote

wavnote (v) plays musical notes

  y  tones 0=C, 1=C#, 2=D of main octave
 [x] durations in sec, 0.25 default of 1/4 sec

wavdata

wavdata (v) WAVE data from noun

  y  wave format
 [x] samples: (index,count)[, .. ,:index,count]

wavinfo

wavinfo (v) WAVE info from noun

  y  wave format

wavfile

wavfile (v) WAVE info or data from file

  y  wav file
 [x] what[;samples]
     what:    0-info 1-head 2-data
     samples: see wavdata

Authors

See Also

last edited 2008-01-22 19:52:20 by OlegKobchenko