Files
zmVault/2025-12-19.md
T

137 lines
3.8 KiB
Markdown

---
id:
aliases: []
title: 2025-12-19
tags:
- authorship/original
- destiny/permanent
- status/draft
- type/daily
---
# 2025-12-19
## 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
}
```
## 2025-12-19 10:44
#occupational/takeoff
> [!quote] Art Baldwin 2025-12-19, in reference to Howard University East Towers (pp.)
> When using PVC slab box assemblies where substantial insulation
> (e.g mineral wool, spray foam) is to be applied,
> add extension rings to compensate for the thickness
## 2025-12-19 10:44
#occupational/takeoff
This week (2025w51)
William Bonn, as part of [[units-takeoff]] for Howard University East Towers,
used an `Area` "Typical - Unit Balconies" for `Phase` "UNIT - RESIDENTIAL" takeoff.
Our senior Joel Jansen approved of the method.
I'd like to use the method tentatively for takeoff strictly typical of all units
(e.g. master switches, MSDE's, etc.),
but there is potential for significant efficiency gains
in treating units like panelboards in [[switchgear-takeoff]]:
picking one unit type to be typical of many nearly identical types.