프로젝트 소개

Tonal은 JavaScript용 음악 이론 라이브러리로, TypeScript로 구현되었으며 npm 패키지 모음으로 배포됩니다. 사운드나 오디오 재생보다는 음악 이론의 추상화에 초점을 맞춥니다: 음표, 음정, 화음, 음계, 선법, 조성, 보이싱, 진행, 리듬. 이 라이브러리는 함수형 프로그래밍 스타일을 따릅니다. 함수는 순수하고, 데이터는 변경되지 않으며, 엔티티는 클래스 인스턴스가 아닌 일반 데이터 구조로 표현됩니다. ES6 import, ES5 require, 그리고 CDN 스크립트 태그를 통해 브라우저에서 직접 사용할 수 있습니다. 일반적인 작업에는 음표를 MIDI 번호나 주파수로 변환하기, 음정만큼 음표를 조옮김하기, 음정 거리 측정하기, 음계 음과 도수 가져오기, 화음 이름 짓기, 화음 자리바꿈 만들기가 포함됩니다. README에는 Note.midi("C4")가 60을 반환하고, Note.freq("a4")가 440을 반환하며, Interval.semitones("5P")가 7을 반환하고, Scale.get("C major").notes가 7개의 음계 음을 반환하는 예시가 나와 있습니다. 이 프로젝트는 집중된 모듈로 나뉘며, 각 모듈은 자체 README와 @tonaljs/ 접두사가 붙은 패키지 이름을 가집니다. 여기에는 음표, MIDI, 음정, ABC 기보법, 음계와 음계 유형, 화음과 화음 유형, 화음 감지, 음고류 집합, 보이싱, 성부 진행, 보이싱 사전, 조성, 선법, 진행, 로마 숫자, 리듬 패턴, 박자표, 음가, 그리고 핵심 및 컬렉션 유틸리티가 포함됩니다. 통합 tonal 패키지를 설치하면 모든 모듈이 포함되며, 개별 모듈을 설치하면 번들 크기를 줄일 수 있습니다. 문서는 전용 사이트와 각 모듈 README에서 볼 수 있습니다. 기여 시 음악 이론 변경에 대한 참조, 문서 업데이트, 테스트가 포함되어야 합니다. 이 라이브러리는 MIT 라이선스이며 여러 음악 이론 라이브러리를 영감의 원천으로 나열하고, 이를 사용하는 프로젝트 쇼케이스도 함께 제공합니다.