Quand je veux chanter une chanson avec une touche haute en karaoké, je ne sais souvent pas combien il faut baisser la touche, alors j'ai écrit un programme d'ajustement de clé en Python. [Ajout] J'ai essayé de monter sur Laravel
―― De combien devriez-vous baisser la tonalité pour qu'elle corresponde à une chanson qui ne peut pas être chantée avec une note aiguë sur votre note la plus élevée? --Exemple: combien de clé doit être abaissée pour une personne dont le son le plus élevé de la voix au sol est mid2G # (le son le plus élevé de BUMP OF CHICKEN "observation astronomique") pour chanter B'z "ultra soul" (son le plus élevé hiC #) C'est OK ―― À propos, les informations sur la plage sonore du morceau sont basées sur Sound range.com.
――Mais, je fais juste ressortir la différence de hauteur entre la chanson que je veux chanter et ma note la plus élevée ^^; ――Je ne peux pas nier le sentiment d'un code inutile et long en raison de la gestion des erreurs d'entrée et de l'affichage de l'utilisation. --Ajout <2016/4/18> -Prend en charge jusqu'à 2 octaves
py3.karaoke.py
#coding:utf-8
import sys
oniki = [
'lowF', 'lowF_s', 'lowG', 'lowG_s',
'mid1A', 'mid1A_s', 'mid1B', 'mid1C', 'mid1C_s', 'mid1D', 'mid1D_s', 'mid1E', 'mid1F', 'mid1F_s', 'mid1G', 'mid1G_s',
'mid2A', 'mid2A_s', 'mid2B', 'mid2C', 'mid2C_s', 'mid2D', 'mid2D_s', 'mid2E', 'mid2F', 'mid2F_s', 'mid2G', 'mid2G_s',
'hiA', 'hiA_s', 'hiB', 'hiC', 'hiC_s', 'hiD', 'hiD_s', 'hiE', 'hiF', 'hiF_s', 'hiG', 'hiG_s',
'hihiA', 'hihiA_s', 'hihiB', 'hihiC', 'hihiC_s', 'hihiD', 'hihiD_s', 'hihiF', 'hihiF_s']
def printAdjustKey(adjust_type, diff_key):
if adjust_type == '1OctaveDown': ad_oc = 12
elif adjust_type == '2OctaveDown': ad_oc = 24
elif adjust_type == '1OctaveUp' : ad_oc = -12
elif adjust_type == '2OctaveUp' : ad_oc = -24
else: ad_oc = 0
print(adjust_type + '\t:\t', diff_key + ad_oc, end='\t')
if abs(diff_key + ad_oc) > 7: print('x')
else: print('o')
def Usage():
print('Usage: python3 karaoke.py [your key] [key your want to sing]')
print('ex : python3 karaoke.py mid2G_s hiC_s')
print('Kind of range:')
cnt = 1
for key in oniki:
print(key, end = ' ')
cnt += 1
if cnt % 10 == 0: print('')
sys.exit()
def validation(argv):
if len(argv) != 3: Usage()
your_key = argv[1]
target_key = argv[2]
dict_oniki = {x:i for i, x in enumerate(oniki)}
if your_key not in dict_oniki or target_key not in dict_oniki:
Usage()
return dict_oniki, your_key, target_key
def main(argv):
dict_oniki, your_key, target_key = validation(argv)
print('Key that you can sing : ', your_key)
print('Key that you want to sing: ', target_key)
print('')
print('To adjust key')
diff_key_num = dict_oniki[your_key] - dict_oniki[target_key]
printAdjustKey('Original', diff_key_num)
printAdjustKey('1OctaveDown', diff_key_num)
printAdjustKey('1OctaveUp', diff_key_num)
print('');
printAdjustKey('2OctaveDown', diff_key_num)
printAdjustKey('2OctaveUp', diff_key_num)
if __name__ == "__main__":
main(sys.argv)
--Utiliser la ligne de commande
karaoke.py
--Par exemple, si une personne avec le mid2G # le plus élevé veut ajuster la clé en fonction de B'z "ultra soul" (hiC # le plus élevé).
Exécutez python3 karaoke.py mid2G_s hiC_s
sur la ligne de commande
--_s
signifie le symbole demi-ton #_s
Exemple d'exécution (* Ne manquez pas le mauvais anglais)
% python3 karaoke.py mid2G_s hiC_s
Key that you can sing : mid2G_s
Key that you want to sing: hiC_s
To adjust key
Original : -5 o
1OctaveDown : 7 o
1OctaveUp : -17 x
Pour ajuster la clé
――Si vous obtenez ce résultat, vous pouvez vous sentir à l'aise en abaissant 5 touches de la chanson originale! \ Haute /! Tu peux le faire
――Si vous abaissez également 5, il peut être difficile de chanter ...
―― À propos, le cercle à côté de la touche de réglage indique si elle s'inscrit ou non dans ± 7.
――Il peut être plus facile de chanter si la clé à régler est plus petite.Chanson féminine: chanson tremblante "Je veux te rencontrer, je veux te rencontrer" de Kana Nishino (note la plus haute: hiE)
% python3 karaoke.py mid2G_s hiE
Key that you can sing : mid2G_s
Key that you want to sing: hiE
To adjust key
Original : -8 x
1OctaveDown : 4 o
1OctaveUp : -20 x
――Ce résultat montre que vous pouvez chanter simplement en élevant 4 touches et en chantant une octave plus bas.
Au contraire, je dirai aussi le modèle lorsqu'une femme veut chanter la chanson d'un homme. Dans le cas des femmes, pensez à faire correspondre les notes les plus basses. La note la plus basse d'une femme est mid1E (la note la plus basse de «SAKURA») Considérez le modèle de chant "Soyons une famille" (note la plus basse: lowG #) de Masaharu Fukuyama.
% python3 karaoke.py mid1E lowG_s
Key that you can sing : mid1E
Key that you want to sing: lowG_s
To adjust key
Original : 8 x
1OctaveDown : 20 x
1OctaveUp : -4 o
――Ce résultat montre que si vous abaissez les 4 touches et chantez une octave plus haut, vous vous sentirez bien de devenir une famille.
Cette fois, j'ai écrit un programme de réglage des touches qui peut être exécuté avec CUI (bien qu'il calcule simplement la différence de hauteur). Puisqu'il s'agit d'un CUI, sa polyvalence est très limitée, mais je pense que s'il peut être appliqué au laravel etc. actuellement à l'étude et utilisé sur le web, la polyvalence va s'étendre. Il serait intéressant de saisir votre propre plage et titre de chanson et d'extraire la plage de la chanson de range.com. Si vous avez des erreurs de programmation ou des conseils tels que "C'est plus élégant!", Merci de nous le faire savoir dans les commentaires m (__) m