흠, 재미있는 문제.
사실, 저는 이것을 Composite와 함께 Command 패턴으로 바꾸고 싶습니다. 이것은 명사 대신 모델링 된 오브젝트를 만드는 의미에서 일반적인 OO 접근 방식을 그 머리에 돌리는 것입니다.
참고는 한 가지 방법이있는 클래스 인 play(), and a ctor taking
길이 and
톤입니다.
당신은 synth : 음색, 어택 등의 행동을 정의하는 악기가 필요합니다.
그런 다음 TimeSignature가있는 점수를 가지며 측정 값이 포함 된 복합 패턴입니다. 측정은 메모를 포함합니다.
실제로 재생한다는 것은 다른 컨테이너 인 반복 및 Codas와 같은 다른 것들을 해석한다는 것을 의미합니다. 이를 연주하기 위해, Composite의 계층 적 구조를 해석하여 대기열에 노트를 삽입합니다. 노트가 템포에 따라 큐를 통해 이동하면 각 노트에 play()
메서드가 호출됩니다.
흠, 그 반대 일 수 있습니다. 각 음표는 악기에 대한 입력으로 주어지며 필요에 따라 파형을 합성하여 해석합니다. 원래 계획과 같은 것으로 되돌아옵니다.
분해에 대한 또 다른 접근법은 Parnas의 법칙을 적용하는 것입니다. 요구 사항이 변경 될 수있는 비밀 장소를 유지하기 위해 분해합니다. 그러나 나는 비슷한 분해로 끝난다 고 생각한다. 박자표와 튜닝을 변경할 수 있습니다. 악기를 변경할 수 있습니다. 참고로 바이올린, 피아노 또는 마림바에서 연주해도 상관 없습니다.
흥미로운 문제.
이것은 매우 흥미로운 프로그램이 될 수 있습니다. 만약 당신이 "점수"객체를 가져 와서 음악 이론 "규칙"을 적용한다면 (음악 이론의 미성년자가있을 수 있습니다) 잠재적으로 어떤 유형의 음악 생성기를 만들 수 있습니다 ... 깔끔하게 될 것입니다 ... 나는 그것이 완료되었다고 확신합니다. . – Nope
@Casey : 수 백만 번 해봤지만 결코 잘되지 않았습니다. – MusiGenesis
@MusiGenesis ... 그건 내가 생각한 것입니다. 아 글쎄, 한번 시도해 보는 것도 재미있을거야. – Nope