키 및 모드에서 스케일


10

대부분의 사람들은 아마도 C 메이저 스케일을 알고있을 것입니다 :

C D E F G A B C

주요 음계는 반음 단위 로 측정 된 인접한 음표 사이 의 간격을 특징으로합니다 .

2 2 1 2 2 2 1

이 간격에서 우리는 음표 ( 음계 의 키) 에서 시작하여 모든 주요 음계를 구성 할 수 있습니다 . 12 톤의 동일 온도 튜닝 시스템에서 12 가지 음표는 다음과 같습니다.

C C♯ D D♯ E F F♯ G G♯ A A♯ B

동등하게 (일부 조화로운 등가물 대체 ) :

C D♭ D E♭ E F G♭ G Ab A B♭ B

인접한 음의 각 쌍 사이에 반음이 있습니다.

각 음계에는 키부터 시작하여 7 개의 음표가 순서대로 있어야합니다. 그렇지 않으면 오각형의 같은 줄에 두 개의 음표가있을 수 있습니다. 혼동 될 수 있습니다. 따라서 G # major / ionian에는 G 대신 F ##이 있습니다. 음악가들은 오각형의 음표가 어디인지 살펴볼 것입니다. 그들은 이미 각 음계의 우연한 것을 배웠습니다. 실제로 G # major 에서 F ##은 우연히 F ## 줄에 표시되며 실수는 키 서명에 있지만 키 서명에는 F에 대해 2 개의 샤프가 필요하기 때문에 일반적으로 Ab major로 표시됩니다.

변속 2 2 1 2 2 2 1간격을, 우리는 일곱 개 가지에 도착 모드 온음계의 :

  • 이오니아 : 2 2 1 2 2 2 1-주요 규모에 해당
  • 도리안 :2 1 2 2 2 1 2
  • 프리지아 어 :1 2 2 2 1 2 2
  • 리디안 :2 2 2 1 2 2 1
  • Mixolydian :2 2 1 2 2 1 2
  • Aeolian : 2 1 2 2 1 2 2-내츄럴 마이너 스케일 및 하강 할 때 멜로디 마이너 스케일에 해당 (오름차순 일 때 멜로디 마이너 스케일은 6도 및 7도 상승했습니다. 미성년자).
  • Locrian :1 2 2 1 2 2 2

따라서 도전 과제는 키와 입력을 stdin을 통해 입력 하고 해당 스케일 을 stdout을 통해 출력 하는 프로그램을 작성하는 것 입니다. 일부 테스트 사례 ( stdin ( key mode) => stdout ( scale)) :

Input:              Output:
C mixolydian   =>   C D E F G A Bb
F mixolydian   =>   F G A Bb C D Eb
G mixolydian   =>   G A B C D E F
G# ionian      =>   G# A# B# C# D# E# F##
Bb aeolian     =>   Bb C Db Eb F Gb Ab

추가 참고 자료 :
몇 개의 (주 및 부) 키가 있습니까? 왜?


4
예제에는 위에서 설명하지 않은 표기법 (평면 및 이중 샤프)이 있습니다. 기본 음표와 간단한 전공 만 사용하여 등가물을 출력 할 수 있습니까? (가치가있는 것은 선호하는 것이 "아니오"라고 말하고 사양을 조금 확장하는 것입니다.이 질문은 숨겨진 깊이가 약간있는 것처럼 보입니다.
피터 테일러

@PeterTaylor : 맞습니다. 편집이 충분하기를 바랍니다. 나는 7 개의 음표 이름과 그에 따른 우발적 인 결과가 표시된 것처럼 출력 될 것으로 기대합니다. 이것은 비교적 큰 프로그램입니다.
ninjalj

답변:


7

GolfScript, 96 자

" "/~5<{+}*7%"v]nwm[{"=2*2base(;\(" #"@?]{.1>))["b""""#"..+]=+\[~@(@+@(7%65+\1$7%4%0>-]}7*;]" "*

온라인 으로 테스트 할 수있는 Golfscript 솔루션 .

참고 : 예제에서와 같이 키는 대문자 여야하고 모드는 소문자 여야합니다.

예 :

>C lydian
C D E F# G A B

>C mixolydian
C D E F G A Bb
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.