--- 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.