vault backup: 2025-12-29 12:07:42
This commit is contained in:
+1
-98
@@ -12,104 +12,7 @@ tags:
|
||||
|
||||
## 2025-12-19 06:22
|
||||
|
||||
PowerShell module to assist in translating between banjo fingerings and concert notes,
|
||||
as well as between [[lilypond]] and conventional notation.
|
||||
|
||||
```powershell
|
||||
$Db4 = [Pitch]::FromLilyPond("des'")
|
||||
[Note]::($Db4,1/4).PlayInTime(120)
|
||||
|
||||
$str1 = [FrettedStringTuning]::FromOpen([Pitch]::FromLilyPond("d,,,"))
|
||||
$str1c2 = $str1.Capo(2)
|
||||
|
||||
$openGtuning = [FrettedStringInstrumentTuning]::FromStringTunings(@(
|
||||
[FrettedStringTuning]::FromOpen([Pitch]::FromLilyPond("d,,,")),
|
||||
[FrettedStringTuning]::FromOpen([Pitch]::FromLilyPond("b,,")),
|
||||
[FrettedStringTuning]::FromOpen([Pitch]::FromLilyPond("g,")),
|
||||
[FrettedStringTuning]::FromOpen([Pitch]::FromLilyPond("d")),
|
||||
[FrettedStringTuning]::FromOpen([Pitch]::FromLilyPond("g'")),
|
||||
# note: the notation used above is concert octave,
|
||||
# banjo is transposed up one octave.
|
||||
))
|
||||
[Note]::($openGc2tuning.GetPitchFromFingering(4,11)/4).PlayInTime(120) # play Db4
|
||||
|
||||
$openGc2tuning = $openGtuning.Capo(2)
|
||||
[Note]::($openGc2tuning.GetPitchFromFingering(4,9),1/4).PlayInTime(120) # play Db4
|
||||
|
||||
# TODO: class iFrettedStringInstrument
|
||||
# class Banjo implements iFrettedStringInstrument
|
||||
|
||||
```
|
||||
|
||||
```powershell
|
||||
class Pitch {
|
||||
[Pitch] TransposeOctave([Note]$note1,[Note]$note2) {}
|
||||
[Pitch] TransposeOctave([int]$modifier) {}
|
||||
}
|
||||
|
||||
class Duration {
|
||||
# 1/4, 1/8, etc.
|
||||
# does not encode timing.
|
||||
}
|
||||
|
||||
class Note {
|
||||
[Pitch]$_pitch
|
||||
[Duration]$_duration
|
||||
}
|
||||
```
|
||||
|
||||
```mermaid
|
||||
classDiagram
|
||||
%% simple score definition, does not support polyphony
|
||||
class Score {
|
||||
List~Note~ notes
|
||||
float beatsPerMinute
|
||||
+Beep() void
|
||||
}
|
||||
|
||||
Score *-- Note
|
||||
class Note {
|
||||
Pitch pitch
|
||||
float beats
|
||||
+BeepInTime(int bpm)
|
||||
}
|
||||
|
||||
Note *-- Pitch
|
||||
class Pitch {
|
||||
+Transpose(Pitch from, Pitch to) Pitch
|
||||
+TransposeOctave(int modifier) Pitch
|
||||
+FromLilyPond(string text) Pitch
|
||||
+GetFrequency() float
|
||||
+Beep(int milliseconds) void
|
||||
}
|
||||
|
||||
class Banjo {
|
||||
+FromNamedTuning(string tuningName) Banjo
|
||||
}
|
||||
|
||||
Banjo <|.. iFrettedStringInstrument
|
||||
class iFrettedStringInstrument {
|
||||
-FrettedStringInstrumentTuning tuning
|
||||
+GetPitchFromFingering(int string,int fret) Pitch
|
||||
+GetFingeringsFromPitch(Pitch pitch) todo
|
||||
}
|
||||
|
||||
iFrettedStringInstrument *-- FrettedStringInstrumentTuning
|
||||
class FrettedStringInstrumentTuning {
|
||||
-List~FrettedStringTuning~ stringTunings
|
||||
+GetPitchFromFingering(int string,int fret) Pitch
|
||||
+GetFingeringsFromPitch(Pitch pitch) todo
|
||||
+Capo(int fret) FrettedStringInstrumentTuning
|
||||
}
|
||||
|
||||
FrettedStringInstrumentTuning *-- FrettedStringTuning
|
||||
class FrettedStringTuning {
|
||||
Pitch openPitch
|
||||
int fretOffset
|
||||
+GetPitchFromFret(int fret) Pitch
|
||||
+SetOffset(int fret) FrettedStringTuning
|
||||
}
|
||||
```
|
||||
[[music-theory-as-code]]
|
||||
|
||||
## 2025-12-19 10:44
|
||||
|
||||
|
||||
@@ -0,0 +1,253 @@
|
||||
# Music Theory as Code
|
||||
|
||||
PowerShell module to assist in translating between banjo fingerings and concert notes,
|
||||
as well as between [[lilypond]] and conventional notation.
|
||||
|
||||
```powershell
|
||||
$Db4 = [Pitch]::FromLilyPond("des'")
|
||||
[Note]::($Db4,1/4).PlayInTime(120)
|
||||
|
||||
$str1 = [FrettedStringTuning]::FromOpen([Pitch]::FromLilyPond("d,,,"))
|
||||
$str1c2 = $str1.Capo(2)
|
||||
|
||||
$openGtuning = [FrettedStringInstrumentTuning]::FromStringTunings(@(
|
||||
[FrettedStringTuning]::FromOpen([Pitch]::FromLilyPond("d,,,")),
|
||||
[FrettedStringTuning]::FromOpen([Pitch]::FromLilyPond("b,,")),
|
||||
[FrettedStringTuning]::FromOpen([Pitch]::FromLilyPond("g,")),
|
||||
[FrettedStringTuning]::FromOpen([Pitch]::FromLilyPond("d")),
|
||||
[FrettedStringTuning]::FromOpen([Pitch]::FromLilyPond("g'")),
|
||||
# note: the notation used above is concert octave,
|
||||
# banjo is transposed up one octave.
|
||||
))
|
||||
[Note]::($openGc2tuning.GetPitchFromFingering(4,11)/4).PlayInTime(120) # play Db4
|
||||
|
||||
$openGc2tuning = $openGtuning.Capo(2)
|
||||
[Note]::($openGc2tuning.GetPitchFromFingering(4,9),1/4).PlayInTime(120) # play Db4
|
||||
|
||||
# TODO: class iFrettedStringInstrument
|
||||
# class Banjo implements iFrettedStringInstrument
|
||||
|
||||
```
|
||||
|
||||
```powershell
|
||||
class Pitch {
|
||||
[Pitch] TransposeOctave([Note]$note1,[Note]$note2) {}
|
||||
[Pitch] TransposeOctave([int]$modifier) {}
|
||||
}
|
||||
|
||||
class Duration {
|
||||
# 1/4, 1/8, etc.
|
||||
# does not encode timing.
|
||||
}
|
||||
|
||||
class Note {
|
||||
[Pitch]$_pitch
|
||||
[Duration]$_duration
|
||||
}
|
||||
```
|
||||
|
||||
```mermaid
|
||||
classDiagram
|
||||
%% simple score definition, does not support polyphony
|
||||
class Score {
|
||||
List~Note~ notes
|
||||
float beatsPerMinute
|
||||
+Beep() void
|
||||
}
|
||||
|
||||
Score *-- Note
|
||||
class Note {
|
||||
Pitch pitch
|
||||
float beats
|
||||
+BeepInTime(int bpm)
|
||||
}
|
||||
|
||||
Note *-- Pitch
|
||||
class Pitch {
|
||||
+Transpose(Pitch from, Pitch to) Pitch
|
||||
+TransposeOctave(int modifier) Pitch
|
||||
+FromLilyPond(string text) Pitch
|
||||
+GetFrequency() float
|
||||
+Beep(int milliseconds) void
|
||||
}
|
||||
|
||||
class Banjo {
|
||||
+FromNamedTuning(string tuningName) Banjo
|
||||
}
|
||||
|
||||
Banjo <|.. iFrettedStringInstrument
|
||||
class iFrettedStringInstrument {
|
||||
-FrettedStringInstrumentTuning tuning
|
||||
+GetPitchFromFingering(int string,int fret) Pitch
|
||||
+GetFingeringsFromPitch(Pitch pitch) todo
|
||||
}
|
||||
|
||||
iFrettedStringInstrument *-- FrettedStringInstrumentTuning
|
||||
class FrettedStringInstrumentTuning {
|
||||
-List~FrettedStringTuning~ stringTunings
|
||||
+GetPitchFromFingering(int string,int fret) Pitch
|
||||
+GetFingeringsFromPitch(Pitch pitch) todo
|
||||
+Capo(int fret) FrettedStringInstrumentTuning
|
||||
}
|
||||
|
||||
FrettedStringInstrumentTuning *-- FrettedStringTuning
|
||||
class FrettedStringTuning {
|
||||
Pitch openPitch
|
||||
int fretOffset
|
||||
+GetPitchFromFret(int fret) Pitch
|
||||
+SetOffset(int fret) FrettedStringTuning
|
||||
}
|
||||
```
|
||||
|
||||
[[music-theory]]
|
||||
|
||||
| midi | tone | mod12 | concert-octave |
|
||||
| ---- | ----- | ----- | -------------- |
|
||||
| 0 | C | 0 | -1 |
|
||||
| 1 | C♯/D♭ | 1 | -1 |
|
||||
| 2 | D | 2 | -1 |
|
||||
| 3 | D♯/E♭ | 3 | -1 |
|
||||
| 4 | E | 4 | -1 |
|
||||
| 5 | F | 5 | -1 |
|
||||
| 6 | F♯/G♭ | 6 | -1 |
|
||||
| 7 | G | 7 | -1 |
|
||||
| 8 | G♯/A♭ | 8 | -1 |
|
||||
| 9 | A | 9 | -1 |
|
||||
| 10 | A♯/B♭ | 10 | -1 |
|
||||
| 11 | B | 11 | -1 |
|
||||
| 12 | C | 0 | 0 |
|
||||
| 13 | C♯/D♭ | 1 | 0 |
|
||||
| 14 | D | 2 | 0 |
|
||||
| 15 | D♯/E♭ | 3 | 0 |
|
||||
| 16 | E | 4 | 0 |
|
||||
| 17 | F | 5 | 0 |
|
||||
| 18 | F♯/G♭ | 6 | 0 |
|
||||
| 19 | G | 7 | 0 |
|
||||
| 20 | G♯/A♭ | 8 | 0 |
|
||||
| 21 | A | 9 | 0 |
|
||||
| 22 | A♯/B♭ | 10 | 0 |
|
||||
| 23 | B | 11 | 0 |
|
||||
| 24 | C | 0 | 1 |
|
||||
| 25 | C♯/D♭ | 1 | 1 |
|
||||
| 26 | D | 2 | 1 |
|
||||
| 27 | D♯/E♭ | 3 | 1 |
|
||||
| 28 | E | 4 | 1 |
|
||||
| 29 | F | 5 | 1 |
|
||||
| 30 | F♯/G♭ | 6 | 1 |
|
||||
| 31 | G | 7 | 1 |
|
||||
| 32 | G♯/A♭ | 8 | 1 |
|
||||
| 33 | A | 9 | 1 |
|
||||
| 34 | A♯/B♭ | 10 | 1 |
|
||||
| 35 | B | 11 | 1 |
|
||||
| 36 | C | 0 | 2 |
|
||||
| 37 | C♯/D♭ | 1 | 2 |
|
||||
| 38 | D | 2 | 2 |
|
||||
| 39 | D♯/E♭ | 3 | 2 |
|
||||
| 40 | E | 4 | 2 |
|
||||
| 41 | F | 5 | 2 |
|
||||
| 42 | F♯/G♭ | 6 | 2 |
|
||||
| 43 | G | 7 | 2 |
|
||||
| 44 | G♯/A♭ | 8 | 2 |
|
||||
| 45 | A | 9 | 2 |
|
||||
| 46 | A♯/B♭ | 10 | 2 |
|
||||
| 47 | B | 11 | 2 |
|
||||
| 48 | C | 0 | 3 |
|
||||
| 49 | C♯/D♭ | 1 | 3 |
|
||||
| 50 | D | 2 | 3 |
|
||||
| 51 | D♯/E♭ | 3 | 3 |
|
||||
| 52 | E | 4 | 3 |
|
||||
| 53 | F | 5 | 3 |
|
||||
| 54 | F♯/G♭ | 6 | 3 |
|
||||
| 55 | G | 7 | 3 |
|
||||
| 56 | G♯/A♭ | 8 | 3 |
|
||||
| 57 | A | 9 | 3 |
|
||||
| 58 | A♯/B♭ | 10 | 3 |
|
||||
| 59 | B | 11 | 3 |
|
||||
| 60 | C | 0 | 4 |
|
||||
| 61 | C♯/D♭ | 1 | 4 |
|
||||
| 62 | D | 2 | 4 |
|
||||
| 63 | D♯/E♭ | 3 | 4 |
|
||||
| 64 | E | 4 | 4 |
|
||||
| 65 | F | 5 | 4 |
|
||||
| 66 | F♯/G♭ | 6 | 4 |
|
||||
| 67 | G | 7 | 4 |
|
||||
| 68 | G♯/A♭ | 8 | 4 |
|
||||
| 69 | A | 9 | 4 |
|
||||
| 70 | A♯/B♭ | 10 | 4 |
|
||||
| 71 | B | 11 | 4 |
|
||||
| 72 | C | 0 | 5 |
|
||||
| 73 | C♯/D♭ | 1 | 5 |
|
||||
| 74 | D | 2 | 5 |
|
||||
| 75 | D♯/E♭ | 3 | 5 |
|
||||
| 76 | E | 4 | 5 |
|
||||
| 77 | F | 5 | 5 |
|
||||
| 78 | F♯/G♭ | 6 | 5 |
|
||||
| 79 | G | 7 | 5 |
|
||||
| 80 | G♯/A♭ | 8 | 5 |
|
||||
| 81 | A | 9 | 5 |
|
||||
| 82 | A♯/B♭ | 10 | 5 |
|
||||
| 83 | B | 11 | 5 |
|
||||
| 84 | C | 0 | 6 |
|
||||
| 85 | C♯/D♭ | 1 | 6 |
|
||||
| 86 | D | 2 | 6 |
|
||||
| 87 | D♯/E♭ | 3 | 6 |
|
||||
| 88 | E | 4 | 6 |
|
||||
| 89 | F | 5 | 6 |
|
||||
| 90 | F♯/G♭ | 6 | 6 |
|
||||
| 91 | G | 7 | 6 |
|
||||
| 92 | G♯/A♭ | 8 | 6 |
|
||||
| 93 | A | 9 | 6 |
|
||||
| 94 | A♯/B♭ | 10 | 6 |
|
||||
| 95 | B | 11 | 6 |
|
||||
| 96 | C | 0 | 7 |
|
||||
| 97 | C♯/D♭ | 1 | 7 |
|
||||
| 98 | D | 2 | 7 |
|
||||
| 99 | D♯/E♭ | 3 | 7 |
|
||||
| 100 | E | 4 | 7 |
|
||||
| 101 | F | 5 | 7 |
|
||||
| 102 | F♯/G♭ | 6 | 7 |
|
||||
| 103 | G | 7 | 7 |
|
||||
| 104 | G♯/A♭ | 8 | 7 |
|
||||
| 105 | A | 9 | 7 |
|
||||
| 106 | A♯/B♭ | 10 | 7 |
|
||||
| 107 | B | 11 | 7 |
|
||||
| 108 | C | 0 | 8 |
|
||||
| 109 | C♯/D♭ | 1 | 8 |
|
||||
| 110 | D | 2 | 8 |
|
||||
| 111 | D♯/E♭ | 3 | 8 |
|
||||
| 112 | E | 4 | 8 |
|
||||
| 113 | F | 5 | 8 |
|
||||
| 114 | F♯/G♭ | 6 | 8 |
|
||||
| 115 | G | 7 | 8 |
|
||||
| 116 | G♯/A♭ | 8 | 8 |
|
||||
| 117 | A | 9 | 8 |
|
||||
| 118 | A♯/B♭ | 10 | 8 |
|
||||
| 119 | B | 11 | 8 |
|
||||
| 120 | C | 0 | 9 |
|
||||
| 121 | C♯/D♭ | 1 | 9 |
|
||||
| 122 | D | 2 | 9 |
|
||||
| 123 | D♯/E♭ | 3 | 9 |
|
||||
| 124 | E | 4 | 9 |
|
||||
| 125 | F | 5 | 9 |
|
||||
| 126 | F♯/G♭ | 6 | 9 |
|
||||
| 127 | G | 7 | 9 |
|
||||
|
||||
| spelling | mod7 | mod12 |
|
||||
| -------- | ---- | ----- |
|
||||
| C | 0 | 0 |
|
||||
| C♯ | 0 | 1 |
|
||||
| D♭ | 1 | 1 |
|
||||
| D | 1 | 2 |
|
||||
| D♯ | 1 | 3 |
|
||||
| E♭ | 2 | 3 |
|
||||
| E | 2 | 4 |
|
||||
| F | 3 | 5 |
|
||||
| F♯ | 3 | 6 |
|
||||
| G♭ | 4 | 6 |
|
||||
| G | 4 | 7 |
|
||||
| G♯ | 4 | 8 |
|
||||
| A♭ | 5 | 8 |
|
||||
| A | 5 | 9 |
|
||||
| A♯ | 5 | 10 |
|
||||
| B♭ | 6 | 10 |
|
||||
| B | 6 | 11 |
|
||||
Reference in New Issue
Block a user