Difference between revisions of "CSC111 Lab 5 Solutions 2014"
(→Solution Programs for Lab #5) |
(→Solution Programs for Lab #5) |
||
Line 127: | Line 127: | ||
blockingPlay( sound ) | blockingPlay( sound ) | ||
""" | """ | ||
+ | |||
+ | # ======================================================= | ||
+ | # reverse the whole waveform | ||
+ | file = pickAFile() | ||
+ | sound = makeSound( file ) | ||
+ | blockingPlay( sound ) | ||
+ | |||
+ | # make j the index of the last sample in the sound | ||
+ | j = getLength(sound)-1 | ||
+ | |||
+ | # make i go from beginning of sound to half way. | ||
+ | for i in range( getLength( sound ) // 2 ): | ||
+ | # get the two samples at Index i and at Index j | ||
+ | valueAti = getSampleValueAt( sound, i ) | ||
+ | valueAtj = getSampleValueAt( sound, j ) | ||
+ | |||
+ | # swap them | ||
+ | temp = valueAti | ||
+ | valueAti = valueAtj | ||
+ | valueAtj = temp | ||
+ | |||
+ | # put the swapped versions back in sound | ||
+ | setSampleValueAt( sound, i, valueAti ) | ||
+ | setSampleValueAt( sound, j, valueAtj ) | ||
+ | |||
+ | # move j to the left by 1. The for loop moves i to the right | ||
+ | j = j-1 | ||
+ | |||
+ | blockingPlay( sound ) | ||
</source> | </source> | ||
Revision as of 16:55, 28 February 2014
--D. Thiebaut (talk) 21:37, 25 February 2014 (EST)
Solution Programs for Lab #5
# lab5 solution programs (loops)
# D. Thiebaut
# single For-Loops
"""
for i in range( 3, 8 ):
print( i, end=" ")
print()
for i in [3, 4, 5, 6, 7]:
print( i, end=" " )
print()
for i in range( 4, 20+1, 2 ):
print( i, end=" " )
print()
for i in range( -3, 19+1, 2 ):
print( i, end=" " )
print()
start = int( input( "start where? " ) )
end = int( input( "end where? " ) )
if start <= end:
for i in range( start, end+1 ):
print( i, end=" " )
else:
for i in range( start, end-1, -1 ):
print( i, end=" " )
print()
for i in range( 11 ):
print( "%s%s----%s%s" % ( i*'*', i*'..', i*'-', i*'??' ) )
"""
# JES Program
# JES program to take a sound file and play with it
# D. Thiebaut
#
file = pickAFile()
sound = makeSound( file )
blockingPlay( sound )
# =======================================================
# clear waveform after "Remember"
# get start index for clearing
startIndex = 13393 # index just before "the force..."
# get the number of samples in the sound file
noSamples = getLength( sound )
# clear all the samples from startIndex to end:
for i in range( startIndex, noSamples ):
setSampleValueAt( sound, i, 0 )
# play sound again
#blockingPlay( sound )
# =======================================================
# Copy "remember" to the end of itself in the waveform
rememberLength = startIndex # that's the length of the word "remember"
for i in range( 0, startIndex ):
value = getSampleValueAt( sound, i )
setSampleValueAt( sound, i+rememberLength, value )
# play sound: "remember, remember"
blockingPlay( sound )
# get the original sound again
sound = makeSound( file )
blockingPlay( sound )
# =======================================================
# copy Always right after Remember
startAlways = 30444 # index just before "Always"
endRemember = 8968
# set j to the end of Remember
j = endRemember
for i in range( startAlways, noSamples ):
# copy from Always
value = getSampleValueAt( sound, i )
# into waveform after Remember
setSampleValueAt( sound, j, value )
# advance j by 1
j = j+1
# now j points to the end of the moved "Always"
endRememberAlways = j
# clear from the end of RememberAlways to the end of the waveform
for i in range( endRememberAlways, noSamples ):
setSampleValueAt( sound, i, 0 )
blockingPlay( sound )
"""
# =======================================================
# create an echo
startIndex = 13393 # index just before "the force..."
noSamples = getLength( sound )
# clear all the samples from startIndex to end:
for i in range( startIndex, noSamples ):
setSampleValueAt( sound, i, 0 )
# overlap remember on top of itself, starting at Index 6000
# which is roughly half the length of the word
endOfRemember = 13393
offset = 6000
for i in range( endOfRemember, 0, -1 ):
sourceValue = getSampleValueAt( sound, i)
destValue = getSampleValueAt( sound, i+offset )
setSampleValueAt( sound, i+offset, sourceValue//3 + destValue )
blockingPlay( sound )
"""
# =======================================================
# reverse the whole waveform
file = pickAFile()
sound = makeSound( file )
blockingPlay( sound )
# make j the index of the last sample in the sound
j = getLength(sound)-1
# make i go from beginning of sound to half way.
for i in range( getLength( sound ) // 2 ):
# get the two samples at Index i and at Index j
valueAti = getSampleValueAt( sound, i )
valueAtj = getSampleValueAt( sound, j )
# swap them
temp = valueAti
valueAti = valueAtj
valueAtj = temp
# put the swapped versions back in sound
setSampleValueAt( sound, i, valueAti )
setSampleValueAt( sound, j, valueAtj )
# move j to the left by 1. The for loop moves i to the right
j = j-1
blockingPlay( sound )