🎶 Criando Música com Código: Quando Programação Vira Instrumento.
A música sempre foi sobre criação. Do violão simples até uma pedaleira cheia de efeitos, cada músico busca novas formas de se expressar.
Do outro lado, programadores também criam — mas a matéria-prima é o código.
Agora, imagine unir os dois mundos: e se programar fosse como tocar um instrumento?
🎼 Música Algorítmica: a ideia não é tão nova assim
Pode parecer novidade, mas compositores já brincavam com lógica há séculos.
Mozart, por exemplo, inventou um jogo em que dados eram lançados para montar composições musicais.
Hoje, fazemos algo parecido, só que com algoritmos e linguagens de programação.
💻 Exemplo prático: Gerando uma escala musical em Python
Vamos começar simples, mostrando que qualquer pessoa pode criar música com código.
Instalando as ferramentas
pip install MIDIUtil pydub
Código da escala de Dó maior
from midiutil import MIDIFile
# Cria um arquivo MIDI com 1 trilha
midi = MIDIFile(1)
midi.addTempo(0, 0, 120) # trilha, tempo inicial, BPM
# Notas da escala de Dó maior (em valores MIDI)
scale = [60, 62, 64, 65, 67, 69, 71, 72]
# Adiciona cada nota com duração de 1 batida
for i, note in enumerate(scale):
midi.addNote(0, 0, note, i, 1, 100)
# Salva em arquivo
with open("scale.mid", "wb") as f:
midi.writeFile(f)
print("🎹 Arquivo 'scale.mid' criado! Toque em qualquer player MIDI ou DAW.")
➡️ Resultado: um arquivo scale.mid
que toca a escala de Dó maior.
Você pode abrir no GarageBand, Reaper, FL Studio, Ableton ou qualquer DAW.
🤖 Agora entra a IA: Magenta gerando melodias
O Magenta é um projeto do Google que usa redes neurais para gerar música, imagens e até poesia.
Na música, ele consegue aprender padrões e sugerir continuações de melodias.
Instalando o Magenta
pip install magenta
(obs: é um pacote grande, pois traz modelos pré-treinados do TensorFlow)
Gerando uma melodia com IA (linha de comando)
melody_rnn_generate \
--config=basic_rnn \
--bundle_file=/tmp/basic_rnn.mag \
--output_dir=/tmp/melodia_ia \
--num_outputs=1 \
--num_steps=64 \
--primer_melody="[60]" \
--tempo=120
--primer_melody="[60]"
→ nota inicial (60 = Dó).--num_steps=64
→ quantidade de notas que a IA vai criar.- Resultado: um arquivo
.mid
com a melodia gerada.
Gerando continuação de uma melodia em Python
import note_seq
from magenta.models.melody_rnn import melody_rnn_sequence_generator
from magenta.models.shared import sequence_generator_bundle
from magenta.protobuf import generator_pb2, music_pb2
# Carrega modelo pré-treinado
bundle = sequence_generator_bundle.read_bundle_file('/tmp/basic_rnn.mag')
generator_map = melody_rnn_sequence_generator.get_generator_map()
melody_rnn = generator_map['basic_rnn'](checkpoint=None, bundle=bundle)
melody_rnn.initialize()
# Melodia inicial (C4, D4, E4)
primer = music_pb2.NoteSequence()
primer.notes.add(pitch=60, start_time=0, end_time=0.5, velocity=80)
primer.notes.add(pitch=62, start_time=0.5, end_time=1.0, velocity=80)
primer.notes.add(pitch=64, start_time=1.0, end_time=1.5, velocity=80)
primer.total_time = 1.5
# Configuração da geração
generator_options = generator_pb2.GeneratorOptions()
generator_options.generate_sections.add(start_time=primer.total_time, end_time=8)
# Gera continuação
sequence = melody_rnn.generate(primer, generator_options)
# Salva resultado em MIDI
note_seq.sequence_proto_to_midi_file(sequence, "melodia_ia.mid")
print("🎵 Arquivo 'melodia_ia.mid' criado com continuação gerada pela IA!")
👉 Aqui você toca as primeiras notas e a IA completa o resto.
🎵 Aplicações reais
- Produtores musicais → geram backing tracks automáticas para estudo ou criação.
- Games → trilhas sonoras que mudam conforme o jogador age.
- Músicos → exploram estilos fora da sua zona de conforto.
🚀 Conclusão
Com poucas linhas de código, mostramos como programar música:
- Primeiro de forma manual (escala MIDI).
- Depois com IA sugerindo melodias novas.
A programação virou um instrumento criativo, e a IA, um parceiro de improviso.
Para músicos, é inspiração.
Para programadores, é expressão.
Para todos, é uma nova forma de fazer arte com tecnologia.
“A IA não veio substituir a arte — veio abrir caminhos para que músicos e programadores toquem juntos a mesma sinfonia.”