Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added .DS_Store
Binary file not shown.
Binary file not shown.
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
# assignment_royalty_free_music_player
Ushering in the reign of Royalty Free Music w/ JavaScript.

Jeffrey Dederick
Binary file added audio/.DS_Store
Binary file not shown.
Binary file added audio/Audiobinger_-_Catching_Feelings.mp3
Binary file not shown.
Binary file added audio/Caleb_Lemond_-_14_-_Life_Taught_Me.mp3
Binary file not shown.
Binary file added audio/Kadhja_Bonet_-_05_-_Miss_You.mp3
Binary file not shown.
Binary file added audio/Mystery_Mammal_-_08_-_Tip_Toe.mp3
Binary file not shown.
Binary file added audio/Pipe_Choir_-_10_-_Gemini.mp3
Binary file not shown.
Binary file added images/.DS_Store
Binary file not shown.
Binary file added images/FF.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/RFCrown.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/RR.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/pause.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/play_button.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
95 changes: 95 additions & 0 deletions index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
<!DOCTYPE html>
<html>
<head>
<title>Royalty Free Music Player</title>
<meta charset="UTF-9">
<meta name="viewport" content="width= device-width initial-scale=1.0">

<link rel="stylesheet" href="styles.css">
<link href="https://fonts.googleapis.com/css?family=Oswald" rel="stylesheet">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="script.js"></script>

</head>
<body>
<header id="header">
<img id="logo" src="images/RFCrown.jpeg">
<h1>Royalty Free Music Player</h1>
</header>

<main id="main">
<section>
<div class='container'>
<div class="play"></div>
</div>
<div class='track'>
<h2>Catching Feelings</h2>
<p>Audiobinger</p>
</div>
<audio id='catching-feelings' src="audio/Audiobinger_-_Catching_Feelings.mp3"></audio>
</section>

<section>
<div class='container'>
<div class="play"></div>
</div>
<div class='track'>
<h2>Life Taught Me</h2>
<p>Caleb Lemond</p>
</div>
<audio id='life-taught-me' src="audio/Caleb_Lemond_-_14_-_Life_Taught_Me.mp3"></audio>
</section>

<section>
<div class='container'>
<div class="play"></div>
</div>
<div class='track'>
<h2>Miss You</h2>
<p>Kadhja Bonet</p>
</div>
<audio id='miss-you' src="audio/Kadhja_Bonet_-_05_-_Miss_You.mp3"></audio>
</section>

<section>
<div class='container'>
<div class="play"></div>
</div>
<div class='track'>
<h2>Tip Toe</h2>
<p>Mystery Mammal</p>
</div>
<audio id= 'tip-toe' src="audio/Mystery_Mammal_-_08_-_Tip_Toe.mp3"></audio>
</section>

<section>
<div class='container'>
<div class="play"></div>
</div>
<div class='track'>
<h2>Gemini</h2>
<p>Pipe Choir</p>
</div>
<audio id='gemini' src="audio/Pipe_Choir_-_10_-_Gemini.mp3"></audio>
</section>

</main>

<footer id="foot">
<div id="control">
<img id="back" src="images/RR.jpg">
<div id='img-container'>
<img id="playback" src="images/play_button.png">
</div>
<img id="skip" src="images/FF.jpg">
</div>
<div class="track">
<h2>Song Title</h2>
<p>Artist</p>
</div>
<audio id="sound"></audio>
</footer>


</body>
</html>
176 changes: 176 additions & 0 deletions script.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,176 @@
let audioArray;
let sectionArray;
let lastThis;
let newThis;

$(document).ready(function() {
audioArray = $('audio');
sectionArray = $('section');

let iconReset = function() {
$('div.pause')
.addClass('play')
.removeClass('pause');
};

let trackIcon = function(element) {
if (element.hasClass('play')) {
element.removeClass('play').addClass('pause');
} else {
element.removeClass('pause').addClass('play');
}
};

let trackAssign = function(element) {
$('#sound').attr(
'src',
element
.parent()
.siblings('audio')
.attr('src')
);
};

let play = function() {
$('#sound')
.get(0)
.play();
$('#playback').attr('src', 'images/pause.jpg');
};

let pause = function() {
$('#sound')
.get(0)
.pause();
$('#playback').attr('src', 'images/play_button.png');
};

let redHeading = function(element) {
element
.parent()
.siblings('.track')
.find('h2')
.addClass('playing');
$('#foot h2').html(
element
.parent()
.siblings('.track')
.find('h2')
.html()
);
$('#foot p').html(
element
.parent()
.siblings('.track')
.find('p')
.html()
);
};

let tracker = function(callback) {
for (let i = 0; i < audioArray.length; i++) {
if ($(audioArray[i]).attr('src') === $('#sound').attr('src')) {
callback(i);
nowPlaying();
break;
}
}
};

let backTrack = function(i) {
if (i === 0) {
$('#sound').attr('src', $(audioArray[audioArray.length - 2]).attr('src'));
newThis = sectionArray[sectionArray.length - 1];
} else {
$('#sound').attr('src', $(audioArray[i - 1]).attr('src'));
newThis = sectionArray[i - 1];
}
play();
};

let skipTrack = function(i) {
if (i === audioArray.length - 2) {
$('#sound').attr('src', $(audioArray[0]).attr('src'));
newThis = sectionArray[0];
} else {
$('#sound').attr('src', $(audioArray[i + 1]).attr('src'));
newThis = sectionArray[i + 1];
}
play();
};

let restartTrack = function() {
$('#sound').get(0).currentTime = 0;
};

// let newThisFinder = function(callback) {
// return tracker(function() {
// return (newThis = sectionArray[i]);
// });
// };

let nowPlaying = function() {
iconReset();
$('h2').removeClass('playing');
$(newThis)
.find('h2')
.addClass('playing');
trackIcon($(newThis).find('div > div'));
$('#foot h2').html(
$(newThis)
.find('h2')
.html()
);
$('#foot p').html(
$(newThis)
.find('p')
.html()
);
lastThis = $(newThis).find('.pause');
};

$(document.body).on('click', '.play', function() {
if (lastThis !== undefined) {
lastThis.removeClass('pause').addClass('play');
$('h2').removeClass('playing');
}
trackIcon($(this));
trackAssign($(this));
play();
redHeading($(this));
lastThis = $(this);
});

$(document.body).on('click', '.pause', function() {
trackIcon($(this));
pause();
});

$(document.body).on('click', '#skip', function() {
trackIcon(lastThis);
return tracker(function(i) {
return skipTrack(i);
});
});

$(document.body).on('dblclick', '#back', function() {
trackIcon(lastThis);
return tracker(function(i) {
return backTrack(i);
});
});

$(document.body).on('click', '#back', function() {
restartTrack();
});

$(document.body).on('click', '#playback', function() {
if ($('#sound').prop('paused')) {
play();
trackIcon(lastThis);
} else {
pause();
trackIcon(lastThis);
}
});
});
87 changes: 87 additions & 0 deletions styles.css

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions styles.css.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading