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
127 changes: 63 additions & 64 deletions students/copy-and-rename/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Piano Application</title>
<link rel="stylesheet" href="css/styling.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="js/scripts.js"></script>
</head>

Expand Down Expand Up @@ -44,71 +45,69 @@ <h2><b>Ebony and Ivory meet CSS.</b><br> Tap a key to play its note</h2>
<li data-note="b">B</li>
</ol>
<!-- ol class="scale-3">
<li data-note="c">C</li>
<li data-note="cs" class="ebony">C# D♭</li>
<li data-note="d">D</li>
<li data-note="ds" class="ebony">D# E♭</li>
<li data-note="e">E</li>
<li data-note="f">F</li>
<li data-note="fs" class="ebony">F# G♭</li>
<li data-note="g">G</li>
<li data-note="gs" class="ebony">G# A♭</li>
<li data-note="a">A</li>
<li data-note="as" class="ebony">A# B</li>
<li data-note="b">B</li>
</ol -->
</div>

<!-- Original mp3 files from http://www.vibrationdata.com/piano.htm -->
<li data-note="c">C</li>
<li data-note="cs" class="ebony">C# D♭</li>
<li data-note="d">D</li>
<li data-note="ds" class="ebony">D# E♭</li>
<li data-note="e">E</li>
<li data-note="f">F</li>
<li data-note="fs" class="ebony">F# G♭</li>
<li data-note="g">G</li>
<li data-note="gs" class="ebony">G# A♭</li>
<li data-note="a">A</li>¨
<li data-note="as" class="ebony">A# B</li>
<li data-note="b">B</li>
</ol -->
</div¨ <!-- Original mp3 files from http://www.vibrationdata.com/piano.htm -->

C <audio id="mid-c" preload="auto" controls>
<source src="https://dl.dropbox.com/u/37434025/PianoTones/piano_middle_C.mp3">
</source>
</audio>
C# <audio preload="auto" id="mid-c-sharp" controls>
<source src="https://dl.dropbox.com/u/37434025/PianoTones/piano_C_sharp.mp3">
</source>
</audio>
D <audio preload="auto" id="mid-d" controls>
<source src="https://dl.dropbox.com/u/37434025/PianoTones/piano_D.mp3">
</source>
</audio>
D# <audio preload="auto" id="mid-d-sharp" controls>
<source src="https://dl.dropbox.com/u/37434025/PianoTones/piano_D_sharp.mp3">
</source>
</audio>
E <audio preload="auto" id="mid-e" controls>
<source src="https://dl.dropbox.com/u/37434025/PianoTones/piano_E.mp3">
</source>
</audio>
F <audio preload="auto" id="mid-f" controls>
<source src="https://dl.dropbox.com/u/37434025/PianoTones/piano_F.mp3">
</source>
</audio>
F# <audio preload="auto" id="mid-f-sharp" controls>
<source src="https://dl.dropbox.com/u/37434025/PianoTones/piano_F_sharp.mp3">
</source>
</audio>
G <audio preload="auto" id="mid-g" controls>
<source src="https://dl.dropbox.com/u/37434025/PianoTones/piano_G.mp3">
</source>
</audio>
G#<audio preload="auto" id="mid-g-sharp" controls>
<source src="https://dl.dropbox.com/u/37434025/PianoTones/piano_G_sharp.mp3">
</source>
</audio>
A <audio preload="auto" id="mid-a" controls>
<source src="https://dl.dropbox.com/u/37434025/PianoTones/piano_A.mp3">
</source>
</audio>
A# <audio preload="auto" id="mid-a-sharp" controls>
<source src="https://dl.dropbox.com/u/37434025/PianoTones/piano_A_sharp.mp3">
</source>
</audio>
B <audio preload="auto" id="mid-b" controls>
<source src="https://dl.dropbox.com/u/37434025/PianoTones/piano_B.mp3">
</source>
</audio>
C <audio id="c" preload="auto" controls>
<source src="http://www.vibrationdata.com/piano_middle_C.mp3">
</source>
</audio>
C# <audio preload="auto" id="c-sharp" controls>
<source src="http://www.vibrationdata.com/piano_C_sharp.mp3">
</source>
</audio>
D <audio preload="auto" id="d" controls>
<source src="http://www.vibrationdata.com/piano_D.mp3">
</source>
</audio>
D# <audio preload="auto" id="d-sharp" controls>
<source src="http://www.vibrationdata.com/piano_D_sharp.mp3">
</source>
</audio>
E <audio preload="auto" id="e" controls>
<source src="http://www.vibrationdata.com/piano_E.mp3">
</source>
</audio>
F <audio preload="auto" id="f" controls>
<source src="http://www.vibrationdata.com/piano_F.mp3">
</source>
</audio>
F# <audio preload="auto" id="f-sharp" controls>
<source src="http://www.vibrationdata.com/piano_F_sharp.mp3">
</source>
</audio>
G <audio preload="auto" id="g" controls>
<source src="http://www.vibrationdata.com/piano_G.mp3">
</source>
</audio>
G#<audio preload="auto" id="g-sharp" controls>
<source src="http://www.vibrationdata.com/piano_G_sharp.mp3">
</source>
</audio>
A <audio preload="auto" id="a" controls>
<source src="http://www.vibrationdata.com/piano_A.mp3">
</source>
</audio>
A# <audio preload="auto" id="a-sharp" controls>
<source src="http://www.vibrationdata.com/piano_A_sharp.mp3">
</source>
</audio>
B <audio preload="auto" id="b" controls>
<source src="http://www.vibrationdata.com/piano_B.mp3">
</source>
</audio>
</body>

</html>
13 changes: 11 additions & 2 deletions students/copy-and-rename/js/scripts.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,16 @@
/*

Is you use this in a project, drop me a line. I'd love to see it used in action!

document.addEventListener("DOMContentLoaded", function(event) {
var buttons = document.getElementsByClassName('keyboard');
var index = buttons.length;

while (index--) {
buttons[index].addEventListener('click', function(){
var note = this.dataset.note.replace('s', '-sharp');
document.getElementById(note).play();
});
}
});
*/
$(document).ready(function() {
var c = $("#mid-c")[0];
Expand Down
125 changes: 125 additions & 0 deletions students/michaela-karkia/css/styling.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
@import url(https://fonts.googleapis.com/css?family=Pirata+One);

* {
box-sizing: border-box;
}

body {
background: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2RjZGNkYyIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');
background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, #dcdcdc));
background: -moz-linear-gradient(top, #ffffff, #dcdcdc 100%);
background: -webkit-linear-gradient(top, #ffffff, #dcdcdc 100%);
background: linear-gradient(to bottom, #ffffff, #dcdcdc 100%);
background-size: cover;
}

audio {
display: block;
margin-bottom: 1rem;
}

h1,
h2 {
color: #646464;
line-height: 1.2;
margin: 0 0 1rem;
text-shadow: 0 2px 4px rgba(0, 0, 0, 0.25);
}

h1 b,
h2 b {
color: #640000;
text-shadow: 0px 1px 5px #ccc;
}

h1 {
font-family: "Pirata One", cursive;
font-size: 3rem;
}

.page {
margin: 30px auto;
text-align: center;
width: 75%;
overflow: hidden;
}

ol {
position: relative;
padding: 0;
margin: 0 0 10px;
display: inline-block;
font-size: 0;
}

li {
font-size: 16px;
font-size: 1rem;
background: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2MwYzFiZCIvPjxzdG9wIG9mZnNldD0iMTAlIiBzdG9wLWNvbG9yPSIjZjBmMGYwIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjZmFmMGU2Ii8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g');
background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #c0c1bd), color-stop(10%, #f0f0f0), color-stop(100%, #faf0e6));
background: -moz-linear-gradient(top, #c0c1bd, #f0f0f0 10%, #faf0e6);
background: -webkit-linear-gradient(top, #c0c1bd, #f0f0f0 10%, #faf0e6);
background: linear-gradient(to bottom, #c0c1bd, #f0f0f0 10%, #faf0e6);
transition: all 0.1s ease-in-out;
padding: 0;
margin: 0;
display: inline-block;
border: 1px solid #ccc;
padding: 220px 15px 50px;
border-radius: 0 0 5px 5px;
box-shadow: 0 5px 5px #aaa;
position: relative;
z-index: 1;
cursor: pointer;
color: transparent;
}

li:hover {
color: #c0c1bd;
}

li:active {
box-shadow: none;
top: 5px;
color: #333;
}

li.ebony {
/* build the key shape */
z-index: 2;
position: absolute;
width: 32px;
top: 0px;
margin-left: -16px;
padding: 130px 0px 10px;
/* Typography */
text-align: center;
font-size: 0.66667rem;
color: transparent;
border-radius: 0 0 2px 2px;
border-width: 0 6px 12px;
border-color: #000;
border-bottom-color: #424546;
background: #171c1a;
background: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzVmNjI2NSIvPjxzdG9wIG9mZnNldD0iMjUlIiBzdG9wLWNvbG9yPSIjMTUxYjE5Ii8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjMTcxYzFhIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g');
background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #5f6265), color-stop(25%, #151b19), color-stop(100%, #171c1a));
background: -moz-linear-gradient(#5f6265, #151b19 25%, #171c1a);
background: -webkit-linear-gradient(#5f6265, #151b19 25%, #171c1a);
background: linear-gradient(#5f6265, #151b19 25%, #171c1a);
box-shadow: 0 3px 5px #ccc, inset 0px 0px 0px 1px rgba(220, 220, 220, 0.2);
}

li.ebony:hover {
color: gainsboro;
}

li.ebony:active {
background: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzVmNjI2NSIvPjxzdG9wIG9mZnNldD0iNTAlIiBzdG9wLWNvbG9yPSIjMTUxYjE5Ii8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjMTcxYzFhIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g');
background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #5f6265), color-stop(50%, #151b19), color-stop(100%, #171c1a));
background: -moz-linear-gradient(#5f6265, #151b19 50%, #171c1a);
background: -webkit-linear-gradient(#5f6265, #151b19 50%, #171c1a);
background: linear-gradient(#5f6265, #151b19 50%, #171c1a);
border-bottom-width: 8px;
padding-top: 135px;
color: white;
}
Loading