Desafio
Dada a tablatura da guitarra, você deve produzir a música representada pela guia. Isso pode ser nos alto-falantes do seu computador ou em um arquivo de áudio (.wav, .mp3, .midi, .aiff etc.). Também haverá uma segunda entrada para o tempo.
As guias podem ser inseridas através de um arquivo ou diretamente no STDIN. A guia estará no formato ASCII .
Spec
Todas as guias são para 6 guitarras de seis cordas com afinação padrão E: E2 (82,41 Hz), A2 (110,00 Hz), D3 (146,83 Hz), G3 (196,00 Hz), B3 (246,94 Hz), E4 (329,63 Hz).
As únicas técnicas (além da escolha normal) que você precisa cuidar são:
- Dobra (sempre será uma dobra em meio-tom)
- Martelando
- Puxando
- Deslizando para cima / baixo
Como você não pode sintetizar o som de uma corda silenciada, trate x
como a -
.
Ao dobrar, faça a transição completa de não dobrado para sequência para dobrado para não dobrado novamente.
A segunda entrada será o tempo que cada símbolo na guia representa em segundos. Por exemplo:
Para entrada:
e|---
B|---
G|---
D|---
A|---
E|---
Com o tempo 0.5
, porque existem 3
colunas de símbolos (mas nenhuma nota), o arquivo de áudio emitido é ( 3*0.5=1.5
) 1.5
segundos de silêncio.
Guias de exemplo
1 - O Peso (Jack White, Jimmy Page + edição The Edge)
e|----3-----3---3----2---------3--------------------|
B|----3-----3---3----3--1-1----3--------------------|
G|----0-----0---0----2--0-0----0--------------------|
D|----0-----0---2-------2-2----0--------------------|
A|----2-----0---2-------3-3----2--------------------|
E|----3-----2---x----2--x-x----3--------------------|
2 - Cheira a espírito adolescente
e|--------------|---------------|-------------|-------------|
B|--------------|---------------|-------------|-------------|
G|-----8h10-----|-8-8b----6--5--|-6--5--------|-------------|
D|-10--------6--|---------------|-------8-6-8-|-8b----6--5--|
A|--------------|---------------|-------------|-------------|
E|--------------|---------------|-------------|-------------|
3 - Banner em estrela
e|---0-------2-5---9-7-5-----------9-7-5-4-2-4-5------|
B|-----2---2-------------2-4-5---5---------------5-2--|
G|-------2-------------------------------------------2|
D|----------------------------------------------------|
A|----------------------------------------------------|
E|----------------------------------------------------|
fonte
Respostas:
MATLAB
Isso é meio inacabado. Usei um método rápido e sujo para tornar o áudio o mais fácil possível. O método que eu usei dificultava a implementação da flexão / martelamento (eu nunca tinha ouvido essas palavras antes neste contexto).
Dito tudo isso, esse script será lido em um arquivo de texto chamado "inputs.txt", que contém a guia ascii conforme necessário, e tocará a música.
Aqui está um link para o som da primeira entrada de teste.
Aqui está um link para o som da terceira entrada de teste. (Star Spangled Banner ou caminhão de sorvete?)
A segunda entrada de teste me pareceu muito ruim, mas pode ser porque ela usa muitos
b
s eh
s que o script ignora.Como você pode ouvir, a saída não é exatamente da mesma qualidade que a original. Parece que há um metrônomo tocando em segundo plano. Eu acho que essas músicas têm caráter.
fonte
Python 3
Eu tive que tentar este.
Isso converte uma guia em um arquivo midi, conforme tocado por um piano. Eu não tenho idéia de como fazer uma corda dobrando um piano, por isso não pode fazer isso, mas as marteladas e as retiradas são simples.
Gerei os arquivos de teste da seguinte forma:
$ python3 tab.py The-weight.txt 0.14
onde0.14
está o tamanho de uma única nota em segundos.O código também está no github, https://github.com/Mattias1/ascii-tab , onde também carreguei o resultado dos exemplos fornecidos pelo OP. Eu também tentei em algumas das minhas próprias guias. É muito estranho ouvir um piano tocando, mas não é ruim.
Exemplos:
Adicionei alguns links diretos, mas não sei por quanto tempo eles permanecem, por isso vou manter os links de download antigos também.
E a aba da música de Matty (minha favorita) abaixo:
fonte
2/3
dessas 'batidas' são de fato traços.Script Java
Nota: Utiliza o Kit de Áudio para Desenvolvimento Web; Isso está fora da Liga do IE; Testado no Google Chrome
Você pode colocar as guias na área de texto. Ou seja, você pode colocar a música de Matty no post de Matty na área de texto (com as letras nas notas) e ele ainda será analisado corretamente.
Clique para executar o programa
JavaScript:
Você pode identificar essa música?
fonte
| / b h p
. Por que não fazer apenas uma pequena análise de string para substituí-los-
? Isso vai parecer bem e funciona. (E talvez divida em novas linhas usando uma caixa de entrada.). Isso tornará este um roteiro divertido de se jogar.Java
Este programa converte uma tablatura para o formato WAV de 16 bits.
Primeiro, escrevi um monte de código de análise de tablatura. Não tenho certeza se minha análise está totalmente correta, mas acho que está tudo bem. Além disso, poderia usar mais validação para dados.
Depois disso, criei o código para gerar o áudio. Cada sequência é gerada separadamente. O programa controla a frequência atual, amplitude e fase. Em seguida, gera 10 sobretons para a frequência com amplitudes relativas inventadas e as soma. Finalmente, as seqüências de caracteres são combinadas e o resultado é normalizado. O resultado é salvo como áudio WAV, que eu escolhi por seu formato ultra-simples (nenhuma biblioteca usada).
Ele "suporta" martelar (
h
) e puxar (p
) ignorando-os, pois eu realmente não tive tempo para fazê-los parecer muito diferentes. O resultado parece um pouco com uma guitarra (passei algumas horas analisando minha guitarra no Audacity).Além disso, suporta flexão (
b
), liberação (r
) e deslizamento (/
e\
intercambiáveis).x
é implementado como silenciar a cadeia.Você pode tentar ajustar as constantes no início do código. Especialmente, a redução
silenceRate
geralmente leva a uma melhor qualidade.Resultados de exemplo
O código
Quero avisar qualquer iniciante em Java: não tente aprender nada com este código, ele está terrivelmente escrito. Além disso, ele foi escrito rapidamente e em 2 sessões e não era para ser usado novamente, por isso não tem comentários. (Pode adicionar mais tarde: P)
fonte