Today’s topics Sound Upcoming Intellectual property Network analysis Security Reading CompSci 001 8.1 How does Hearing Work? The outer ear “catches” sounds The eardrum vibrates The inner ear translates the vibrations to nerve impulses for the brain to interpret Georgia Institute of Technology CompSci 001 8.2 Acoustics, the physics of sound Sounds are waves of air pressure Sound comes in cycles The frequency of a wave is the number of cycles per second (cps), or Hertz • (Complex sounds have more than one frequency in them.) The amplitude is the maximum height of the wave Georgia Institute of Technology CompSci 001 8.3 Volume and Pitch Our perception of volume is related (logarithmically) to changes in amplitude If the amplitude doubles, it’s about a 3 decibel (dB) change. A decibel is a ratio between two intensities: 10 * log10(I1/I2) As an absolute measure, it’s in comparison to threshold of audibility • 0 dB can’t be heard. • Normal speech is 60 dB. • A shout is about 80 dB Our perception of pitch is related (logarithmically) to changes in frequency Higher frequencies are perceived as higher pitches We can hear between 5 Hz and 20,000 Hz (20 kHz) A above middle C is 440 Hz Georgia Institute of Technology CompSci 001 8.4 Digitizing Sound In calculus you learn to estimate a curve by creating rectangles We can do the same to estimate the sound curve Analog-to-digital conversion (ADC) will give us the amplitude at an instant as a number: a sample How many samples do we need? Georgia Institute of Technology CompSci 001 8.5 What is digital? What’s the difference between Phonograph and CD? VCR tape and DVD? Why digitize sound? How is ripping to a mp3 different from recording to a tape? Reproduction: immediate and future Distribution Modification Why do digital media present new challenges from analog media? Is copyright infringement new? CompSci 001 8.6 Nyquist Theorem We need twice as many samples as the maximum frequency in order to represent (and recreate, later) the original sound. The number of samples recorded per second is the sampling rate If we capture 8000 samples per second, the highest frequency we can capture is 4000 Hz • That’s how phones work If we capture more than 44,000 samples per second, we capture everything that we can hear (max 22,000 Hz) • CD quality is 44,100 samples per second Call a friend on a phone and play some music over the phone How does it sound? Why does it work for voice but not for music? CompSci 001 8.7 Playing a Sound We can create a Sound object just as we created a Picture object Get a file name and save a reference to it – Pick a file that ends in .wav Create the sound object by asking the class to create a new Sound object and initialize it by reading data from the given file name • sound1 = makeSound(fileName) Play the Sound play(sound1) Georgia Institute of Technology CompSci 001 8.8 Play Sound Exercise Try creating a Sound object and playing it by Specifying it in steps Specifying it all at once How would you play the same sound twice? CompSci 001 Georgia Institute of Technology 8.9 Digitizing Sound in the Computer Each sample is stored as a number (two bytes) What’s the range of available combinations? 16 bits, 216 = 65,536 But we want both positive and negative values • To indicate compressions and rarefactions. What if we use one bit to indicate positive (0) or negative (1)? That leaves us with 15 bits 15 bits, 215 = 32,768 One of those combinations will stand for zero • We’ll use a “positive” one, so that’s one less pattern for positives so the range is from -32,768 to 32,767 CompSci 001 Georgia Institute of Technology 8.10 The Sound Tool Not all of the sound is shown when you explore a sound You can zoom in Skips values to fit in the window To see all sample values You can zoom out To fit the sound in the window again CompSci 001 Georgia Institute of Technology 8.11 Getting the Sound Sample Values A Sound has many values in it Numbers that represent the sound at that time in the sample You can get an list of SoundSample objects samples = getSamples(sound1) CompSci 001 Georgia Institute of Technology 8.12 Print the Sound Sample Value You can get the SoundSample object from the list at an index sample = samples[0]; And then get the value from that print sample What are the first 10 values of the Sound created from the file croak.wav? CompSci 001 Georgia Institute of Technology 8.13 Changing the Value of a Sound Sample You can set the value of a SoundSample setSample(sample, value); This will change the value in the Sound object as well So how would you change the value of the first sample to the original value * 2? How could you double all of the samples? By hand? • How many samples are there? Using a loop? Georgia Institute of Technology CompSci 001 8.14 Tracing Execution The index is set to 0 The value is set to the value in the array at that index (59) The sample value at the current index is set to 2 * value The index changes to the next index (1) We check if the index is less than the length of the array and If so do the loop again Else jump to the first statement after the loop Georgia Institute of Technology CompSci 001 8.15 Memory versus Disk When we read from a file we read from disk into memory Computers only do calculations on memory We change the values in memory The file on the disk hasn’t changed To save our new sound we need to write a file to the disk writeSoundTo(sound1, fileName); CompSci 001 Georgia Institute of Technology 8.16 Copyright US Constitution (Article I, Section 8, Clause 8): “To promote the Progress of Science and useful Arts” What can you copyright? • Fixed, tangible medium of expression with a modicum of originality How do you copyright? • Don’t need anything. Registration necessary for copyright infringement suits Authors given limited monopoly so they will disclose to public Concessions 1. Fair use 2. First sale 3. Limited Time CompSci 001 Evolving Bargain: Copyright holder may profit from works and public has access and can build upon them What would happen if information could only be shared if the owner provided permission? Georgia Institute of Technology 8.17 Fair use Use copyrighted works without permission if the use does not unduly interfere with the copyright owner’s market for a work Include personal, noncommercial uses 4 prong test 1. 2. 3. 4. Purpose and character of use (commercial vs. non-profit or educational) Nature of copyrighted work Amount and substantiality of the portion used Effect of the copying upon market Example: using a VCR to time-shift a broadcast program Reverse engineering CompSci 001 OK when extracting unprotected elements Connectix Virtual PlayStation Georgia Institute of Technology 8.18 Digital rights management Idea: copying is hard to control, so make the copying process itself difficult Digital watermarking Restrict the use of digital files in order to protect interest of copyright holders Control file access Implemented in operating system, program software, or in the actual hardware of a device Make information so that unauthorized copying can be detected Serial Copy Management System (Audio Home Recording Act 92) Dystopian and utopian results? Privacy issues? CompSci 001 Georgia Institute of Technology 8.19 Test Case Artist Def Jeff creates a new song that includes a four-bar percussion sample from a Rolling Stones song. He uses the sample without receiving permission from the copyright holder, His DJ overlays the track containing the sample with 40 tracks of original music and puts the song on his latest CD. Were Def Jeff’s actions within the limits of fair use? Would he lose a lawsuit? Georgiaethical? Institute Were his actions CompSci 001 of Technology 8.20 Normalize Sounds Make the whole sound as loud as possible How loud can it be? • The max positive value is 32767 • The max negative value is -32768 First we need to find the largest value (positive or negative) in the current sound • Create a variable to hold the max – What should it be when we start looping? • And loop through the list and if the absolute value of the current value is greater – Store that one instead Georgia Institute of Technology CompSci 001 8.21 Creating a Sound Clip To clip the “This” out of “This is a test”. Determine where it starts and stops How? CompSci 001 Georgia Institute of Technology 8.22 Splicing Sounds Together Originally meant cutting the sound tape into segments and then assembling them in the right order Easy to do digitally Copy more then one sound into a target sound Track the source index and target index CompSci 001 8.23 Recipe for halving the frequency of a sound def half(filename): source = makeSound(filename) target = makeSound(filename) This is how a sampling synthesizer works! sourceIndex = 1 for targetIndex in range(1, getLength( target)+1): setSampleValueAt( target, targetIndex, getSampleValueAt( source, int(sourceIndex))) sourceIndex = sourceIndex + 0.5 return target What about doubling the frequency? Georgia Institute of Technology CompSci 001 8.24