Correlati: Musica: cosa c'è in questo accordo? , Note sulla tablatura , Generazione di tablature per chitarra? , Traduci coppie di numeri in note di chitarra
Data una diteggiatura della chitarra, emette l'accordo che rappresenta. È possibile utilizzare input e output standard oppure scrivere una funzione che restituisce una stringa.
Le diteggiature di input saranno classificabili come uno dei seguenti accordi, da esprimere come segue (se la nota di radice fosse C):
- triade maggiore:
C
- triade minore:
Cm
- (dominante) settimo:
C7
- settima minore:
Cm7
L'accordo potrebbe essere invertito, quindi non puoi fare affidamento sul fatto che la nota più bassa sia la radice. Né puoi fare affidamento sul fatto che questa è una diteggiatura facile o comune nel mondo reale. Più in generale, l'output del tuo programma deve ignorare le ottave dei toni e trattare tutti i toni che corrispondono alla stessa nota musicale (cioè, A
) come uguali.
Questo è code-golf , quindi vince il codice più breve in byte.
Formato di input
L'ingresso è una serie di 6 valori che indicano, per ciascuna corda di una chitarra a 6 corde in accordatura standard (EADGBE), a quale tasto verrà suonata quella corda. Potrebbe anche indicare che la corda non è affatto suonata. Il tasto "zeroth" è anche conosciuto come la posizione aperta, e da quel momento i numeri dei tasti contano. Supponiamo che la chitarra abbia 21 posizioni dei tasti, in modo tale che la posizione più alta sia il numero 20.
Ad esempio, l'ingresso X 3 2 0 1 0
significa posizionare le dita nelle seguenti posizioni nella parte superiore del collo della chitarra:
(6th) |---|---|---|---|---
|-X-|---|---|---|---
|---|---|---|---|---
|---|-X-|---|---|---
|---|---|-X-|---|---
(1st) |---|---|---|---|---
e strimpellando la seconda attraverso la sesta corda. Corrisponde a questa scheda ASCII :
e |-0-|
B |-1-|
G |-0-|
D |-2-|
A |-3-|
E |---|
Hai una certa flessibilità nella scelta del tipo di input che desideri: ogni posizione del tasto può essere espressa come una stringa o un numero. Le stringhe di chitarra che non vengono suonate sono comunemente indicate con un X
, ma puoi scegliere un diverso valore sentinella se questo ti rende più facile (ad esempio -1
se stai usando dei numeri). La serie di 6 posizioni dei tasti può essere immessa come qualsiasi elenco, matrice o tipo di sequenza, una singola stringa separata da spazio o come input standard, ancora una volta, la tua scelta.
Puoi fare affidamento sull'input corrispondente a uno dei 4 tipi di accordi sopra menzionati.
Spiega nel tuo post quale forma di input prende la tua soluzione.
Formato di output
È necessario restituire o stampare sull'output standard una stringa che descriva l'accordo per la diteggiatura. Questa stringa è composta da due parti concatenate insieme. La capitalizzazione conta. È consentito lo spazio bianco finale.
La prima parte indica la nota fondamentale , una delle A
, A#
/ Bb
, B
, C
, C#
/ Db
, D
, D#
/ Eb
, E
, F
, F#
/ Gb
, G
o G#
/ Ab
. (Sto usando #
al posto di ♯
, e b
invece di ♭
, per evitare che richiedono Unicode.) Note Root che possono essere espressi senza un brusco o appartamento deve essere espresso senza di loro (mai uscita B#
, Fb
o Dbb
); quelli che non possono essere espressi con un singolo simbolo acuto o piatto (cioè o C#
o Db
, ma mai B##
). In altre parole, è necessario ridurre al minimo il numero di incidenti (oggetti taglienti o piatti) nel nome della nota.
La seconda parte indica il tipo di accordo, vuoto per una triade maggiore, m
per una triade minore, 7
per la settima dominante o m7
per la settima minore. Quindi un G maggiore viene emesso semplicemente come G
, mentre un D 7 minore potrebbe essere emesso come uno D#m7
o Ebm7
. Altri esempi sono disponibili nei casi di test alla fine.
Teoria e suggerimenti
Note musicali
La scala cromatica ha 12 tonalità per ottava. Quando sintonizzato su un temperamento uguale, ciascuno di questi passi è ugualmente distante dai vicini 1 . Le tonalità distanti 12 semitoni (un'ottava) sono considerate la stessa nota musicale. Questo significa che possiamo trattare le note come numeri interi modulo 12, da 0 a 11. A sette di questi vengono dati i nomi di lettere 2 da A a G. Questo non è sufficiente per nominare tutti i 12 passi, ma l'aggiunta di accidenti corregge che: l'aggiunta di un ♯ ( sharp) a una nota lo rende più alto di un semitono e l'aggiunta di un flat (piatto) lo rende più basso di un semitono.
Chords
Un accordo è composto da 2 o più note suonate insieme. Il tipo di accordo dipende dalle relazioni tra le note, che possono essere determinate dalle distanze tra loro. Un accordo ha una nota di radice, come menzionato in precedenza. Tratteremo la nota radice come 0 in questi esempi, ma questo è arbitrario e tutto ciò che conta in questa sfida è la distanza tra le note nell'aritmetica del modulo. Ci sarà sempre un unico tipo di accordo per la risposta, una triade o una settima . La nota radice non sarà sempre l'intonazione della frequenza più bassa; scegli la nota fondamentale in modo da poter descrivere l'accordo come uno dei quattro seguenti tipi di accordo:
- Una triade maggiore è un accordo con le note
0 4 7
. - Una triade minore è un accordo con le note
0 3 7
. - Un settimo accordo dominante (o maggiore / minore) ha le note
0 4 7 10
. - Un settimo accordo minore (o minore / minore) ha le note
0 3 7 10
. 3
Accordatura per chitarra
L'accordatura standard su una chitarra a 6 corde inizia con E sulla corda più bassa, quindi suona le note a intervalli di 5, 5, 5, 4, quindi 5 semitoni salendo le corde. Prendendo la E più bassa come 0, questo significa strimpellare tutte le corde della chitarra per ottenere toni numerati 0 5 10 15 19 24
, a cui modulo 12 è equivalente 0 5 10 3 7 0
, o le note E A D G B E
.
Esempi lavorati
Se il tuo input è 0 2 2 0 0 0
, questo corrisponde alle note E B E G B E
, quindi solo E, B e G. Questi formano l'accordo Em
, che può essere visto numerandoli con la radice come E, dandoci 0 3 7
. (Il risultato sarebbe lo stesso per X 2 X 0 X 0
, o 12 14 14 12 12 12
.)
Se il tuo input è 4 4 6 4 6 4
, numerando questi con una radice di C♯ dà 7 0 7 10 4 7
, o 0 4 7 10
, quindi la risposta è C#7
(o Db7
). Se fosse invece 4 4 6 4 5 4
, la numerazione darebbe 7 0 7 10 3 7
, o 0 3 7 10
, che è C#m7
(o Dbm7
).
Casi test
X 3 2 0 1 0 ---> C
0 2 2 0 0 0 ---> Em
X 2 X 0 X 0 ---> Em
4 4 6 4 6 4 ---> C#7 (or Db7)
4 4 6 4 5 4 ---> C#m7 (or Dbm7)
0 2 2 1 0 0 ---> E
0 0 2 2 2 0 ---> A
X X 4 3 2 2 ---> F# (or Gb)
3 2 0 0 0 1 ---> G7
X X 0 2 1 1 ---> Dm7
3 3 5 5 5 3 ---> C
4 6 6 5 4 4 ---> G# (or Ab)
2 2 4 4 4 5 ---> B7
0 7 5 5 5 5 ---> Am7
7 6 4 4 X X ---> B
8 6 1 X 1 3 ---> Cm
8 8 10 10 9 8 --> Fm
0 19 5 16 8 7 --> Em
6 20 0 3 11 6 --> A# (or Bb)
X 14 9 1 16 X --> G#m (or Abm)
12 14 14 12 12 12 --> Em
15 14 12 12 12 15 --> G
20 X 20 20 20 20 --> Cm7
X 13 18 10 11 10 --> A#7 (or Bb7)
1 dai logaritmi delle loro frequenze
2 o, in solfège , nomi come do, re, mi . In questa sfida, usa i nomi delle lettere.
3 Questo potrebbe anche essere chiamato un sesto accordo maggiore, con una diversa scelta della nota di radice. In questa sfida, chiamalo con il suo settimo nome minore.