3.8 KiB
id, aliases, title, tags
| id | aliases | title | tags | ||||
|---|---|---|---|---|---|---|---|
| 2025-12-19 |
|
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.
$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
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
}
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.