Assignment 4

The assignment is due Sunday, June 27, 11.59 pm EST. Submission Guidelines

  1. Review question: Using the PGM specification, explain what NAK anticipation is. What is its goal?
  2. Review question: In class, we only hinted at how the RP for a group is found. Based on the PIM-SM specification, describe how the RP for a group is selected. Does the data sender or a multicast receiver have to know the identity of the RP?
  3. Review question: Draw two waveforms that demonstrate that sampling below the Nyquist rate causes aliasing. (In other words, show two distinct waveforms that are the same when sampled at this rate.)
  4. Review question: How does G.711 achieve compression? Why does this work?
  5. Can you think of a visual effect that demonstrates aliasing in the visual domain? (Hint: Think stagecoach.)
  6. Try compressing a mu-law and MP3 sound file and a BMP and GIF or JPEG image file with gzip, compress, or zip. Compress the compressed file again. What are the compression ratios? Is the compression by gzip, compress or zip a lossless or lossy codec? Explain.
  7. Measurement: Using Audacity (which will be installed on CLIC machines, but it's available for free), record a fragment such as "A lathe is a big tool. Grab every dish of sugar." and capture the spectogram of this (via screen dump, for example).
  8. Using Audacity, CoolEdit, sound recorder or similar tools, record a minute of speech (e.g., a news broadcast) and a minute of music at 16 bit and 44,100 Hz sampling rate. Save the file as a AU file. (In Audacity, you have to configure the program to use that format instead of WAV files.) Write a program that reads the sound file, removes the audio header and then strips (zeros) bits. Your program should take as an argument the number of low-order bits that should be removed. Write the output to another AU file, copying the file header, and play back the result. You should provide audio files with one, four and twelve bits removed.

    Do not email these large files, but rather include a pointer to a file on a CUCS file system that the TA can access or a URL. Refer to CS personal homepage setup for how to put your file under CUCS file system.

  9. Programming problem: In preparation for audio transmission across networks, this programming assignment asks you to build an audio amplifier that takes the audio input, e.g., from a microphone or Walkman, and sends it to the speaker. (Headphones are a good idea here, unless you enjoy feedback howling.) Your audio system should operate on 16-bit linear samples. For Linux and Solaris, audio input and output are very similar to reading and writing from a file, with the difference that the audio device produces data continuously.

    You can use either a microphone or 1/8" headphone cable. Both are available from any computer store or Radio Shack for $10 or less.

    .AU sound samples can be found in the /usr/demo/SOUND/sounds/ directory on Sun systems such as cluster.cs.columbia.edu.

    Be sure to disable the audio feedback from the microphone by checking the microphone 'mute' checkbox in the playback section (Options/Properties) of your Windows audio mixer, accessible through the speaker icon in the system tray. You must unmute the microphone input volume in the recording section of the audio mixer.

    Currently, simultaneous recording and playback doesn't work at all with the Sun JDK 1.3/1.4 for GNU/Linux. Thus, Java developers can either use Tritonus implementation or use Windows.

    The application can be written in C(++) or Java. You may choose either Linux, Solaris or Windows (XP). The programming style guidelines apply. You should omit the Columbia copyright, since assignments belong to the author, not the university.