[PYTHON] Passen Sie die Karaoke-Tasten an

Wenn ich ein Lied mit einer hohen Tonart in Karaoke singen möchte, weiß ich oft nicht, wie viel ich die Tonart senken soll, deshalb habe ich ein Programm zur Tastenanpassung in Python geschrieben. [Ergänzung] Ich habe versucht, Laravel zu reiten

Das Problem, das Sie lösen möchten

――Wie viel sollten Sie die Tonart senken, um ein Lied, das nicht mit einer hohen Tonart gesungen werden kann, auf Ihre höchste Note abzustimmen? --Beispiel: Wie viel Tonart sollte gesenkt werden, damit eine Person, deren höchster Klang der Grundstimme mid2G # (der höchste Klang von BUMP OF CHICKEN "astronomische Beobachtung") ist, B'z "ultra soul" (höchster Klang hiC #) singt? Ist es okay ――Die Sound Range-Informationen des Songs basieren übrigens auf Sound range.com.

Quelle

――Aber ich stelle nur den Tonhöhenunterschied zwischen dem Lied, das ich singen möchte, und meiner höchsten Note heraus ^^; ――Es ist nicht zu leugnen, dass aufgrund der Behandlung von Eingabefehlern und der Anzeige der Verwendung ein verschwenderisches und langes hässliches Codegefühl auftritt. --Zusatz <18.04.2016> -Unterstützt bis zu 2 Oktaven

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)

Wie benutzt man

Ausführungsbeispiel (* Verpassen Sie nicht das schlechte Englisch)

% 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

Frauenlied: Kana Nishinos zitterndes Lied "Ich will dich treffen, ich will dich treffen" (höchste Note: 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

――Dieses Ergebnis zeigt, dass Sie nur singen können, indem Sie 4 Tasten anheben und eine Oktave tiefer singen.

Im Gegenteil, ich werde auch das Muster sagen, wenn eine Frau das Lied eines Mannes singen möchte. Denken Sie bei Frauen daran, die niedrigsten Noten zu finden. Die tiefste Note einer Frau ist mid1E (die niedrigste Note von "SAKURA") Betrachten Sie das Muster des Singens "Lass uns eine Familie sein" (niedrigste Note: lowG #) von 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

――Dieses Ergebnis zeigt, dass Sie sich gut fühlen, wenn Sie die 4 Tasten senken und eine Oktave höher singen.

Zusammenfassung

Dieses Mal habe ich ein Tastenanpassungsprogramm geschrieben, das mit CUI ausgeführt werden kann (obwohl es einfach die Tonhöhendifferenz berechnet). Da es sich um eine CUI handelt, ist ihre Vielseitigkeit sehr begrenzt, aber ich denke, wenn sie auf Laravel usw. angewendet werden kann, die derzeit im Web untersucht und verwendet werden, wird sich die Vielseitigkeit erweitern. Es wäre interessant, Ihren eigenen Bereich und Songtitel einzugeben und den Bereich des Songs von range.com abzurufen. Wenn Sie Programmierfehler oder Ratschläge wie "Das ist eleganter!" Haben, teilen Sie uns dies bitte in den Kommentaren m (__) m mit

Recommended Posts

Passen Sie die Karaoke-Tasten an
Dateiabgleich
Passende Karaoke-Tasten ~ Ich habe versucht, es auf Laravel zu setzen ~ <auf dem Weg>