CSC231 Lab 6 2010

From dftwiki3
Revision as of 09:56, 25 October 2010 by Thiebaut (talk | contribs) (Test #2)
Jump to: navigation, search

--D. Thiebaut 13:51, 25 October 2010 (UTC)



This lab covers sound files in the WAV format, and performing various operations on a sound file using array operations.

The Format of Sound Files

Part 1

Get the code

or simply get them with getcopy
 getcopy readWaveFileSkel.asm
 getcopy wav.inc

Get sound files

 getcopy hello.wav
 getcopy goodbye.wav
(there's more at http://buggerluggs.tripod.com/ie/wav-dir184.htm )

Play the sound

  • Play the files with aplay to make sure you can hear them:
aplay goodbye.wav
Playing WAVE 'goodbye.wav' : Unsigned 8 bit, Rate 8000 Hz, Mono
  • Important: make a note of the size of the samples, in this case 8 bits, unsigned.

Assemble

  • Do not modify readWavFileSkel.asm yet. On its own it will create a new copy of the goodbye.wav under the name goodbye2.wav.


  • Assemble and link the file
nasm  -f elf readWavFileSkel.asm
ld -o readWavFileSkel readWavFileSkel.o
rm goodbye2.wav
./readWavFileSkel
  • Check that you now have a new file in your directory called goodbye2.wav
  • Play it.
 aplay goodbye2.wav
(Note: on a mac, you can use afplay from the command line instead of aplay.)
You should hear the same thing as you did when listening to the goodbye.wav file.

Part 2

Test #1: Increase intensity

  • Make a copy of readWavFileSkel.asm and call it readWavFile1.asm
  • Modify it so that you multiply the intensity of the sound by 2.
  • Listen to the result. Can you still understand the message?
  • Copy goodbye2.wav into goodbye.wav and repeat the process. Still understandable?

Test #2: Decrease Intensity

  • Same thing, but this time you will divide the intensity by 2. A good way to divide by two is to shift the binary pattern to the right. For example, to shift right the contents of eax by one bit, do this:
         shr      eax, 1

Test #3

  • Double up the size of the wav file, making it repeat the sound "goodbye" twice, so that you will hear "goodbye, goodbye".