Music is my life.
Find a file
Elex 32a4fd0039 ```text
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.
```
2026-10-13 10:27:15 +09:00
.idea New Calliope project 2026-08-31 14:14:18 +09:00
build-logic ```text 2026-10-13 10:27:15 +09:00
calliope ```text 2026-10-13 10:27:15 +09:00
chord-finder New Calliope project 2026-08-31 14:14:18 +09:00
chord-wheel New Calliope project 2026-08-31 14:14:18 +09:00
clio ```text 2026-10-13 10:27:15 +09:00
doc/midi Hello! That's quite an impressive amount of work you've put together. It looks like you're laying down the entire foundation for a robust music theory and MIDI processing library. 2026-06-06 22:02:43 +09:00
erato ```text 2026-10-13 10:27:15 +09:00
euterpe ```text 2026-10-13 10:27:15 +09:00
gradle New Calliope project 2026-08-31 14:14:18 +09:00
muziko New Calliope project 2026-08-31 14:14:18 +09:00
.gitignore Hello! That's quite an impressive amount of work you've put together. It looks like you're laying down the entire foundation for a robust music theory and MIDI processing library. 2026-06-06 22:02:43 +09:00
AGENTS.md refactoring 2026-09-01 16:41:05 +09:00
build.gradle.kts add Clio project 2026-08-31 14:48:44 +09:00
gradle.properties Hello! That's quite an impressive amount of work you've put together. It looks like you're laying down the entire foundation for a robust music theory and MIDI processing library. 2026-06-06 22:02:43 +09:00
gradlew New Calliope project 2026-08-31 14:14:18 +09:00
gradlew.bat New Calliope project 2026-08-31 14:14:18 +09:00
LICENSE New Calliope project 2026-08-31 14:14:18 +09:00
muse.png New Calliope project 2026-08-31 14:14:18 +09:00
README.md refactoring 2026-09-01 16:41:05 +09:00
settings.gradle.kts refactoring 2026-09-01 14:43:45 +09:00

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 파일을 참조하십시오.