1
resposta

[Projeto] Minha solução

Quando assisti a primeira aula, vi que o objetivo do curso era linkar os botões no play de cada aúdio. Sendo assim fiz essa implementação antes de partir para as outras aulas:

<!DOCTYPE html>
<html lang="pt-BR">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Alura MIDI</title>

    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@500;600&display=swap" rel="stylesheet">

    <link rel="icon" type="image/png" href="images/bateria.png">
    <link rel="stylesheet" href="css/reset.css">
    <link rel="stylesheet" href="css/estilos.css">
    <script src="./main.js"></script>

</head>
<body>

    <h1>Alura Midi</h1>

    <section class="teclado">
        <button class="tecla tecla_pom" onclick="tocarAudio(0)">Pom</button>
        <button class="tecla tecla_clap" onclick="tocarAudio(1)">Clap</button>
        <button class="tecla tecla_tim" onclick="tocarAudio(2)">Tim</button>

        <button class="tecla tecla_puff" onclick="tocarAudio(3)">Puff</button>
        <button class="tecla tecla_splash" onclick="tocarAudio(4)">Splash</button>
        <button class="tecla tecla_toim" onclick="tocarAudio(5)">Toim</button>

        <button class="tecla tecla_psh" onclick="tocarAudio(6)">Psh</button>
        <button class="tecla tecla_tic" onclick="tocarAudio(7)">Tic</button>
        <button class="tecla tecla_tom" onclick="tocarAudio(8)">Tom</button>
    </section>

    <audio src="sounds/keyq.wav" preload="auto" id="som_tecla_pom"></audio>
    <audio src="sounds/keyw.wav" preload="auto" id="som_tecla_clap"></audio>
    <audio src="sounds/keye.wav" preload="auto" id="som_tecla_tim"></audio>
    <audio src="sounds/keya.wav" preload="auto" id="som_tecla_puff"></audio>
    <audio src="sounds/keys.wav" preload="auto" id="som_tecla_splash"></audio>
    <audio src="sounds/keyd.wav" preload="auto" id="som_tecla_toim"></audio>
    <audio src="sounds/keyz.wav" preload="auto" id="som_tecla_psh"></audio>
    <audio src="sounds/keyx.wav" preload="auto" id="som_tecla_tic"></audio>
    <audio src="sounds/keyc.wav" preload="auto" id="som_tecla_tom"></audio>

</body>
</html>


function tocarAudio(id)
{
    listaAudio = window.document.getElementsByTagName('audio');
    listaAudio[id].play();
}   

Não sei como será a implementação da professora, mas a solução que encontrei foi de psaar de parâmetro o índice de cada tag botão para que quando o javascript obtivesse a lista com os áudios, o parâmetro da função servisse de índice para tocar o áudio correto de acordo com o botão clicado.

1 resposta

Olá Rafael, tudo bem?

Que legal que você já conseguiu implementar uma solução para o objetivo do curso! É sempre bom colocar em prática o que estamos aprendendo.

Sobre a implementação da professora, ela provavelmente irá abordar outras formas de manipular os elementos da página e tocar os áudios, mas o importante é que você já deu um passo importante na direção certa.

Uma sugestão que eu poderia dar é utilizar o atributo "data-" nos botões para guardar o índice do áudio correspondente, assim você não precisa passar o índice como parâmetro na função. Ficaria algo assim:

<button class="tecla tecla_pom" data-audio="0" onclick="tocarAudio(this)">Pom</button>

E na função, você poderia acessar o índice do áudio assim:

function tocarAudio(botao)
{
    listaAudio = window.document.getElementsByTagName('audio');
    listaAudio[botao.dataset.audio].play();
}

Espero ter ajudado e bons estudos!