Skip to content

Atividade

Metrónomo

Principiante | MakeCode, Python | Botões, Ecrã LED, Som | Iteração, Ritmo

Passo 1: Faz tu mesmo

O que é isto?

Programa o teu metrónomo eletrónico que reproduz batidas regulares que podes abrandar e acelerar enquanto praticas música.

Introdução

Guia do código

O que é que vais aprender

  • Como ajustar o tempo (ritmo) das notas musicais tocadas pelo micro:bit
  • Como usar os botões de entrada e saídas de áudio para criar um dispositivo eletrónico útil

Como é que funciona

  • No início do programa, ele define o tempo para 100 bpm - batidas por minuto (beats per minute). Esta é uma maneira padrão de medir o tempo (ou a velocidade) da música.
  • Um loop infinito faz com que o micro:bit toque toque uma nota e depois faça uma pausa de um tempo.
  • Podes ouvir o som ligando uns auriculares nos pins 0 e GND ou através do altifalante incorporado do novo micro:bit.
  • Carrega no botão A para abrandar o tempo em 5 bpm.
  • Carrega no botão B para acelerar em 5 bpm.
  • Se carregares simultaneamente nos botões A e B, aparece escrito no ecrã LED o tempo que está a ser usado.

Do que é que precisas

  • Um micro:bit
  • Editor MakeCode ou Python
  • Suporte de pilhas (opcional)

Passo 2: Cria o teu código

1from microbit import *
2import music
3tempo = 100
4
5while True:
6    music.set_tempo(bpm=tempo)
7    music.play(['C4:1', 'r:3']) # play C for 1 tick, rest for 3 ticks
8    if button_a.was_pressed():
9        tempo -= 5
10    if button_b.was_pressed():
11        tempo += 5  
12    

Passo 3: Melhora-o

  • Podes notar que ele toca os ritmos ligeiramente mais devagar que outros instrumentos eletrónicos com as mesmas definições de bpm. Isto deve-se ao facto de cada loop demorar um beat e 16 avos, em vez de um só beat.
  • Podes tentar torná-lo mais preciso somando frações de um beat para fazer um beat inteiro: 1/2 + 1/4 + 1/8 + 1/16 faz 15/16 para adicionar 1/16 do beat para o qual estás a tocar o tom.
  • Blocos "forever" (infinitos) também acrescentam um pequeno atraso. Usa um loop "while true" (enquanto verdadeiro) dentro do bloco para acelerar o teu código e tornando-o mais preciso.
  • O vídeo tutorial em cima mostra como fazes isto.
Grelha a mostrar as frações de beats a adicionar a quinze 16 avos