Terkait: Musik: ada apa di chord ini? , Catatan untuk Tablature , Membuat tab gitar? , Terjemahkan pasangan nomor ke catatan gitar
Diberi fingering gitar, mengeluarkan akor yang diwakilinya. Anda dapat menggunakan input dan output standar, atau menulis fungsi yang mengembalikan string.
Masukan jari akan dapat diklasifikasikan sebagai salah satu akord berikut, untuk dinyatakan sebagai berikut (jika catatan root adalah C):
- triad utama:
C
- triad kecil:
Cm
- (dominan) ketujuh:
C7
- ketujuh minor:
Cm7
Chord mungkin terbalik, jadi Anda tidak bisa mengandalkan nada terendah sebagai root. Anda juga tidak dapat mengandalkan ini sebagai penjarian yang mudah atau umum di dunia nyata. Secara umum, output program Anda harus mengabaikan oktaf nada, dan memperlakukan semua nada yang sesuai dengan not musik yang sama (yaitu, A
) sama.
Ini adalah kode-golf , jadi kode terpendek dalam byte menang.
Masukkan format
Input adalah serangkaian 6 nilai yang menunjukkan, untuk setiap string gitar 6-string dalam penyetelan standar (EADGBE), yang membuat fret string itu dimainkan. Bisa juga menunjukkan bahwa string tidak dimainkan sama sekali. Fret "nol" juga dikenal sebagai posisi terbuka, dan nomor fret dihitung dari sana. Asumsikan gitar memiliki 21 posisi fret, sehingga posisi fret tertinggi adalah angka 20.
Misalnya, input X 3 2 0 1 0
berarti menempatkan jari pada posisi berikut di bagian atas leher gitar:
(6th) |---|---|---|---|---
|-X-|---|---|---|---
|---|---|---|---|---
|---|-X-|---|---|---
|---|---|-X-|---|---
(1st) |---|---|---|---|---
dan memetik senar ke-2 sampai ke-6. Itu sesuai dengan tab ASCII ini :
e |-0-|
B |-1-|
G |-0-|
D |-2-|
A |-3-|
E |---|
Anda memiliki fleksibilitas dalam memilih jenis input yang Anda inginkan: setiap posisi fret dapat dinyatakan sebagai string, atau angka. Senar gitar yang tidak dimainkan biasanya ditandai dengan huruf X
, tetapi Anda dapat memilih nilai sentinel yang berbeda jika itu memudahkan Anda (seperti -1
jika Anda menggunakan angka). Rangkaian 6 posisi fret dapat dimasukkan sebagai daftar, larik, atau jenis urutan apa pun, string berpisah satu ruang, atau sebagai input standar — sekali lagi, pilihan Anda.
Anda dapat mengandalkan input yang sesuai dengan salah satu dari 4 jenis akor yang disebutkan di atas.
Tolong jelaskan dalam posting Anda bentuk input apa yang diambil oleh solusi Anda.
Format output
Anda harus kembali atau mencetak ke output standar string yang menggambarkan akord untuk fingering. Tali ini terdiri dari dua bagian yang disatukan. Huruf besar penting. Trailing whitespace diizinkan.
Bagian pertama menunjukkan catatan akar , salah A
, A#
/ Bb
, B
, C
, C#
/ Db
, D
, D#
/ Eb
, E
, F
, F#
/ Gb
, G
atau G#
/ Ab
. (Saya menggunakan #
bukan ♯
, dan b
bukan ♭
, untuk menghindari membutuhkan Unicode.) Catatan akar yang dapat dinyatakan tanpa tajam atau datar harus dinyatakan tanpa mereka (tidak pernah keluaran B#
, Fb
atau Dbb
); mereka yang tidak dapat harus diekspresikan dengan simbol tunggal tajam atau datar (yaitu salah satu C#
atau Db
, tetapi tidak pernah B##
). Dengan kata lain, Anda harus meminimalkan jumlah kecelakaan (benda tajam atau flat) dalam nama catatan itu.
Bagian kedua menunjukkan jenis akord, baik kosong untuk triad utama, m
untuk triad kecil, 7
untuk ketujuh yang dominan, atau m7
untuk ketujuh kecil. Jadi G mayor adalah keluaran hanya sebagai G
, sedangkan D♯ minor ketujuh bisa keluaran sebagai salah satu D#m7
atau Ebm7
. Lebih banyak contoh dapat ditemukan dalam kasus uji di akhir.
Teori & petunjuk
Not balok
Skala berwarna memiliki 12 nada per oktaf. Ketika disetel ke temperamen yang sama, masing-masing nada ini sama-sama jauh dari tetangganya 1 . Pitch dengan jarak 12 semitone (satu oktaf) dianggap not musik yang sama. Ini berarti kita dapat memperlakukan catatan seperti bilangan bulat modulo 12, dari 0 hingga 11. Tujuh di antaranya diberi nama huruf 2 dari A hingga G. Ini tidak cukup untuk memberi nama semua 12 nada, tetapi menambahkan perbaikan tidak disengaja itu: menambahkan ♯ ( tajam) ke not membuatnya semitone lebih tinggi, dan menambahkan ♭ (flat) menjadikannya semitone lebih rendah.
Akord
Chord adalah 2 atau lebih not yang dimainkan bersama. Jenis akor tergantung pada hubungan antar not, yang dapat ditentukan oleh jarak antara not. Akor memiliki catatan root, seperti yang disebutkan sebelumnya. Kami akan memperlakukan catatan root sebagai 0 dalam contoh-contoh ini, tetapi ini arbitrer, dan yang terpenting dalam tantangan ini adalah jarak antara catatan dalam modulo aritmatika. Akan selalu ada satu jenis akor unik untuk jawabannya, baik akor triad atau ketujuh . Catatan root tidak akan selalu menjadi nada dengan frekuensi terendah; pilih catatan root sedemikian rupa sehingga Anda dapat menggambarkan akor sebagai salah satu dari empat jenis akor berikut:
- Sebuah triad utama adalah akord dengan catatan
0 4 7
. - Sebuah triad minor adalah akord dengan catatan
0 3 7
. - Sebuah ketujuh dominan (atau besar / kecil) chord memiliki catatan
0 4 7 10
. - Sebuah minor (atau minor / minor) ketujuh chord memiliki catatan
0 3 7 10
. 3
Tuning gitar
Penyeteman standar pada gitar 6 senar dimulai dengan E pada senar terendah, dan kemudian mengenai nada pada interval 5, 5, 5, 4, kemudian 5 semitone menaiki senar. Mengambil E terendah sebagai 0, ini berarti memetik semua senar gitar memberi Anda nada bernomor 0 5 10 15 19 24
, yang modulo 12 setara dengan 0 5 10 3 7 0
, atau not E A D G B E
.
Contoh yang berhasil
Jika input Anda 0 2 2 0 0 0
, ini sesuai dengan catatan E B E G B E
, jadi hanya E, B, dan G. Ini membentuk akord Em
, yang dapat dilihat dengan memberi nomor dengan root sebagai E, memberi kami 0 3 7
. (Hasilnya akan sama untuk X 2 X 0 X 0
, atau 12 14 14 12 12 12
.)
Jika input Anda 4 4 6 4 6 4
, beri nomor dengan akar C♯ berikan 7 0 7 10 4 7
, atau 0 4 7 10
, jadi jawabannya adalah C#7
(atau Db7
). Jika sebaliknya 4 4 6 4 5 4
, penomoran akan memberi 7 0 7 10 3 7
, atau 0 3 7 10
, yang C#m7
(atau Dbm7
).
Uji kasus
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 oleh logaritma frekuensi mereka
2 atau, dalam solfège , nama seperti do, re, mi . Dalam tantangan ini, gunakan nama surat.
3 Ini juga bisa disebut akor keenam utama, dengan pilihan catatan root yang berbeda. Dalam tantangan ini, sebut saja dengan nama ketujuh minor.