Generation
ci / checks (push) Successful in 1h11m24s

This commit is contained in:
khodowany
2026-09-26 15:51:20 -05:00
parent 1d5f3a9372
commit 11222a9f8c
11 changed files with 272 additions and 37 deletions
+4 -4
View File
@@ -25,8 +25,8 @@ class TabPosition(typing.NamedTuple):
midi: int
def within_fret_span(positions) -> bool:
fretted = [position.fret for position in positions if position.fret > 0]
return not fretted or max(fretted) - min(fretted) <= MAX_FRET_SPAN
frets = [position.fret for position in positions]
return not frets or max(frets) - min(frets) <= MAX_FRET_SPAN
def positions_for_pitch(midi: fractions.Fraction) -> tuple[TabPosition, ...]:
if midi.denominator != 1:
@@ -131,12 +131,12 @@ def movement(previous: tuple[TabPosition, ...], current: tuple[TabPosition, ...]
@functools.lru_cache(maxsize=4096)
def position_center(positions: tuple[TabPosition, ...]) -> tuple[int, int]:
frets = [p.fret for p in positions if p.fret] or [0]
frets = [p.fret for p in positions] or [0]
strings = [p.string_number for p in positions]
return min(frets) + max(frets), min(strings) + max(strings) - 2
def compactness(positions) -> int:
frets = [p.fret for p in positions if p.fret]
frets = [p.fret for p in positions]
return max(frets) - min(frets) if frets else 0
def extend_positions(held, pending):