프로젝트 소개
Musicpy는 Python 라이브러리로 구현된 음악 프로그래밍 언어입니다. 사용자가 음악 이론과 알고리즘을 바탕으로 간결하고 사람이 읽기 쉬운 문법으로 음악을 작성할 수 있게 하는 것이 목표이며, Python과 완전히 호환되므로 일반적인 Python 코드와 상호 작용할 수 있습니다.
핵심 기능
- 음표, 화음, 멜로디, 리듬, 음량을 간결한 문법으로 표현합니다.
- 음악 이론 연산을 수행하고 알고리즘 작곡 로직을 설계합니다.
- musicpy 구조를 MIDI 파일로 내보내고, MIDI 파일을 다시 musicpy 데이터 구조로 불러와 추가 처리를 할 수 있습니다.
- 선택적 musicxml 의존성이 설치되어 있으면 MusicXML 파일을 읽고 쓸 수 있습니다.
- 음악을 직접 재생할 수 있으며, play 함수는 wait=True를 통해 재생이 끝날 때까지 블록할 수 있습니다.
- 사운드폰트를 다루기 위한 daw 모듈(선택적 의존성)을 포함합니다.
데이터 구조
- note, chord, scale이 기본 클래스입니다.
- note 클래스는 정수와 합동이며 int로 사용할 수 있습니다.
- chord 클래스는 음표의 집합처럼 동작하며, 화음 진행이 결합될 때 정수의 집합, 벡터 또는 행렬로 취급될 수 있습니다.
- 이러한 클래스는 산술적 사용을 지원하며, 저자는 이를 선형대수와 이산수학, 그리고 음렬주의, 우연성 음악, 미니멀리즘 음악 같은 실험적 스타일과 연결합니다.
설치 및 플랫폼 참고 사항
- Python 3.7 이상이 필요하며, pip install musicpy로 설치합니다.
- 선택적 추가 기능: pip install musicpy[musicxml], pip install musicpy[daw], 또는 둘 다 함께 설치할 수 있습니다.
- Windows, macOS, Linux에서 작동합니다.
- Linux에서는 play 함수가 올바르게 작동하려면 pygame이 2.0.3보다 오래된 버전이어야 하며, freepats가 필요합니다(예: Ubuntu에서 sudo apt-get install freepats).
- 소리가 들리지 않으면 일부 IDE가 재생을 기다리지 않기 때문에 play에서 wait=True를 설정하는 것이 도움이 될 수 있습니다.
- Linux 또는 macOS에서는 daw 모듈 의존성인 sf2_loader에 추가 구성 단계가 필요합니다.
문서 및 도구
- 자세한 튜토리얼은 프로젝트 위키와 Read the Docs에 있습니다. 위키는 새 릴리스와 함께 업데이트됩니다.
- 위키의 PDF 및 Markdown 사본을 다운로드할 수 있습니다.
- 별도의 musicpy_editor 프로젝트는 실시간 컴파일 및 실행과 일부 문법 설탕을 제공하는 편집기를 제공합니다.
예시
짧은 예시는 나일론 현 기타가 화음 진행 위에서 아르페지오를 연주하는 모습을 보여주며, 화음 표현식을 연산자와 결합해 만든 뒤 bpm과 악기 번호와 함께 play에 전달합니다.
배경
저자는 2019년 10월에 musicpy 개발을 시작했으며 계속 자주 업데이트하고 있습니다. 밝힌 동기는 음악이 음악 이론 관점에서 어떻게 구성되는지를 단지 음표와 템포를 저장하는 것이 아니라 표현하고, 작곡 AI에 딥러닝과 대규모 데이터셋에만 의존하는 대신 음악 이론 인터페이스를 제공하는 것입니다. README는 또한 효과적으로 사용하려면 기본 음악 이론에 대한 친숙함이 권장된다고 언급합니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.