# Jython Homework

from media import * #useful functions to manipulate sounds #Changing a sound volume by changing the amplitude def changeVolume (sound, factor):

for sample in getSamples(sound):

value = getSampleValue (sample) setSampleValue (sample, value * factor) #Normalize a sound to a maximum amplitude def normalize (sound):

largest = 0 for s in getSamples(sound):

largest = max (largest, getSampleValue(s)) multiplier = 32767.0 / largest print "Largest sample value in original sound was " , largest print "Multiplier is " , multiplier for s in getSamples(sound):

louder = multiplier * getSampleValue(s) setSampleValue (s, louder) #clipping a sound: we will clip a sound and copy the samples from end to start def clip (source, start, end):

target = makeEmptySound (end - start + 1) #create a new empty sound of this size targetIndex = 0 for sourceIndex in range (start, end + 1):

sourceValue = getSampleValueAt(source, sourceIndex) setSampleValueAt (target, targetIndex, sourceValue) targetIndex = targetIndex + 1 return target #Copying a sound: we will copy a source sound into a target sound starting at index start def copy (source, target, start):

targetIndex = start for sourceIndex in range (0, getLength(source)):

sourceValue = getSampleValueAt (source, sourceIndex) setSampleValueAt(target, targetIndex, sourceValue) targetIndex = targetIndex + 1 #reversing sounds: take a source sound and produce a sound with all the samples in reverse order def reverse(source):

target = makeEmptySound (getLength(source)) sourceIndex = getLength (source) - 1 #we start at the end of the source sound, with the last sample for targetIndex in range (0, getLength(target)):

sourceValue = getSampleValueAt(source, sourceIndex) setSampleValueAt (target, targetIndex, sourceValue) sourceIndex = sourceIndex - 1 return target #mirroring sounds def mirrorSound (sound):

len = getLength(sound) mirrorPoint = len / 2 for index in range (0, mirrorPoint):

left = getSampleObjectAt(sound, index) right = getSampleObjectAt(sound, len - index - 1) value = getSampleValue(left) setSampleValue(right, value) play(sound)