What if you put extra efforts on video game assignments----4
A downloadable game
Music Player
Project Description
A simple Music player that can play music layer by layer.
Assignment Rubrics
- 3 points - describe how to use/play your instrument in comments at the top of your code
- 5 points - use at least 5 sounds (through audio files, audio waves, or sound envelopes)
- 2 points - have a visual component that changes depending on what sounds are playing
- Extra Credit (1 point) - use more than 5 sounds
- Extra Credit (1 point) - add more interesting controls than simply "press some key to play the sound"
My Code
#Assignment 4
#Trying to do a EZ-music-player by pressing the button on UI
#No button required to play the music!
#It should be pretty straight-forward, just click the track you want to play
#Then it will play. Re-click the track will start over the song.
#If you want to add/remove some flavor for this song, just click the button.
#It have 9 music to load, so please be patient while loading
#Credits for the song goes to Daniel Sadowski, for creating these wonderful songs for Dota2 music pack!
add_library('sound')
#some Bools for making sure the Now-Playing status
m1L1B = False
m1L2B = False
m1L3B = False
m2L1B = False
m2L2B = False
m2L3B = False
m3L1B = False
m3L2B = False
m3L3B = False
xReso = 640
yReso = 480
sampleRate = xReso
#When mouse Clicked, pass the value to function
mouseClickPasser = False
def buttonCreation(posX, posY, sizeX, sizeY, setColor):
global mouseClickPasser
#Interpert Hex first
if (mouseX > posX) and (mouseX < (posX + sizeX)) and (mouseY > posY) and (mouseY < (sizeY + posY)):
fill(200,200,250)
rect(posX, posY, sizeX, sizeY)
if mouseClickPasser:
mouseClickPasser = False
return True
else:
fill(setColor)
rect(posX, posY, sizeX, sizeY)
return False
def mouseClicked():
global mouseClickPasser
mouseClickPasser = True
def setup():
global m1L1, m1L2, m1L3, m2L1, m2L2, m2L3, m3L1, m3L2, m3L3
global m1L1B, m1L2B, m1L3B, m2L1B, m2L2B, m2L3B, m3L1B, m3L2B, m3L3B
global sampleRate, wf1, wf2, wf3
global xReso, yReso
size(xReso, yReso)
background(0)
fill(255)
textSize(50)
text( "Loading", 250, 200)
#fill(255)
#textSize(30)
text( "EST: 10-20s ", 150, 280)
frameRate(30)
m2L1 = SoundFile(this, "lane1_layer1.mp3")
m2L2 = SoundFile(this, "lane1_layer2.mp3")
m2L3 = SoundFile(this, "lane1_layer3.mp3")
m1L1 = SoundFile(this, "lane2_layer1.mp3")
m1L2 = SoundFile(this, "lane2_layer2.mp3")
m1L3 = SoundFile(this, "lane2_layer3.mp3")
m3L1 = SoundFile(this, "lane3_layer1.mp3")
m3L2 = SoundFile(this, "lane3_layer2.mp3")
m3L3 = SoundFile(this, "lane3_layer3.mp3")
wf1 = Waveform(this, sampleRate)
wf2 = Waveform(this, sampleRate)
wf3 = Waveform(this, sampleRate)
wf1.input(m1L1)
wf2.input(m2L1)
wf3.input(m3L1)
def draw():
global m1L1, m1L2, m1L3, m2L1, m22, m2L3, m3L1, m3L2, m3L3
background(0)
playBackground()
playSound()
playAddon()
def playBackground():
global m1L1, m1L2, m1L3, m2L1, m2L2, m2L3, m3L1, m3L2, m3L3
global m1L1B, m1L2B, m1L3B, m2L1B, m2L2B, m2L3B, m3L1B, m3L2B, m3L3B
global sampleRate, wf1, wf2, wf3
if m1L1B:
drawSample(wf1, "#3c6ab5")
elif m2L1B:
drawSample(wf2, "#f05d30")
elif m3L1B:
drawSample(wf3, "#8e9c67")
else:
line(0, height/2, width, height/2)
fill(96, 131, 184, 200)
rect(12, 11, 169, 457)
rect(225, 11, 402, 457)
fill(255)
textSize(60)
text("Flavor Adder", 259, 154)
textSize(30)
text("Tracks", 47, 60)
def drawSample(waveform, colorHex):
global sampleRate
waveform.analyze()
#print("waveform analyzed")
fill(colorHex)
noStroke()
#print(str(waveform.data[100]))
for i in range(sampleRate):
rect(i, height/2 + waveform.data[i] * height /2 , 1, height/2 - waveform.data[i] * height / 2)
def stopAll():
global m1L1, m1L2, m1L3, m2L1, m2L2, m2L3, m3L1, m3L2, m3L3
global m1L1B, m1L2B, m1L3B, m2L1B, m2L2B, m2L3B, m3L1B, m3L2B, m3L3B
if m1L1B:
m1L1.stop()
m1L2.stop()
m1L3.stop()
m1L1B = False
m1L2B = False
m1L3B = False
#print("first should stopped now")
elif m2L1B:
m2L1.stop()
m2L2.stop()
m2L3.stop()
m2L1B = False
m2L2B = False
m2L3B = False
elif m3L1B:
m3L1.stop()
m3L2.stop()
m3L3.stop()
m3L1B = False
m3L2B = False
m3L3B = False
def playSound():
global m1L1, m1L2, m1L3, m2L1, m2L2, m2L3, m3L1, m3L2, m3L3
global m1L1B, m1L2B, m1L3B, m2L1B, m2L2B, m2L3B, m3L1B, m3L2B, m3L3B
if buttonCreation(30, 81, 135, 26, "#85EBE5"):
stopAll()
m1L1.play()
m1L2.play()
m1L3.play()
m1L2.amp(0.001)
m1L3.amp(0.001)
m1L1B = True
if buttonCreation(30, 122, 135, 26, "#85EBE5"):
stopAll()
m2L1.play()
m2L2.play()
m2L3.play()
m2L2.amp(0.001)
m2L3.amp(0.001)
m2L1B = True
if buttonCreation(30, 163, 135, 26, "#85EBE5"):
stopAll()
m3L1.play()
m3L2.play()
m3L3.play()
m3L2.amp(0.001)
m3L3.amp(0.001)
m3L1B = True
fill(0)
textSize(15)
text("Cool Music", 59, 100)
text("Hot Music", 63, 141)
text("Human Music", 49, 182)
def playAddon():
global m1L1, m1L2, m1L3, m2L1, m2L2, m2L3, m3L1, m3L2, m3L3
global m1L1B, m1L2B, m1L3B, m2L1B, m2L2B, m2L3B, m3L1B, m3L2B, m3L3B
if m1L1B:
if buttonCreation(271, 217, 127, 147, "#00B6F0"):
if m1L2B:
m1L2.amp(0.001)
m1L2B = False
else:
m1L2.amp(1)
m1L2B = True
fill(255)
textSize(30)
if m1L2B:
text("Remove", 283, 281)
else:
text("Add", 303,281)
text("Delicate", 281, 317)
if buttonCreation(442, 217, 135, 147, "#00B6F0"):
if m1L3B:
m1L3.amp(0.001)
m1L3B = False
else:
m1L3.amp(1)
m1L3B = True
fill(255)
textSize(30)
if m1L3B:
text("Remove", 447, 281)
else:
text("Add", 478,281)
text("Beats", 465, 317)
#Second Song
if m2L1B:
if buttonCreation(271, 217, 127, 147, "#00B6F0"):
if m2L2B:
m2L2.amp(0.001)
m2L2B = False
else:
m2L2.amp(1)
m2L2B = True
fill(255)
textSize(30)
if m2L2B:
text("Remove", 283, 281)
else:
text("Add", 303,281)
text("Delicate", 281, 317)
if buttonCreation(442, 217, 135, 147, "#00B6F0"):
if m2L3B:
m2L3.amp(0.001)
m2L3B = False
else:
m2L3.amp(1)
m2L3B = True
fill(255)
textSize(30)
if m2L3B:
text("Remove", 447, 281)
else:
text("Add", 478,281)
text("Beats", 465, 317)
#Third Song
if m3L1B:
if buttonCreation(271, 217, 127, 147, "#00B6F0"):
if m3L2B:
m3L2.amp(0.001)
m3L2B = False
else:
m3L2.amp(1)
m3L2B = True
fill(255)
textSize(30)
if m3L2B:
text("Remove", 283, 281)
else:
text("Add", 303,281)
text("Delicate", 281, 317)
if buttonCreation(442, 217, 135, 147, "#00B6F0"):
if m3L3B:
m3L3.amp(0.001)
m3L3B = False
else:
m3L3.amp(1)
m3L3B = True
fill(255)
textSize(30)
if m3L3B:
text("Remove", 447, 281)
else:
text("Add", 478,281)
text("Beats", 465, 317)
Screenshot

Download
Download
Assignment4_Sound.zip 19 MB
Install instructions
Must use processing 3 to run the code within the zip files.

Leave a comment
Log in with itch.io to leave a comment.