File tree 3 files changed +51
-2
lines changed
3 files changed +51
-2
lines changed Original file line number Diff line number Diff line change @@ -13,6 +13,7 @@ class DrumKit {
13
13
this . isPlaying = null ;
14
14
this . selects = document . querySelectorAll ( "select" ) ;
15
15
this . muteBtn = document . querySelectorAll ( ".mute" ) ;
16
+ this . tempoSlider = document . querySelector ( ".tempo-slider" ) ;
16
17
}
17
18
activePad ( ) {
18
19
this . classList . toggle ( "active" ) ;
@@ -111,6 +112,19 @@ class DrumKit {
111
112
}
112
113
}
113
114
}
115
+ changeTempo ( e ) {
116
+ const tempoText = document . querySelector ( ".tempo-nr" ) ;
117
+ tempoText . innerText = e . target . value ;
118
+ }
119
+ updateTempo ( e ) {
120
+ this . bpm = e . target . value ;
121
+ clearInterval ( this . isPlaying ) ;
122
+ this . isPlaying = null ;
123
+ const playBtn = document . querySelector ( ".play" ) ;
124
+ if ( playBtn . classList . contains ( "active" ) ) {
125
+ this . start ( ) ;
126
+ }
127
+ }
114
128
}
115
129
const drumKit = new DrumKit ( ) ;
116
130
@@ -136,3 +150,9 @@ drumKit.muteBtn.forEach((btn) => {
136
150
drumKit . mute ( e ) ;
137
151
} ) ;
138
152
} ) ;
153
+ drumKit . tempoSlider . addEventListener ( "input" , ( e ) => {
154
+ drumKit . changeTempo ( e ) ;
155
+ } ) ;
156
+ drumKit . tempoSlider . addEventListener ( "change" , ( e ) => {
157
+ drumKit . updateTempo ( e ) ;
158
+ } ) ;
Original file line number Diff line number Diff line change @@ -81,6 +81,10 @@ <h1>HiHat</h1>
81
81
</ div >
82
82
</ div >
83
83
< button class ="play "> Play</ button >
84
+ < div class ="tempo ">
85
+ < input type ="range " class ="tempo-slider " max ="100 " min ="0 " value ="50 ">
86
+ < p > Tempo: < span class ="tempo-nr "> 50</ span > </ p >
87
+ </ div >
84
88
</ div >
85
89
< audio class ="kick-sound " src ="./sounds/kick-classic.wav "> </ audio >
86
90
< audio class ="snare-sound " src ="./sounds/snare-acoustic01.wav "> </ audio >
Original file line number Diff line number Diff line change 20
20
height : 5rem ;
21
21
margin : 1rem 0.5rem ;
22
22
cursor : pointer;
23
+ border-radius : 3px ;
23
24
}
24
25
25
26
.kick-pad {
61
62
align-items : center;
62
63
width : 70% ;
63
64
justify-content : space-between;
64
- margin-top : 5 rem ;
65
+ margin-top : 2 rem ;
65
66
}
66
67
67
68
.kick ,
@@ -102,7 +103,7 @@ svg {
102
103
border : none;
103
104
cursor : pointer;
104
105
margin-top : 3rem ;
105
- border-radius : 3 px ;
106
+ border-radius : 1 rem ;
106
107
}
107
108
108
109
select {
@@ -115,6 +116,30 @@ select {
115
116
color : white;
116
117
}
117
118
119
+ .tempo {
120
+ margin : 3rem ;
121
+ width : 30% ;
122
+ }
123
+
124
+ .tempo-slider {
125
+ padding : 0.1rem ;
126
+ -webkit-appearance : none;
127
+ margin : 1rem 0 ;
128
+ width : 100% ;
129
+ position : relative;
130
+ background : rgb (88 , 88 , 88 );
131
+ border-radius : 1rem ;
132
+ border : none;
133
+ outline : none;
134
+ cursor : pointer;
135
+ }
136
+
137
+ .tempo p {
138
+ font-size : 1.5rem ;
139
+ margin : 0.5rem ;
140
+ text-align : center;
141
+ }
142
+
118
143
@keyframes playTrack {
119
144
from {
120
145
transform : scale (1 );
You can’t perform that action at this time.
0 commit comments