aulos 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. aulos-0.1.0/LICENSE +21 -0
  2. aulos-0.1.0/MANIFEST.in +1 -0
  3. aulos-0.1.0/PKG-INFO +146 -0
  4. aulos-0.1.0/README.md +107 -0
  5. aulos-0.1.0/pyproject.toml +34 -0
  6. aulos-0.1.0/setup.cfg +4 -0
  7. aulos-0.1.0/src/aulos/TET12/__init__.py +88 -0
  8. aulos-0.1.0/src/aulos/TET12/note.py +41 -0
  9. aulos-0.1.0/src/aulos/TET12/scale.py +499 -0
  10. aulos-0.1.0/src/aulos/TET12/tuner.py +77 -0
  11. aulos-0.1.0/src/aulos/TET12/utils.py +27 -0
  12. aulos-0.1.0/src/aulos/TET24/__init__.py +0 -0
  13. aulos-0.1.0/src/aulos/__init__.py +22 -0
  14. aulos-0.1.0/src/aulos/__main__.py +35 -0
  15. aulos-0.1.0/src/aulos/_core/__init__.py +19 -0
  16. aulos-0.1.0/src/aulos/_core/framework/__init__.py +9 -0
  17. aulos-0.1.0/src/aulos/_core/framework/context.py +25 -0
  18. aulos-0.1.0/src/aulos/_core/framework/inject.py +30 -0
  19. aulos-0.1.0/src/aulos/_core/framework/optimize.py +15 -0
  20. aulos-0.1.0/src/aulos/_core/object.py +53 -0
  21. aulos-0.1.0/src/aulos/_core/schema.py +8 -0
  22. aulos-0.1.0/src/aulos/_core/setting.py +31 -0
  23. aulos-0.1.0/src/aulos/_core/utils/__init__.py +12 -0
  24. aulos-0.1.0/src/aulos/_core/utils/array.py +19 -0
  25. aulos-0.1.0/src/aulos/_core/utils/calculation.py +6 -0
  26. aulos-0.1.0/src/aulos/_core/utils/dataclass.py +31 -0
  27. aulos-0.1.0/src/aulos/_core/utils/decorators.py +15 -0
  28. aulos-0.1.0/src/aulos/_errors.py +1 -0
  29. aulos-0.1.0/src/aulos/_warnings.py +1 -0
  30. aulos-0.1.0/src/aulos/note/__init__.py +15 -0
  31. aulos-0.1.0/src/aulos/note/key.py +72 -0
  32. aulos-0.1.0/src/aulos/note/note.py +175 -0
  33. aulos-0.1.0/src/aulos/note/pitchclass.py +134 -0
  34. aulos-0.1.0/src/aulos/note/schemas/__init__.py +9 -0
  35. aulos-0.1.0/src/aulos/note/schemas/key.py +57 -0
  36. aulos-0.1.0/src/aulos/note/schemas/note.py +227 -0
  37. aulos-0.1.0/src/aulos/note/schemas/pitchclass.py +188 -0
  38. aulos-0.1.0/src/aulos/scale/__init__.py +14 -0
  39. aulos-0.1.0/src/aulos/scale/diatonic.py +91 -0
  40. aulos-0.1.0/src/aulos/scale/scale.py +108 -0
  41. aulos-0.1.0/src/aulos/scale/schemas/__init__.py +5 -0
  42. aulos-0.1.0/src/aulos/scale/schemas/scale.py +23 -0
  43. aulos-0.1.0/src/aulos/tuner/__init__.py +11 -0
  44. aulos-0.1.0/src/aulos/tuner/schemas/__init__.py +5 -0
  45. aulos-0.1.0/src/aulos/tuner/schemas/tuner.py +19 -0
  46. aulos-0.1.0/src/aulos/tuner/tuner.py +61 -0
  47. aulos-0.1.0/src/aulos/ui/__init__.py +6 -0
  48. aulos-0.1.0/src/aulos/ui/components/__init__.py +8 -0
  49. aulos-0.1.0/src/aulos/ui/components/base.py +13 -0
  50. aulos-0.1.0/src/aulos/ui/components/chordviewer.py +0 -0
  51. aulos-0.1.0/src/aulos/ui/components/keyboard.py +129 -0
  52. aulos-0.1.0/src/aulos/ui/components/scaleviewer.py +105 -0
  53. aulos-0.1.0/src/aulos/ui/components/selecter/__init__.py +7 -0
  54. aulos-0.1.0/src/aulos/ui/components/selecter/keyselecter.py +73 -0
  55. aulos-0.1.0/src/aulos/ui/components/selecter/scaleselecter.py +129 -0
  56. aulos-0.1.0/src/aulos/ui/const.py +27 -0
  57. aulos-0.1.0/src/aulos.egg-info/PKG-INFO +146 -0
  58. aulos-0.1.0/src/aulos.egg-info/SOURCES.txt +59 -0
  59. aulos-0.1.0/src/aulos.egg-info/dependency_links.txt +1 -0
  60. aulos-0.1.0/src/aulos.egg-info/entry_points.txt +2 -0
  61. aulos-0.1.0/src/aulos.egg-info/top_level.txt +1 -0
aulos-0.1.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 Oujox
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1 @@
1
+ exclude ./src/run.py
aulos-0.1.0/PKG-INFO ADDED
@@ -0,0 +1,146 @@
1
+ Metadata-Version: 2.2
2
+ Name: aulos
3
+ Version: 0.1.0
4
+ Summary: Python library for speech processing and analysis from a music theory perspective.
5
+ License: MIT License
6
+
7
+ Copyright (c) 2024 Oujox
8
+
9
+ Permission is hereby granted, free of charge, to any person obtaining a copy
10
+ of this software and associated documentation files (the "Software"), to deal
11
+ in the Software without restriction, including without limitation the rights
12
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13
+ copies of the Software, and to permit persons to whom the Software is
14
+ furnished to do so, subject to the following conditions:
15
+
16
+ The above copyright notice and this permission notice shall be included in all
17
+ copies or substantial portions of the Software.
18
+
19
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
25
+ SOFTWARE.
26
+
27
+ Project-URL: Homepage, https://github.com/Oujox/aulos
28
+ Project-URL: Repository, https://github.com/Oujox/aulos
29
+ Classifier: Programming Language :: Python :: 3
30
+ Classifier: Programming Language :: Python :: 3 :: Only
31
+ Classifier: Programming Language :: Python :: 3.12
32
+ Classifier: Programming Language :: Python :: 3.13
33
+ Classifier: Topic :: Multimedia :: Sound/Audio :: Analysis
34
+ Classifier: Operating System :: OS Independent
35
+ Classifier: Typing :: Typed
36
+ Requires-Python: >=3.12
37
+ Description-Content-Type: text/markdown
38
+ License-File: LICENSE
39
+
40
+ # aulos
41
+
42
+ Python library for speech processing and analysis from a music theory perspective.
43
+
44
+ | | |
45
+ | --- | --- |
46
+ | CI/CD | [![Test](https://github.com/Oujox/aulos/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/Oujox/aulos/actions/workflows/ci.yml) [![Build & Publish](https://github.com/Oujox/aulos/actions/workflows/cd.yml/badge.svg?branch=main)](https://github.com/Oujox/aulos/actions/workflows/cd.yml) |
47
+ | Package | |
48
+ | Meta | [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff) [![mypy](https://img.shields.io/badge/types-mypy-blue.svg)](https://github.com/python/mypy) [![codecov](https://codecov.io/gh/Oujox/aulos/graph/badge.svg?token=UP6ZQP7HMK)](https://codecov.io/gh/Oujox/aulos) [![License](https://img.shields.io/badge/license-MIT-green.svg?style=flat)](https://github.com/Oujox/aulos/blob/main/LICENSE) |
49
+
50
+ ## Features ✨
51
+
52
+ - Comprehensive tools for audio processing and analysis based on music theory principles.
53
+ - A structured framework for organizing and working with music theory objects.
54
+ - Flexible and extensible design, allowing seamless customization and expansion.
55
+
56
+ ## Installation 🛠️
57
+
58
+ ## Usage 📖
59
+
60
+ ```python
61
+ from aulos.TET12 import Note, PitchClass
62
+
63
+ print(Note("C#4"))
64
+ # stdout:
65
+ # <Note: C#4, scale: None>
66
+
67
+ print(PitchClass("C#"))
68
+ # stdout:
69
+ # <PitchClass: C#, scale: None>
70
+ ```
71
+
72
+ ```python
73
+ from aulos.TET12 import Key
74
+ from aulos.TET12 import Major, Dorian, Pentatonic
75
+
76
+ print(Major(Key("C")))
77
+ # stdout:
78
+ # <Major: <Key: C>>
79
+
80
+ print(Dorian(Key("C")).components)
81
+ # stdout:
82
+ # (<PitchClass: C, scale: <Dorian: <Key: C>>>,
83
+ # <PitchClass: D, scale: <Dorian: <Key: C>>>,
84
+ # <PitchClass: Eb, scale: <Dorian: <Key: C>>>,
85
+ # <PitchClass: F, scale: <Dorian: <Key: C>>>,
86
+ # <PitchClass: G, scale: <Dorian: <Key: C>>>,
87
+ # <PitchClass: A, scale: <Dorian: <Key: C>>>,
88
+ # <PitchClass: Bb, scale: <Dorian: <Key: C>>>)
89
+
90
+ print(Pentatonic(Key("C")).components)
91
+ # stdout:
92
+ # (<PitchClass: C, scale: <Pentatonic: <Key: C>>>,
93
+ # <PitchClass: D, scale: <Pentatonic: <Key: C>>>,
94
+ # <PitchClass: E, scale: <Pentatonic: <Key: C>>>,
95
+ # <PitchClass: G, scale: <Pentatonic: <Key: C>>>,
96
+ # <PitchClass: A, scale: <Pentatonic: <Key: C>>>)
97
+ ```
98
+
99
+ ```python
100
+ from aulos.TET12 import Note
101
+ from aulos.TET12 import JustIntonationTuner, Equal12Tuner
102
+
103
+ print(Note("C4", tuner=Equal12Tuner(440)).hz)
104
+ # stdout:
105
+ # 440.0
106
+
107
+ print(Note("A4", tuner=JustIntonationTuner(440)).hz)
108
+ # stdout:
109
+ # 733.3333333333333
110
+ ```
111
+
112
+ ## Dependencies 🧩
113
+
114
+ This project uses the following libraries and tools for development and testing.
115
+
116
+ ### Runtime Dependencies 📂
117
+ This project's final product depends only on Python's **standard library**. No third-party libraries are required at runtime.
118
+
119
+
120
+ ### Development Libraries 🛠️
121
+
122
+ The following libraries are used during development and testing **but are not included in the final product**
123
+
124
+ - [**pytest**](https://docs.pytest.org/en/latest/)
125
+ - [**pytest-cov**](https://github.com/pytest-dev/pytest-cov)
126
+ - [**ruff**](https://docs.astral.sh/ruff)
127
+ - [**mypy**](https://www.mypy-lang.org/)
128
+
129
+ ### GitHub Actions ⚙️
130
+
131
+ - [**robvanderleek/create-issue-branch**](https://github.com/robvanderleek/create-issue-branch)
132
+ - [**release-drafter/release-drafter**](https://github.com/release-drafter/release-drafter)
133
+ - [**pypa/gh-action-pypi-publish**](https://github.com/pypa/gh-action-pypi-publish)
134
+ - [**codecov/codecov-action**](https://github.com/codecov/codecov-action)
135
+ - [**actions/checkout**](https://github.com/actions/checkout)
136
+ - [**actions/setup-python**](https://github.com/actions/setup-python)
137
+ - [**actions/upload-artifact**](https://github.com/actions/upload-artifact)
138
+ - [**actions/download-artifact**](https://github.com/actions/download-artifact)
139
+
140
+ ## License 📜
141
+
142
+ This project is distributed under the MIT License. For more information, refer to the [LICENSE](https://github.com/Oujox/aulos/blob/main/LICENSE) file.
143
+
144
+ ## Contact 📬
145
+
146
+ - Email: oujoxyz365@gmail.com
aulos-0.1.0/README.md ADDED
@@ -0,0 +1,107 @@
1
+ # aulos
2
+
3
+ Python library for speech processing and analysis from a music theory perspective.
4
+
5
+ | | |
6
+ | --- | --- |
7
+ | CI/CD | [![Test](https://github.com/Oujox/aulos/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/Oujox/aulos/actions/workflows/ci.yml) [![Build & Publish](https://github.com/Oujox/aulos/actions/workflows/cd.yml/badge.svg?branch=main)](https://github.com/Oujox/aulos/actions/workflows/cd.yml) |
8
+ | Package | |
9
+ | Meta | [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff) [![mypy](https://img.shields.io/badge/types-mypy-blue.svg)](https://github.com/python/mypy) [![codecov](https://codecov.io/gh/Oujox/aulos/graph/badge.svg?token=UP6ZQP7HMK)](https://codecov.io/gh/Oujox/aulos) [![License](https://img.shields.io/badge/license-MIT-green.svg?style=flat)](https://github.com/Oujox/aulos/blob/main/LICENSE) |
10
+
11
+ ## Features ✨
12
+
13
+ - Comprehensive tools for audio processing and analysis based on music theory principles.
14
+ - A structured framework for organizing and working with music theory objects.
15
+ - Flexible and extensible design, allowing seamless customization and expansion.
16
+
17
+ ## Installation 🛠️
18
+
19
+ ## Usage 📖
20
+
21
+ ```python
22
+ from aulos.TET12 import Note, PitchClass
23
+
24
+ print(Note("C#4"))
25
+ # stdout:
26
+ # <Note: C#4, scale: None>
27
+
28
+ print(PitchClass("C#"))
29
+ # stdout:
30
+ # <PitchClass: C#, scale: None>
31
+ ```
32
+
33
+ ```python
34
+ from aulos.TET12 import Key
35
+ from aulos.TET12 import Major, Dorian, Pentatonic
36
+
37
+ print(Major(Key("C")))
38
+ # stdout:
39
+ # <Major: <Key: C>>
40
+
41
+ print(Dorian(Key("C")).components)
42
+ # stdout:
43
+ # (<PitchClass: C, scale: <Dorian: <Key: C>>>,
44
+ # <PitchClass: D, scale: <Dorian: <Key: C>>>,
45
+ # <PitchClass: Eb, scale: <Dorian: <Key: C>>>,
46
+ # <PitchClass: F, scale: <Dorian: <Key: C>>>,
47
+ # <PitchClass: G, scale: <Dorian: <Key: C>>>,
48
+ # <PitchClass: A, scale: <Dorian: <Key: C>>>,
49
+ # <PitchClass: Bb, scale: <Dorian: <Key: C>>>)
50
+
51
+ print(Pentatonic(Key("C")).components)
52
+ # stdout:
53
+ # (<PitchClass: C, scale: <Pentatonic: <Key: C>>>,
54
+ # <PitchClass: D, scale: <Pentatonic: <Key: C>>>,
55
+ # <PitchClass: E, scale: <Pentatonic: <Key: C>>>,
56
+ # <PitchClass: G, scale: <Pentatonic: <Key: C>>>,
57
+ # <PitchClass: A, scale: <Pentatonic: <Key: C>>>)
58
+ ```
59
+
60
+ ```python
61
+ from aulos.TET12 import Note
62
+ from aulos.TET12 import JustIntonationTuner, Equal12Tuner
63
+
64
+ print(Note("C4", tuner=Equal12Tuner(440)).hz)
65
+ # stdout:
66
+ # 440.0
67
+
68
+ print(Note("A4", tuner=JustIntonationTuner(440)).hz)
69
+ # stdout:
70
+ # 733.3333333333333
71
+ ```
72
+
73
+ ## Dependencies 🧩
74
+
75
+ This project uses the following libraries and tools for development and testing.
76
+
77
+ ### Runtime Dependencies 📂
78
+ This project's final product depends only on Python's **standard library**. No third-party libraries are required at runtime.
79
+
80
+
81
+ ### Development Libraries 🛠️
82
+
83
+ The following libraries are used during development and testing **but are not included in the final product**
84
+
85
+ - [**pytest**](https://docs.pytest.org/en/latest/)
86
+ - [**pytest-cov**](https://github.com/pytest-dev/pytest-cov)
87
+ - [**ruff**](https://docs.astral.sh/ruff)
88
+ - [**mypy**](https://www.mypy-lang.org/)
89
+
90
+ ### GitHub Actions ⚙️
91
+
92
+ - [**robvanderleek/create-issue-branch**](https://github.com/robvanderleek/create-issue-branch)
93
+ - [**release-drafter/release-drafter**](https://github.com/release-drafter/release-drafter)
94
+ - [**pypa/gh-action-pypi-publish**](https://github.com/pypa/gh-action-pypi-publish)
95
+ - [**codecov/codecov-action**](https://github.com/codecov/codecov-action)
96
+ - [**actions/checkout**](https://github.com/actions/checkout)
97
+ - [**actions/setup-python**](https://github.com/actions/setup-python)
98
+ - [**actions/upload-artifact**](https://github.com/actions/upload-artifact)
99
+ - [**actions/download-artifact**](https://github.com/actions/download-artifact)
100
+
101
+ ## License 📜
102
+
103
+ This project is distributed under the MIT License. For more information, refer to the [LICENSE](https://github.com/Oujox/aulos/blob/main/LICENSE) file.
104
+
105
+ ## Contact 📬
106
+
107
+ - Email: oujoxyz365@gmail.com
@@ -0,0 +1,34 @@
1
+ [build-system]
2
+ requires = [
3
+ "setuptools",
4
+ "wheel"
5
+ ]
6
+ build-backend = "setuptools.build_meta"
7
+
8
+ [project]
9
+ name = "aulos"
10
+ version = "0.1.0"
11
+ description = "Python library for speech processing and analysis from a music theory perspective."
12
+ readme = "README.md"
13
+ license = { file = "LICENSE" }
14
+ classifiers = [
15
+ "Programming Language :: Python :: 3",
16
+ "Programming Language :: Python :: 3 :: Only",
17
+ "Programming Language :: Python :: 3.12",
18
+ "Programming Language :: Python :: 3.13",
19
+ "Topic :: Multimedia :: Sound/Audio :: Analysis",
20
+ "Operating System :: OS Independent",
21
+ "Typing :: Typed",
22
+ ]
23
+ requires-python = ">=3.12"
24
+ dependencies = []
25
+
26
+ [project.scripts]
27
+ aulos = "aulos.__main__:main"
28
+
29
+ [project.urls]
30
+ Homepage = "https://github.com/Oujox/aulos"
31
+ Repository = "https://github.com/Oujox/aulos"
32
+
33
+ [tool.setuptools]
34
+ package-dir = { "" = "src" }
aulos-0.1.0/setup.cfg ADDED
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,88 @@
1
+ """
2
+ 12-TET (12 equal temperament)
3
+ ---
4
+
5
+ This module provides classes and functions for working with notes, pitch classes,
6
+ and scales in the 12-tone equal temperament system.
7
+ It includes definitions for various musical scales and modes.
8
+ """
9
+
10
+ from .note import Key, Note, PitchClass
11
+
12
+ # Scales
13
+ # Modes
14
+ from .scale import (
15
+ Aeorian,
16
+ Aeorian_f5,
17
+ AlteredSuperLocrian,
18
+ Bluenote,
19
+ CombDiminish,
20
+ Diminish,
21
+ Dorian,
22
+ Dorian_f2,
23
+ Dorian_s4,
24
+ HarmonicMinor,
25
+ Ionian,
26
+ Ionian_s5,
27
+ Locrian,
28
+ Locrian_n6,
29
+ Lydian,
30
+ Lydian_f7,
31
+ Lydian_s2,
32
+ Lydian_s5,
33
+ Major,
34
+ MelodicMinor,
35
+ Minor,
36
+ MinorPentatonic,
37
+ Mixolydian,
38
+ Mixolydian_f6,
39
+ Mixolydian_f9,
40
+ Pentatonic,
41
+ Phrygian,
42
+ SuperLocrian,
43
+ Wholetone,
44
+ )
45
+ from .tuner import Equal12Tuner, JustIntonationTuner, MeantoneTuner, PythagoreanTuner
46
+
47
+ __all__ = [
48
+ # Note classes
49
+ "Key",
50
+ "Note",
51
+ "PitchClass",
52
+ # Modes
53
+ "Aeorian",
54
+ "Aeorian_f5",
55
+ "AlteredSuperLocrian",
56
+ "Dorian",
57
+ "Dorian_f2",
58
+ "Dorian_s4",
59
+ "Ionian",
60
+ "Ionian_s5",
61
+ "Locrian",
62
+ "Locrian_n6",
63
+ "Lydian",
64
+ "Lydian_f7",
65
+ "Lydian_s2",
66
+ "Lydian_s5",
67
+ "Mixolydian",
68
+ "Mixolydian_f6",
69
+ "Mixolydian_f9",
70
+ "Phrygian",
71
+ "SuperLocrian",
72
+ # Scales
73
+ "Bluenote",
74
+ "CombDiminish",
75
+ "Diminish",
76
+ "HarmonicMinor",
77
+ "Major",
78
+ "MelodicMinor",
79
+ "Minor",
80
+ "MinorPentatonic",
81
+ "Pentatonic",
82
+ "Wholetone",
83
+ # tuners
84
+ "JustIntonationTuner",
85
+ "MeantoneTuner",
86
+ "PythagoreanTuner",
87
+ "Equal12Tuner",
88
+ ]
@@ -0,0 +1,41 @@
1
+ from ..note import BaseKey, BaseNote, BasePitchClass
2
+
3
+
4
+ class PitchClass(
5
+ BasePitchClass,
6
+ intervals=(2, 2, 1, 2, 2, 2, 1),
7
+ symbols_pitchclass=("C", "D", "E", "F", "G", "A", "B"),
8
+ symbols_accidental=("bbb", "bb", "b", "#", "##", "###"),
9
+ ):
10
+ """ """
11
+
12
+
13
+ class Note(
14
+ BaseNote[PitchClass],
15
+ symbols_notenumber=range(128),
16
+ symbols_octave=(
17
+ "<N>-1",
18
+ "<N>0",
19
+ "<N>1",
20
+ "<N>2",
21
+ "<N>3",
22
+ "<N>4",
23
+ "<N>5",
24
+ "<N>6",
25
+ "<N>7",
26
+ "<N>8",
27
+ "<N>9",
28
+ ),
29
+ reference_notenumber=60,
30
+ reference_octave=5,
31
+ pitchclass=PitchClass,
32
+ ):
33
+ """ """
34
+
35
+
36
+ class Key(
37
+ BaseKey[PitchClass],
38
+ accidental=1,
39
+ pitchclass=PitchClass,
40
+ ):
41
+ """ """