Défi
Étant donné la tablature de guitare, vous devez produire le morceau représenté par l'onglet. Il peut s'agir des haut-parleurs de votre ordinateur ou d'un fichier audio (.wav, .mp3, .midi, .aiff, etc.). Il y aura également une deuxième entrée pour le chronométrage.
Les onglets peuvent être saisis via un fichier ou directement dans STDIN. L'onglet sera au format ASCII .
Spec
Tous les onglets sont pour 6 guitares à six cordes avec accordage E standard: E2 (82,41 Hz), A2 (110,00 Hz), D3 (146,83 Hz), G3 (196,00 Hz), B3 (246,94 Hz), E4 (329,63 Hz).
Les seules techniques (en plus de la cueillette normale) que vous devez utiliser sont:
- Flexion (ce sera toujours un demi-ton)
- Marteler
- Enlevant
- Glissement haut / bas
Comme vous ne pouvez pas synthétiser le son d'une chaîne en sourdine, traitez x
comme un -
.
Lors du pliage, sortez à nouveau la transition complète de non plié en chaîne à plié en déplié.
La deuxième entrée sera le temps que chaque symbole sur l'onglet représente en secondes. Par exemple:
Pour l'entrée:
e|---
B|---
G|---
D|---
A|---
E|---
Avec le timing 0.5
, car il y a des 3
colonnes de symboles (mais pas de notes), le fichier audio généré est de ( 3*0.5=1.5
) 1.5
secondes de silence.
Exemples d'onglets
1 - Le poids (Jack White, Jimmy Page + The Edge edition)
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 - Sent comme l'adolescence
e|--------------|---------------|-------------|-------------|
B|--------------|---------------|-------------|-------------|
G|-----8h10-----|-8-8b----6--5--|-6--5--------|-------------|
D|-10--------6--|---------------|-------8-6-8-|-8b----6--5--|
A|--------------|---------------|-------------|-------------|
E|--------------|---------------|-------------|-------------|
3 - bannière étoilée
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|----------------------------------------------------|
la source
Réponses:
MATLAB
C'est en quelque sorte inachevé. J'ai utilisé une méthode rapide et sale pour rendre l'audio aussi facilement que possible. La méthode que j'ai utilisée a rendu difficile la mise en œuvre du pliage / martelage (je n'avais jamais entendu ces mots dans ce contexte auparavant).
Cela dit, ce script lira dans un fichier texte appelé "inputs.txt" contenant l'ascii-tab comme requis et jouera la chanson.
Voici un lien vers le son de la première entrée de test.
Voici un lien vers le son de la troisième entrée de test. (Bannière étoilée étoilée ou camion de crème glacée?)
La deuxième entrée de test m'a semblé assez mauvaise, mais c'est peut-être parce qu'elle utilise beaucoup de
b
s et deh
s que le script ignore.Comme vous pouvez l'entendre, la sortie n'est pas tout à fait de la même qualité que l'original. Cela ressemble à un métronome jouant en arrière-plan. Je pense que ces airs ont du caractère.
la source
Python 3
J'ai dû essayer celui-ci.
Cela convertit un onglet en un fichier midi tel que joué par un piano. Je ne sais pas comment faire une flexion de cordes sur un piano, donc ça ne peut pas faire ça, mais les marteaux et les pull-off sont simples.
J'ai généré les fichiers de test comme ceci:
$ python3 tab.py The-weight.txt 0.14
où0.14
est la longueur d'une seule note en secondes.Le code est également sur github, https://github.com/Mattias1/ascii-tab , où j'ai également téléchargé le résultat des exemples fournis par l'OP. Je l'ai également essayé sur certains de mes propres onglets. C'est assez bizarre d'entendre un piano jouer, mais ce n'est pas mal.
Exemples:
J'ai ajouté quelques liens directs, mais je ne sais pas combien de temps ils restent, donc je conserverai également les anciens liens de téléchargement.
Et l'onglet de l'air de Matty (mon préféré) ci-dessous:
la source
2/3
de ces «battements» sont en fait des tirets.Java Script
Remarque: Utilise le kit audio de développement Web; C'est bien loin de la Ligue d'IE; Testé dans Google Chrome
Vous pouvez mettre les onglets dans la zone de texte. IE, vous pouvez mettre l'air de Matty du post de Matty dans la zone de texte (avec les lettres sur les notes) et il sera toujours analysé correctement.
Cliquez pour exécuter le programme
JavaScript:
Pouvez-vous identifier cette chanson?
la source
| / b h p
. Pourquoi ne pas simplement faire une petite analyse de chaîne pour les remplacer-
? Cela semblera tout à fait correct et cela fonctionne. (Et peut-être divisé sur les sauts de ligne en utilisant une zone de saisie.). Cela en fera un script amusant à jouer.Java
Ce programme convertit une tablature au format WAV 16 bits.
Tout d'abord, j'ai écrit tout un tas de code d'analyse de tablatures. Je ne sais pas si mon analyse est entièrement correcte, mais je pense que ça va. En outre, il pourrait utiliser plus de validation pour les données.
Après cela, j'ai créé le code pour générer l'audio. Chaque chaîne est générée séparément. Le programme enregistre la fréquence, l'amplitude et la phase actuelles. Il génère ensuite 10 harmoniques pour la fréquence avec des amplitudes relatives composées et les additionne. Enfin, les chaînes sont combinées et le résultat est normalisé. Le résultat est enregistré en audio WAV, que j'ai choisi pour son format ultra-simple (pas de librairies utilisées).
Il "supporte" hammering (
h
) et pulling (p
) en les ignorant car je n'ai vraiment pas eu le temps de les faire sonner trop différemment. Le résultat sonne un peu comme une guitare, cependant (passé quelques heures à analyser le spectre de ma guitare dans Audacity).En outre, il prend en charge la flexion (
b
), la libération (r
) et le glissement (/
et\
, interchangeables).x
est implémenté comme coupant la chaîne.Vous pouvez essayer de modifier les constantes au début du code. Un abaissement particulièrement
silenceRate
conduit souvent à une meilleure qualité.Exemples de résultats
Le code
Je veux avertir les débutants Java: n'essayez pas d'apprendre quoi que ce soit de ce code, il est terriblement écrit. De plus, il a été écrit rapidement et en 2 sessions et il n'était pas destiné à être utilisé à nouveau donc il n'a aucun commentaire. (Pourrait en ajouter plus tard: P)
la source