음악 이론 개념을 다루는 것을 간소화하기 위해 설계된 포괄적인 Dart 라이브러리입니다. 음표, 스케일, 코드, 음정 및 키 서명을 다루는 도구를 직관적인 API로 제공합니다. 음악 애플리케이션, 교육 도구 또는 오디오 처리 기능을 개발하는 개발자에게 이상적입니다. Android, iOS, Web, macOS, Windows, Linux에서 크로스플랫폼 개발을 지원합니다. 복잡한 음악적 관계를 사용하기 쉬운 함수로 추상화하여 정확하고 효율적인 음악 관련 계산을 가능하게 합니다.
사용 사례
음악 앱 개발
인터랙티브 음악 교육
코드 및 스케일 생성
오디오 애플리케이션 로직
실시간 음악 분석
구성 지원
주요 기능
노트 및 간격 조작
스케일과 코드 구성
키 서명 지원
크로스 플랫폼 호환성
직관적인 API 설계
정확한 음악 이론 계산
적합한 대상
음악 앱에서의 Dart 개발자
교육 소프트웨어 제작자
오디오 처리 프로젝트
코드 기반 도구를 사용하는 음악가
음악 이론 논리를 필요로 하는 앱 빌더
고려 사항
기본 음악 이론에 대한 이해가 필요합니다
이론적 측면에만 국한됨(오디오 재생 제외)
내장된 사운드 합성 없음
추가 오디오 라이브러리와 함께 사용할 때 가장 좋습니다
고급 사용 사례를 위한 맞춤 설정이 필요할 수 있습니다
핵심 기능에 중점을 둔 문서
원본 README
연결된 소스 저장소의 README 원문 스냅샷입니다. 최신 내용은 저장소에서 확인하세요.
A comprehensive Dart library for effortlessly working with music theory concepts,
offering an elegant and beautifully crafted API.
Features
Notes, accidentals, and enharmonic operations
Intervals, qualities, and circle of fifths
Chords, scales, harmonic functions, inversions and retrogrades
Keys, key signatures, and modes
Frequencies and tuning systems (work in progress)
Usage
Import the package into your Dart code:
import'package:music_notes/music_notes.dart';
Now, you can use the provided APIs to perform various music theory operations.
For more detailed usage instructions and examples, please refer to the
API documentation.
Notes
Define a Note from a NoteName (.a to .g) and an Accidental, or using their
shorthand static constants:
constNote(.e, .flat); // E♭Note.c; // CNote.d; // DNote.f; // F
NoteNames can be obtained from semitones or ordinal:
ScalePattern.lydian.on(Note.d); // D Lydian (D E F♯ G♯ A B C♯ D)ScalePattern.wholeTone.on(Note.f); // F Whole-tone (F G A B C♯ D♯ F)ScalePattern.majorPentatonic.on(Note.g.flat);
// G♭ Major pentatonic (G♭ A♭ B♭ D♭ E♭ G♭)
Or get it from a Key:
Note.a.flat.major.scale; // A♭ Major (ionian) (A♭ B♭ C D♭ E♭ F G A♭)Note.d.minor.scale; // D Natural minor (aeolian) (D E F G A B♭ C D)
Even experiment with any ScaleDegree or HarmonicFunction:
ScalePattern.lydian.on(Note.e).degree(.iv); // A♯Note.c.major.scale.functionChord(
HarmonicFunction.dominantV / .dominantV,
); // D
Rearrange any collection of Notes, Pitches or PitchClasses
as inversion or retrograde:
ScalePattern
.lydian // Lydian (M2 M2 M2 m2 M2 M2 m2)
.on(Note.parse('a')) // A Lydian (A B C♯ D♯ E F♯ G♯ A)
.transposeBy(.M2) // B Lydian (B C♯ D♯ E♯ F♯ G♯ A♯ B)
.degree(.iii) // D♯
.respelledUpwards // E♭
.major // E♭ major
.relative // C minor
.scale // C Natural minor (aeolian) (C D E♭ F G A♭ B♭ C)
.degreeChord(.v) // G-
.add9(); // G-9
Contributions are welcome! If you encounter any issues or have suggestions for improvements, please feel free to open an issue or submit a pull request on the GitHub repository.