Day 20-24: Drum Machine

The project

As the name suggest, we’re gonna make a site with drum pads that play sound when triggered ๐Ÿฅ. The site was made with React and SASS. I figured I’ll take 3 days to complete this, but circumstances pushed this to 4 days. Life alway…


This content originally appeared on DEV Community and was authored by Kemystra

The project

As the name suggest, we're gonna make a site with drum pads that play sound when triggered ๐Ÿฅ. The site was made with React and SASS. I figured I'll take 3 days to complete this, but circumstances pushed this to 4 days. Life always get in the way, so I should be more prepared about it ๐Ÿ’ช

What I learned

  • How to dynamically render components in React

We can use array and its methods, such as Array.map():

render() {
    const soundArr = ["blip", "clan", "clap", "cymbal", "kclick", "piano1", "piano2", "snaps", "whoop"];
    const keyArr = ["Q", "W", "E", "A", "S", "D", "Z", "X", "C"];

    return (
        <div id="drum-machine">
            <p id="drum-title">Drum Machine</p>
            <Display />
            {soundArr.map((soundClip, index) => <DrumPad audioName={soundClip} key={keyArr[index]} cap={keyArr[index]} />)}
        </div>
    );
}
  • onkeydown event on the document

To detect key presses on the HTML document, we can use the onkeydown event:

document.onkeydown = (e) => {
    let pressedSound = document.getElementById(e.key.toUpperCase());
    if(pressedSound) {
        pressedSound.play();
        document.getElementById("display").innerText = pressedSound.parentElement.id;
}

Note that there used to be onkeypress event, but it is now deprecated.

  • Add gradient overlay over background image

We can use background-image CSS property for this:

background-image: linear-gradient(180deg, rgba(0,255,233,0.0) 0%, rgba(0,0,0,1) 100%), 
    url('https://t4.ftcdn.net/jpg/03/58/36/11/360_F_358361101_z9baaIEmkyst0OQ8mov82r9hen7glZGb.jpg');

Afterwords

It's nearing the end of Ramadan, which means preparation for Eid is incoming. It will be a very busy week. Hope I can still continue doing this throughout Eid celebration.

Anyway, happy Eid for Muslims around the world! โœจ

Follow me on Github!
Also on Twitter!


This content originally appeared on DEV Community and was authored by Kemystra


Print Share Comment Cite Upload Translate Updates
APA

Kemystra | Sciencx (2022-05-01T13:14:15+00:00) Day 20-24: Drum Machine. Retrieved from https://www.scien.cx/2022/05/01/day-20-24-drum-machine/

MLA
" » Day 20-24: Drum Machine." Kemystra | Sciencx - Sunday May 1, 2022, https://www.scien.cx/2022/05/01/day-20-24-drum-machine/
HARVARD
Kemystra | Sciencx Sunday May 1, 2022 » Day 20-24: Drum Machine., viewed ,<https://www.scien.cx/2022/05/01/day-20-24-drum-machine/>
VANCOUVER
Kemystra | Sciencx - » Day 20-24: Drum Machine. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2022/05/01/day-20-24-drum-machine/
CHICAGO
" » Day 20-24: Drum Machine." Kemystra | Sciencx - Accessed . https://www.scien.cx/2022/05/01/day-20-24-drum-machine/
IEEE
" » Day 20-24: Drum Machine." Kemystra | Sciencx [Online]. Available: https://www.scien.cx/2022/05/01/day-20-24-drum-machine/. [Accessed: ]
rf:citation
» Day 20-24: Drum Machine | Kemystra | Sciencx | https://www.scien.cx/2022/05/01/day-20-24-drum-machine/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.