Music is my life.
- Java 100%
Refactor build scripts to standardize dependencies and update publication configurations - Replace `runtimeOnly` with `compileOnly` for Lombok dependencies across all project modules. - Remove placeholder comments (`// todo`) in Maven publication and SCM configurations. - Update Maven publication "inceptionYear" to 2026. - Clean unused manifest attributes in the Java configuration. ``` |
||
|---|---|---|
| .idea | ||
| build-logic | ||
| calliope | ||
| chord-finder | ||
| chord-wheel | ||
| clio | ||
| doc/midi | ||
| erato | ||
| euterpe | ||
| gradle | ||
| muziko | ||
| .gitignore | ||
| AGENTS.md | ||
| build.gradle.kts | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| LICENSE | ||
| muse.png | ||
| README.md | ||
| settings.gradle.kts | ||
Project Muse
이 프로젝트는 음악의 구성 요소를 자바 클래스로 모델링하고, 음악을 만들 수 있도록 지원하는 것을 목표로 합니다.
프로젝트 구성
이 프로젝트는 여러 개의 서브 프로젝트로 구성되어 있습니다.
calliope
음악의 기본 구성 요소를 모델링합니다. 음표, 음계, 코드, 리듬 등 음악 이론의 핵심 개념들을 객체 지향적으로 표현합니다.
clio
미디(MIDI) 파일의 입출력 기능을 제공합니다. calliope 모듈에서 정의된 음악 데이터를 미디 파일로 저장하거나, 기존 미디 파일을 읽어와 음악 데이터를 생성할 수 있습니다.
erato
코드 다이어그램
euterpe
피아노 및 기타의 코드/스케일을 찾는 기능을 제공합니다. 특정 음정 구성에 해당하는 코드를 식별하거나, 주어진 코드에 포함되는 스케일을 찾아내는 등의 기능을 포함합니다.
melpomene
다이어토닉 스케일 및 연관된 다이어토닉 코드 등을 Circle of Fifths(5도권)를 통해 시각적으로 제공하고 계산하는 기능을 제공합니다. 음악 이론 학습 및 작곡에 유용한 도구입니다.
시작하기
프로젝트를 빌드하고 실행하기 위한 기본적인 지침을 제공합니다.
빌드
# 프로젝트 루트 디렉토리에서
./gradlew build
실행 예시 (가상)
각 서브 프로젝트의 주요 기능을 활용하는 예시입니다.
muziko: C Major Scale 생성
// 예시 코드 (실제 구현은 다를 수 있습니다)
import com.muse.muziko.scale.Scale;
import com.muse.muziko.note.Note;
import com.muse.muziko.scale.ScaleType;
public class MuzikoExample {
public static void main(String[] args) {
Scale cMajor = Scale.create(Note.C4, ScaleType.MAJOR);
System.out.println("C Major Scale: " + cMajor.getNotes());
// 출력 예시: C Major Scale: [C4, D4, E4, F4, G4, A4, B4]
}
}
chord-finder: C Major 코드 찾기
// 예시 코드 (실제 구현은 다를 수 있습니다)
import com.muse.chordfinder.ChordFinder;
import com.muse.muziko.note.Note;
import com.muse.muziko.chord.Chord;
import java.util.Set;
public class ChordFinderExample {
public static void main(String[] args) {
ChordFinder finder = new ChordFinder();
Set<Chord> chords = finder.findChords(Note.C4, Note.E4, Note.G4);
System.out.println("Notes C4, E4, G4 form: " + chords);
// 출력 예시: Notes C4, E4, G4 form: [C Major]
}
}
chord-wheel: C Major의 다이어토닉 코드 확인
// 예시 코드 (실제 구현은 다를 수 있습니다)
import com.muse.chordwheel.CircleOfFifths;
import com.muse.muziko.note.Note;
import com.muse.muziko.scale.ScaleType;
import com.muse.muziko.chord.Chord;
import java.util.List;
public class ChordWheelExample {
public static void main(String[] args) {
CircleOfFifths circle = new CircleOfFifths();
List<Chord> diatonicChords = circle.getDiatonicChords(Note.C, ScaleType.MAJOR);
System.out.println("Diatonic chords in C Major: " + diatonicChords);
// 출력 예시: Diatonic chords in C Major: [C Major, D minor, E minor, F Major, G Major, A minor, B diminished]
}
}
라이선스
이 프로젝트는 Apache 2.0 라이선스 하에 배포됩니다. 자세한 내용은 LICENSE 파일을 참조하십시오.