Связанный: Музыка: что в этом аккорде? , Заметки к табулатуре , Создание гитарных вкладок? , Переведите пары чисел в гитарные ноты
Учитывая гитару, выведите аккорд, который он представляет. Вы можете использовать стандартный ввод и вывод или написать функцию, которая возвращает строку.
Входные отпечатки будут классифицироваться как один из следующих аккордов, который будет выражаться следующим образом (если корневая нота была C):
- главная триада:
C
- второстепенная триада:
Cm
- (доминирующий) седьмой:
C7
- младший седьмой:
Cm7
Аккорд может быть перевернут, поэтому нельзя полагаться на низшую ноту, являющуюся корнем. Вы также не можете полагаться на то, что это легкая или обычная аппликатура в реальном мире. В более общем случае выходные данные вашей программы должны игнорировать октавы высот и обрабатывать все высотные отметки, которые соответствуют одной и той же музыкальной ноте (т.е. A
), как равные.
Это код-гольф , поэтому выигрывает самый короткий код в байтах.
Формат ввода
Входные данные представляют собой последовательность из 6 значений, которые указывают для каждой струны 6-струнной гитары в стандартной настройке (EADGBE), на которой будет раздражаться эта строка. Это также может указывать на то, что строка не воспроизводится вообще. «Нулевой» лад также известен как открытая позиция, и отсюда начинаются числа ладов. Предположим, что у гитары 21 позиция ладов, так что самая высокая позиция ладов - номер 20.
Например, ввод X 3 2 0 1 0
означает размещение пальцев в следующих положениях в верхней части шеи гитары:
(6th) |---|---|---|---|---
|-X-|---|---|---|---
|---|---|---|---|---
|---|-X-|---|---|---
|---|---|-X-|---|---
(1st) |---|---|---|---|---
и играет на 2-й и 6-й струнах. Это соответствует этой вкладке ASCII :
e |-0-|
B |-1-|
G |-0-|
D |-2-|
A |-3-|
E |---|
У вас есть некоторая гибкость в выборе типа ввода, который вы хотите: каждая позиция раздражения может быть выражена в виде строки или числа. Гитарные струны, которые не воспроизводятся, обычно обозначаются знаком X
, но вы можете выбрать другое значение часового значения, если это облегчит вам задачу (например, -1
если вы используете числа). Последовательность из 6 позиций ладов может быть введена в виде любого списка, массива или типа последовательности, отдельной строки через пробел или в качестве стандартного ввода - еще раз, на ваш выбор.
Вы можете положиться на вход, соответствующий одному из 4 типов аккордов, упомянутых выше.
Пожалуйста, объясните в своем посте, какую форму ввода использует ваше решение.
Выходной формат
Вы должны либо вернуть, либо вывести на стандартный вывод строку, описывающую аккорд, для которого предназначена аппликатура. Эта строка состоит из двух частей, соединенных вместе. Вопросы капитализации. Конечный пробел разрешен.
Первая часть указывает на основную ноту , один из A
, A#
/ Bb
, B
, C
, C#
/ Db
, D
, D#
/ Eb
, E
, F
, F#
/ Gb
, G
или G#
/ Ab
. (Я использую #
вместо ♯
, и b
вместо того ♭
, чтобы избежать требует Unicode.) Корневые заметки , которые могут быть выражены без резких или квартиры должны быть выражены без них (никогда не выход B#
, Fb
или Dbb
); те, которые не могут быть обозначены одним острым или плоским символом (т. е. или C#
или Db
, но никогда B##
). Другими словами, вы должны минимизировать количество случайных (острых предметов или квартир) в имени заметки.
Вторая часть указывает тип аккорда, либо пустой для большой триады, m
для малой триады, 7
для доминирующей седьмой или m7
для младшей седьмой. Таким образом , в G мажоре выводится просто G
, в то время как незначительные седьмой D♯ может быть выход или как D#m7
или Ebm7
. Больше примеров можно найти в тестовых примерах в конце.
Теория и советы
Музыкальные ноты
Хроматическая шкала имеет 12 шагов на октаву. При настройке на одинаковый темперамент каждый из этих шагов одинаково удален от своих соседей 1 . Высота тона, составляющая 12 полутонов (октава), считается одной и той же музыкальной нотой. Это означает, что мы можем рассматривать заметки как целые числа по модулю 12, от 0 до 11. Семь из них имеют буквенные имена 2 от A до G. Этого недостаточно, чтобы назвать все 12 тонов, но добавление случайных ошибок исправляет следующее: добавление ♯ ( от резкой) к ноте делает его на полтона выше, а добавление flat (плоского) делает его на полтона ниже.
Аккорды
Аккорд - это две или более нот, сыгранных вместе. Тип аккорда зависит от отношений между нотами, которые могут быть определены расстояниями между ними. Аккорд имеет корневую ноту, как упоминалось ранее. Мы будем рассматривать корневую заметку как 0 в этих примерах, но это произвольно, и все, что имеет значение в этой задаче, - это расстояние между заметками в арифметике по модулю. Для ответа всегда будет один уникальный тип аккордов: триада или седьмой аккорд . Корневая нота не всегда будет самой низкой частотой звука; выберите основную ноту так, чтобы вы могли описать аккорд как один из четырех следующих типов аккордов:
- Мажорное трезвучие это аккорд с нотами
0 4 7
. - Незначительная триада является хордой с примечаниями
0 3 7
. - Доминирующий (или крупный / минор) седьмой аккорд имеет ноты
0 4 7 10
. - У младшего (или младшего / младшего) седьмого аккорда есть ноты
0 3 7 10
. 3
Гитара тюнинг
Стандартная настройка на 6-струнной гитаре начинается с E на самой нижней струне, а затем нажимает ноты с интервалами 5, 5, 5, 4, а затем на 5 полутонов, идущих вверх по струнам. Принимая самое низкое E за 0, это означает, что удар по всем струнам гитары дает вам пронумерованные высоты 0 5 10 15 19 24
, которые по модулю 12 эквивалентны 0 5 10 3 7 0
, или ноты E A D G B E
.
Отработанные примеры
Если вы вводите 0 2 2 0 0 0
, это соответствует примечаниям E B E G B E
, так что только E, B и G. Они образуют аккорд Em
, который можно увидеть, пронумеровав их корнем как E, что дает нам 0 3 7
. (Результат будет таким же для X 2 X 0 X 0
или 12 14 14 12 12 12
.)
Если вы вводите 4 4 6 4 6 4
, нумерация их с корнем C♯ дает 7 0 7 10 4 7
, или 0 4 7 10
, поэтому ответ C#7
(или Db7
). Если бы это было вместо этого 4 4 6 4 5 4
, нумерация дала бы 7 0 7 10 3 7
, или 0 3 7 10
, который C#m7
(или Dbm7
).
Контрольные примеры
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 по логарифмам их частот
2 или, в solfège , такие имена, как do, re, mi . В этом вызове используйте буквенные имена.
3 Это также можно назвать мажорным шестым аккордом с другим выбором основной ноты. В этом вызове назовите его вторым седьмым именем.