diff --git a/docs/notebooks/demo-transcribe.ipynb b/docs/notebooks/demo-transcribe.ipynb index 7fe8450..a592a8c 100644 --- a/docs/notebooks/demo-transcribe.ipynb +++ b/docs/notebooks/demo-transcribe.ipynb @@ -13,7 +13,7 @@ "\n", "When transcribing a human voice, which is a monophonic source with highly harmonic timbre for the pitched parts of speech/song, probably the most appropriate transcription method is based on the analysis of the fundamental frequency in combination with onset/offset prediction and other secondary features. \n", "\n", - "`maelzel.transcribe.FundamentalAnalysisMono` implements the skeleton of such an approach:\n", + "`maelzel.transcribe.FundamentalAnalysisMonophonic` implements the skeleton of such an approach:\n", "\n", "1. Onset detection\n", "2. The fundamental is sampled within each onset-offset timespan to include any pitch inflections. \n", @@ -140,7 +140,7 @@ } ], "source": [ - "analysis = transcribe.FundamentalAnalysisMono(s0.samples, \n", + "analysis = transcribe.FundamentalAnalysisMonophonic(s0.samples, \n", " sr=s0.sr, \n", " # Quantize the pitch to its nearest 1/8th tone\n", " semitoneQuantization=4, \n", @@ -412,7 +412,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 27, @@ -775,7 +775,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.4" + "version": "3.11.6" } }, "nbformat": 4, diff --git a/maelzel/_util.py b/maelzel/_util.py index fde6eda..36ac27e 100644 --- a/maelzel/_util.py +++ b/maelzel/_util.py @@ -9,6 +9,7 @@ from maelzel.common import F import functools import appdirs +import logging from typing import Callable, Sequence, TYPE_CHECKING @@ -98,6 +99,7 @@ def reprObj(obj, def fuzzymatch(query: str, choices: Sequence[str], limit=5 ) -> list[tuple[str, int]]: """ + Fuzzy matching Args: query: query to match @@ -114,10 +116,31 @@ def fuzzymatch(query: str, choices: Sequence[str], limit=5 return thefuzz.process.extract(query, choices=choices, limit=limit) -def checkChoice(name: str, s: str, choices: Sequence[str], threshold=8): +def checkChoice(name: str, s: str, choices: Sequence[str], maxSuggestions=12, throw=True, logger: logging.Logger=None + ) -> bool: + """ + Check than `name` is one of `choices` + + Args: + name: what are we checking, used for error messages + s: the value to check + choices: possible choices + maxSuggestions: possible choices shown when s does not match any + throw: throw an exception if no match + logger: if given, any error will be logged using this logger + + Returns: + True if a match was found, False otherwise + """ if s not in choices: - if len(choices) > threshold: - matches = fuzzymatch(s, choices, limit=20) + if logger: + logger.error(f"Invalud value '{s}' for {name}, possible choices: {sorted(choices)}") + + if not throw: + return False + + if len(choices) > 8: + matches = fuzzymatch(s, choices, limit=maxSuggestions) raise ValueError(f'Invalid value "{s}" for {name}, maybe you meant "{matches[0][0]}"? ' f'Other possible choices: {[m[0] for m in matches]}') else: @@ -161,8 +184,8 @@ def showF(f: F, maxdenom=1000) -> str: """ if f.denominator > maxdenom: - f2 = f.limit_denominator(maxdenom) - return "*%d/%d" % (f2.numerator, f2.denominator) + num, den = limitDenominator(f.numerator, f.denominator, maxden=maxdenom) + return f"~{num}/{den}" return "%d/%d" % (f.numerator, f.denominator) @@ -412,4 +435,36 @@ def intersectF(u1: F, u2: F, v1: F, v2: F) -> tuple[F, F] | None: """ x0 = u1 if u1 > v1 else v1 x1 = u2 if u2 < v2 else v2 - return (x0, x1) if x0 < x1 else None \ No newline at end of file + return (x0, x1) if x0 < x1 else None + + +def limitDenominator(num: int, den: int, maxden: int) -> tuple[int, int]: + """ + Copied from https://github.com/python/cpython/blob/main/Lib/fractions.py + """ + if maxden < 1: + raise ValueError("max_denominator should be at least 1") + if den <= maxden: + return num, den + + p0, q0, p1, q1 = 0, 1, 1, 0 + n, d = num, den + while True: + a = n // d + q2 = q0 + a * q1 + if q2 > maxden: + break + p0, q0, p1, q1 = p1, q1, p0 + a * p1, q2 + n, d = d, n - a * d + k = (maxden - q0) // q1 + + # Determine which of the candidates (p0+k*p1)/(q0+k*q1) and p1/q1 is + # closer to self. The distance between them is 1/(q1*(q0+k*q1)), while + # the distance from p1/q1 to self is d/(q1*self._denominator). So we + # need to compare 2*(q0+k*q1) with self._denominator/d. + if 2 * d * (q0 + k * q1) <= den: + return p1, q1 + else: + return p0 + k * p1, q0 + k * q1 + + diff --git a/maelzel/core/_tools.py b/maelzel/core/_tools.py index 3e145f5..9a9d34b 100644 --- a/maelzel/core/_tools.py +++ b/maelzel/core/_tools.py @@ -468,11 +468,14 @@ def parseNote(s: str, check=True) -> NoteProperties: if check: if isinstance(notename, list): for n in notename: + if n[-1] == '!': + n = n[:-1] if not pt.is_valid_notename(n, minpitch=0): raise ValueError(f"Invalid notename '{n}' while parsing '{s}'") else: - if not pt.is_valid_notename(notename): - raise ValueError(f"Invalid notename '{notename}' while parsing '{s}'") + n = notename if notename[-1] != '!' else notename[:-1] + if not pt.is_valid_notename(n): + raise ValueError(f"Invalid notename '{n}' while parsing '{s}'") return NoteProperties(notename=notename, dur=dur, keywords=properties, symbols=symbols, spanners=spanners) diff --git a/maelzel/core/builtinpresets.py b/maelzel/core/builtinpresets.py index 1e33fda..1e96dca 100644 --- a/maelzel/core/builtinpresets.py +++ b/maelzel/core/builtinpresets.py @@ -196,6 +196,14 @@ builtin=True ), + PresetDef( + '.bandnoise', + code=r''' + |kbw=0.9| + aout1 = beosc(kfreq, kbw) * a(kamp) + ''' + ), + PresetDef( '.sing', description="Simple vowel singing simulation", init=r""" diff --git a/maelzel/core/clip.py b/maelzel/core/clip.py index a20d6ba..b436d2a 100644 --- a/maelzel/core/clip.py +++ b/maelzel/core/clip.py @@ -205,7 +205,8 @@ def __init__(self, if offset is not None: offset = asF(offset) - super().__init__(offset=offset, dur=dur, label=label) + super().__init__(offset=offset, dur=F0, label=label) + self._calculateDuration() @property def sr(self) -> float: @@ -294,24 +295,6 @@ def durSecs(self) -> F: def pitchRange(self) -> tuple[float, float]: return (self.pitch, self.pitch) - def _durationInBeats(self, - absoffset: F | None = None, - scorestruct: ScoreStruct = None) -> F: - """ - Calculate the duration in beats without considering looping or explicit duration - - Args: - scorestruct: the score structure - - Returns: - the duration in quarternotes - """ - absoffset = absoffset if absoffset is not None else self.absOffset() - struct = scorestruct or self.scorestruct() or Workspace.getActive().scorestruct - starttime = struct.beatToTime(absoffset) - endbeat = struct.timeToBeat(starttime + self.durSecs()) - return endbeat - absoffset - @property def dur(self) -> F: "The duration of this Clip, in quarter notes" @@ -319,21 +302,32 @@ def dur(self) -> F: return self._explicitDur absoffset = self.absOffset() - struct = self.scorestruct() or Workspace.getActive().scorestruct + struct = self.scorestruct(resolve=True) - if self._dur is not None and self._durContext is not None: + if self._dur and self._durContext is not None: cachedstruct, cachedbeat = self._durContext if struct is cachedstruct and cachedbeat == absoffset: return self._dur - dur = self._durationInBeats(absoffset=absoffset, scorestruct=struct) + self._calculateDuration(absoffset=absoffset, struct=struct) + return self._dur + + def _calculateDuration(self, absoffset: F = None, struct: ScoreStruct = None + ) -> None: + if absoffset is None: + absoffset = self.absOffset() + if struct is None: + struct = self.scorestruct(resolve=True) + dur = struct.beatDelta(absoffset, absoffset + self.durSecs()) self._dur = dur self._durContext = (struct, absoffset) - return dur def __repr__(self): - return (f"Clip(source={self.source}, numChannels={self.numChannels}, sr={self.sr}, " - f"dur={self.dur}, sourcedursecs={_util.showT(self.sourceDurSecs)}secs)") + return (f"Clip(source={self.source}, " + f"numChannels={self.numChannels}, " + f"sr={self.sr}, " + f"dur={_util.showT(self.dur)}, " + f"sourcedur={_util.showT(self.sourceDurSecs)}s)") def _synthEvents(self, playargs: PlayArgs, diff --git a/maelzel/core/playback.py b/maelzel/core/playback.py index 4ed4c05..1d92326 100644 --- a/maelzel/core/playback.py +++ b/maelzel/core/playback.py @@ -251,7 +251,7 @@ class _SyncSessionHandler(SessionHandler): def __init__(self, renderer: SynchronizedContext): self.renderer = renderer - def sched(self, event: csoundengine.event.Event): + def schedEvent(self, event: csoundengine.event.Event): return self.renderer._schedSessionEvent(event) diff --git a/maelzel/mpqfractions.py b/maelzel/mpqfractions.py index 7ce9acb..675ee07 100644 --- a/maelzel/mpqfractions.py +++ b/maelzel/mpqfractions.py @@ -1,21 +1,22 @@ """ Rational number based on gmpy.mpq + +This module should NOT import from anything within maelzel """ from __future__ import annotations import numbers -f -from typing import TYPE_CHECKING -if TYPE_CHECKING: - from typing import * +from gmpy2 import mpq -from gmpy import mpq -_mpq_class = mpq(1).__class__ +numbers.Rational.register(mpq) -class Rat(numbers.Rational): +class Q(numbers.Rational): + """ + A Rational class with float like repr + """ def __init__(self, *args): - if isinstance(args[0], _mpq_class): + if isinstance(args[0], mpq): self._val = args[0] else: self._val = mpq(*args) @@ -31,79 +32,79 @@ def denominator(self): def __repr__(self) -> str: return f"{float(self._val):.8g}" - def __add__(self, other) -> Rat: - if isinstance(other, Rat): - return Rat(self._val + other._val) - return Rat(self._val + other) + def __add__(self, other) -> Q: + if isinstance(other, Q): + return Q(self._val + other._val) + return Q(self._val + other) - def __radd__(self, other) -> Rat: - if isinstance(other, Rat): - return Rat(self._val + other._val) - return Rat(self._val + other) + def __radd__(self, other) -> Q: + if isinstance(other, Q): + return Q(self._val + other._val) + return Q(self._val + other) - def __round__(self, ndigits: int=None) -> Rat: + def __round__(self, ndigits: int = None) -> Q: if ndigits is None: floor, remainder = divmod(self.numerator, self.denominator) - if remainder*2self.denominator: - return floor+1 + if remainder * 2 < self.denominator: + return Q(floor, 1) + elif remainder * 2 > self.denominator: + return Q(floor + 1, 1) # Deal with the half case: - elif floor%2 == 0: - return floor + elif floor % 2 == 0: + return Q(floor, 1) else: - return floor+1 + return Q(floor + 1, 1) shift = 10**abs(ndigits) if ndigits > 0: - return Rat(round(self*shift), shift) + return Q(round(self * shift), shift) else: - return Rat(round(self/shift)*shift) + return Q(round(self / shift) * shift) - def __sub__(self, other) -> Rat: - if isinstance(other, Rat): - return Rat(self._val - other._val) - return Rat(self._val - other) + def __sub__(self, other) -> Q: + if isinstance(other, Q): + return Q(self._val - other._val) + return Q(self._val - other) - def __rsub__(self, other) -> Rat: - if isinstance(other, Rat): - return Rat(other._val - self._val) - return Rat(other - self._val) + def __rsub__(self, other) -> Q: + if isinstance(other, Q): + return Q(other._val - self._val) + return Q(other - self._val) - def __mul__(self, other) -> Rat: - if isinstance(other, Rat): - return Rat(self._val * other._val) - return Rat(self._val * other) + def __mul__(self, other) -> Q: + if isinstance(other, Q): + return Q(self._val * other._val) + return Q(self._val * other) - def __div__(self, other) -> Rat: - if isinstance(other, Rat): - return Rat(self._val / other._val) - return Rat(self._val / other) + def __div__(self, other) -> Q: + if isinstance(other, Q): + return Q(self._val / other._val) + return Q(self._val / other) def __float__(self) -> float: return float(self._val) def __gt__(self, other) -> bool: - if isinstance(other, Rat): + if isinstance(other, Q): return self._val > other._val return self._val > other def __ge__(self, other) -> bool: - if isinstance(other, Rat): + if isinstance(other, Q): return self._val >= other._val return self._val >= other def __lt__(self, other) -> bool: - if isinstance(other, Rat): + if isinstance(other, Q): return self._val < other._val return self._val < other def __le__(self, other) -> bool: - if isinstance(other, Rat): + if isinstance(other, Q): return self._val <= other._val return self._val <= other def __eq__(self, other) -> bool: - if isinstance(other, Rat): + if isinstance(other, Q): return self._val == other._val return self._val == other @@ -113,67 +114,67 @@ def __ne__(self, other) -> bool: def __hash__(self) -> int: return hash(self._val) - def __abs__(self) -> Rat: - return Rat(abs(self._val)) + def __abs__(self) -> Q: + return Q(abs(self._val)) def __ceil__(self): a = self._val - return Rat(-(-a.numerator//a.denominator)) + return Q(-(-a.numerator // a.denominator)) def __floor__(self): a = self._val - return Rat(a.numerator // a.denominator) + return Q(a.numerator // a.denominator) def __floordiv__(self, other): - if isinstance(other, Rat): + if isinstance(other, Q): return self._val.__floordiv__(other._val) - return Rat(self._val.__floordiv__(other)) + return Q(self._val.__floordiv__(other)) - def __mod__(self, other) -> Rat: - if isinstance(other, Rat): + def __mod__(self, other) -> Q: + if isinstance(other, Q): return self._val.__mod__(other._val) return self._val.__mod__(other) - def __neg__(self) -> Rat: - return Rat(self._val.__neg__()) + def __neg__(self) -> Q: + return Q(self._val.__neg__()) - def __pow__(self, other) -> Rat: - if isinstance(other, Rat): + def __pow__(self, other) -> Q: + if isinstance(other, Q): return self._val.__pow__(other._val) return self._val.__pow__(other) - def __rfloordiv__(self, other) -> Rat: - if isinstance(other, Rat): + def __rfloordiv__(self, other) -> Q: + if isinstance(other, Q): return self._val.__rfloordiv__(other._val) return self._val.__rfloordiv__(other) - def __truediv__(self, other) -> Rat: - if isinstance(other, Rat): + def __truediv__(self, other) -> Q: + if isinstance(other, Q): return self._val.__truevid__(other._val) return self._val.__truediv__(other) - def __pos__(self) -> Rat: - return Rat(self._val.__pos__()) + def __pos__(self) -> Q: + return Q(self._val.__pos__()) - def __rmod__(self, other) -> Rat: - if isinstance(other, Rat): + def __rmod__(self, other) -> Q: + if isinstance(other, Q): return self._val.__rmod__(other._val) - return Rat(self._val.__rmod__(other)) + return Q(self._val.__rmod__(other)) - def __rmul__(self, other) -> Rat: - if isinstance(other, Rat): - return Rat(self._val.__rmul__(other._val)) - return Rat(self._val.__rmul__(other)) + def __rmul__(self, other) -> Q: + if isinstance(other, Q): + return Q(self._val.__rmul__(other._val)) + return Q(self._val.__rmul__(other)) - def __rpow__(self, other) -> Rat: - if isinstance(other, Rat): - return Rat(self._val.__rpow__(other._val)) - return Rat(self._val.__rpow__(other)) + def __rpow__(self, other) -> Q: + if isinstance(other, Q): + return Q(self._val.__rpow__(other._val)) + return Q(self._val.__rpow__(other)) - def __rtruediv__(self, other) -> Rat: - if isinstance(other, Rat): - return Rat(self._val.__rtruediv__(other._val)) - return Rat(self._val.__rtruediv__(other)) + def __rtruediv__(self, other) -> Q: + if isinstance(other, Q): + return Q(self._val.__rtruediv__(other._val)) + return Q(self._val.__rtruediv__(other)) def __trunc__(self) -> int: """trunc(a)""" @@ -184,39 +185,41 @@ def __trunc__(self) -> int: return a.numerator//a.denominator @classmethod - def from_float(cls, x: float) -> Rat: + def from_float(cls, x: float) -> Q: return cls(*x.as_integer_ratio()) - def limit_denominator(self, max_denominator=1000000) -> Rat: - return _limit_denom(self.numerator, self.denominator, max_denominator) + def limit_denominator(self, max_denominator=1000000) -> Q: + num, den = _limitDenom(self.numerator, self.denominator, maxden=max_denominator) + return Q(num, den) -def _limit_denom(num: int, den: int, maxden: int) -> Rat: +def _limitDenom(num: int, den: int, maxden: int) -> tuple[int, int]: """ Copied from https://github.com/python/cpython/blob/main/Lib/fractions.py """ if maxden < 1: raise ValueError("max_denominator should be at least 1") if den <= maxden: - return Rat(num, den) + return num, den p0, q0, p1, q1 = 0, 1, 1, 0 - - + n, d = num, den while True: - a = num//den - q2 = q0+a*q1 - if q2>maxden: + a = n // d + q2 = q0 + a * q1 + if q2 > maxden: break - p0, q0, p1, q1 = p1, q1, p0+a*p1, q2 - num, den = den, num-a*den - - k = (maxden-q0) // q1 - bound1 = Rat(p0+k*p1, q0+k*q1) - bound2 = Rat(p1, q1) - orig = Rat(num, den) - if abs(bound2 - orig) <= abs(bound1-orig): - return bound2 + p0, q0, p1, q1 = p1, q1, p0 + a * p1, q2 + n, d = d, n - a * d + k = (maxden - q0) // q1 + + # Determine which of the candidates (p0+k*p1)/(q0+k*q1) and p1/q1 is + # closer to self. The distance between them is 1/(q1*(q0+k*q1)), while + # the distance from p1/q1 to self is d/(q1*self._denominator). So we + # need to compare 2*(q0+k*q1) with self._denominator/d. + if 2 * d * (q0 + k * q1) <= den: + return p1, q1 else: - return bound1 + return p0 + k * p1, q0 + k * q1 + diff --git a/maelzel/music/timing.py b/maelzel/music/timing.py index a6802f6..fdf8f5f 100755 --- a/maelzel/music/timing.py +++ b/maelzel/music/timing.py @@ -1,5 +1,7 @@ from __future__ import annotations import warnings + +from maelzel import _util from maelzel.common import * from emlib import iterlib @@ -12,8 +14,7 @@ from numbers import Real as number_t - -def measureDuration(timesig: Union[str, timesig_t], tempo: number_t) -> F: +def measureDuration(timesig: str | timesig_t, tempo: number_t) -> F: """ calculate the duration of a given measure with the given tempo @@ -22,6 +23,10 @@ def measureDuration(timesig: Union[str, timesig_t], tempo: number_t) -> F: tempo: a tempo value corresponding to the denominator of the time signature + Returns: + the measure duration corresponding to the time signature and tempo + + Examples ~~~~~~~~ @@ -53,8 +58,8 @@ def measureDuration(timesig: Union[str, timesig_t], tempo: number_t) -> F: @returns_tuple("linear2framed framed2linear") -def framedTime(offsets: List[number_t], durations: List[number_t] - ) -> Tuple[bpf.BpfInterface, bpf.BpfInterface]: +def framedTime(offsets: list[number_t], durations: list[number_t] + ) -> tuple[bpf.BpfInterface, bpf.BpfInterface]: """ Returns two bpfs to convert a value between linear and framed coords, and viceversa @@ -121,40 +126,39 @@ def _force_sorted(xs): return out -def findNearestDuration(dur, possibleDurations: List[T], direction="<>") -> T: - """ - Args: - dur: a Dur or a float (will be converted to Dur via .fromfloat) - possibleDurations: a seq of Durs - direction: "<" -> find a dur from possible_durations which is lower than dur - ">" -> find a dur from possible_durations which is higher than dur - "<>" -> find the nearest dur in possibleDurations - - Example - ~~~~~~~ - - >>> possible_durations = [0.5, 0.75, 1] - >>> findNearestDuration(0.61, possibleDurations, "<>") - 0.5 - - """ - possdurs = sorted(possibleDurations, key=lambda d: float(d)) - inf = float("inf") - if dur < possibleDurations[0]: - return possibleDurations[0] if direction != "<" else None - elif dur > possibleDurations[-1]: - return possibleDurations[-1] if direction != ">" else None - if direction == "<": - nearest = sorted(possdurs, key=lambda d:abs(dur - d) if d < dur else inf)[0] - return nearest if nearest < inf else None - elif direction == ">": - nearest = sorted(possdurs, key=lambda d:abs(dur - d) if d > dur else inf)[0] - return nearest if nearest < inf else None - elif direction == "<>": - nearest = sorted(possdurs, key=lambda d:abs(dur - d))[0] - return nearest - else: - raise ValueError("direction should be one of '>', '<', or '<>'") +# def findNearestDuration(dur, possibleDurations: list[number_t], direction="<>") -> number_t: +# """ +# Args: +# dur: a Dur or a float (will be converted to Dur via .fromfloat) +# possibleDurations: a seq of Durs +# direction: "<" = find a dur from possibleDurations which is lower than dur; ">" = find a dur from +# possibleDurations which is higher than dur; "<>" = find the nearest dur in possibleDurations +# +# Example +# ~~~~~~~ +# +# >>> possible_durations = [0.5, 0.75, 1] +# >>> findNearestDuration(0.61, possibleDurations, "<>") +# 0.5 +# +# """ +# possdurs = sorted(possibleDurations, key=lambda d: float(d)) +# inf = float("inf") +# if dur < possibleDurations[0]: +# return possibleDurations[0] if direction != "<" else None +# elif dur > possibleDurations[-1]: +# return possibleDurations[-1] if direction != ">" else None +# if direction == "<": +# nearest = sorted(possdurs, key=lambda d:abs(dur - d) if d < dur else inf)[0] +# return nearest if nearest < inf else None +# elif direction == ">": +# nearest = sorted(possdurs, key=lambda d:abs(dur - d) if d > dur else inf)[0] +# return nearest if nearest < inf else None +# elif direction == "<>": +# nearest = sorted(possdurs, key=lambda d:abs(dur - d))[0] +# return nearest +# else: +# raise ValueError("direction should be one of '>', '<', or '<>'") DEFAULT_TEMPI = ( @@ -167,63 +171,61 @@ def tempo2beatdur(tempo): @returns_tuple("bestTempi resultingDurations numBeats") -def bestTempo(duration, possible_tempi=DEFAULT_TEMPI, - num_solutions=5, verbose=True): +def bestTempo(duration, possibleTempi=DEFAULT_TEMPI, + numSolutions=5, verbose=True): """ Find best tempi that fit the given duration """ remainings = [(duration % tempo2beatdur(tempo), i) - for i, tempo in enumerate(possible_tempi)] - best_tempi = [possible_tempi[i] for remaining, i in - sorted(remainings)[:num_solutions]] + for i, tempo in enumerate(possibleTempi)] + bestTempi = [possibleTempi[i] for remaining, i in + sorted(remainings)[:numSolutions]] numbeats = [int(duration / tempo2beatdur(tempo) + 0.4999) - for tempo in best_tempi] - resulting_durs = [tempo2beatdur(tempo) * n - for tempo, n in zip(best_tempi, numbeats)] + for tempo in bestTempi] + resultingDurs = [tempo2beatdur(tempo) * n for tempo, n in zip(bestTempi, numbeats)] if verbose: - for tempo, dur, n in zip(best_tempi, resulting_durs, numbeats): - print("Tempo: %f \t Resulting duration: %f \t Number of Beats: %d" % - (tempo, dur, n)) + for tempo, dur, n in zip(bestTempi, resultingDurs, numbeats): + print(f"Tempo: {tempo} \tResulting duration: {dur}\t Number of Beats: {n}") else: - return best_tempi, resulting_durs, numbeats + return bestTempi, resultingDurs, numbeats -def translateSubdivision(subdivision, new_tempo, original_tempo=60): - dur_subdiv = tempo2beatdur(original_tempo) / subdivision - new_beat = tempo2beatdur(new_tempo) - dur_in_new_tempo = dur_subdiv / new_beat - return dur_in_new_tempo +def translateSubdivision(subdivision, newTempo, originalTempo=60): + durSubdiv = tempo2beatdur(originalTempo) / subdivision + newBeat = tempo2beatdur(newTempo) + durInNewTempo = durSubdiv / newBeat + return durInNewTempo -def _ratio_to_dur(num: int, den: int) -> float: +def _ratio2dur(num: int, den: int) -> float: return int(num) * (4 / int(den)) def parseDur(dur, tempo=60): if '//' in dur: - d = _ratio_to_dur(*dur.split('//')) + d = _ratio2dur(*dur.split('//')) elif '/' in dur: - d = _ratio_to_dur(*dur.split('/')) + d = _ratio2dur(*dur.split('/')) else: d = int(dur) return d * (60 / tempo) -def possibleTimesigs(tempo: float) -> List[float]: +def possibleTimesigs(tempo: float) -> list[float]: """ Return possible timesignatures for a given tempo Time signatures are given in fractions where 2.5 means 5/8, 3.5 means 7/8 it is assumed that tempo refers to a quarter note """ - fractional_timesigs = [1.5, 2.5, 3.5, 4.5] - int_timesigs = [2., 3., 4., 5., 6., 7., 8., 9.] + fractionalTimesigs = [1.5, 2.5, 3.5, 4.5] + intTimesigs = [2., 3., 4., 5., 6., 7., 8., 9.] if tempo > 80: - return int_timesigs - return sorted(int_timesigs + fractional_timesigs) + return intTimesigs + return sorted(intTimesigs + fractionalTimesigs) -def quartersToTimesig(quarters:float, snap=True, mindiv=64) -> Tuple[int, int]: +def quartersToTimesig(quarters:float, snap=True, mindiv=64) -> tuple[int, int]: """ Transform a duration in quarters to a timesig @@ -253,8 +255,9 @@ def quartersToTimesig(quarters:float, snap=True, mindiv=64) -> Tuple[int, int]: quarters = round(quarters*2)/2 else: quarters = round(quarters) - mindenom = mindiv >> 2 - f = F.from_float(quarters).limit_denominator(mindenom) + maxden = mindiv >> 2 + f = F(quarters) + f = F(*_util.limitDenominator(f.numerator, f.denominator, maxden=maxden)) timesig0 = f.numerator, f.denominator*4 transforms = { (1, 4):(2, 8), @@ -266,8 +269,8 @@ def quartersToTimesig(quarters:float, snap=True, mindiv=64) -> Tuple[int, int]: def bestTimesig(duration: float, tempo=60, - timesigs: List[float]=None, - tolerance=0.25) -> List[float]: + timesigs: list[number:t] = None, + tolerance=0.25) -> list[float]: """ Best timesignature for the given duration @@ -298,10 +301,10 @@ def bestTimesig(duration: float, def bestTimesigWithCombinations(duration: float, tempo: float, - timesigs: List[float] = None, + timesigs: list[float] = None, maxcombinations=3, tolerance=0.25 - ) -> List[List[float]]: + ) -> list[list[float]]: """ Best timesignature to cover the given duration with multiple measures @@ -343,7 +346,7 @@ def objective(solution): return [] solutions.sort(key=objective) - def getvalues(solution) -> List[float]: + def getvalues(solution) -> list[float]: values = [value for name, value in sorted(solution.items()) if value > 0] values.sort() return values diff --git a/maelzel/partialtracking/partial.py b/maelzel/partialtracking/partial.py index 592f6b2..89b5fe0 100644 --- a/maelzel/partialtracking/partial.py +++ b/maelzel/partialtracking/partial.py @@ -279,6 +279,41 @@ def freqTransform(self, transform: Callable[[np.ndarray], np.ndarray]) -> Partia """ return self.withFreqs(transform(self.freqs)) + def scale(self, freqfactor=1., ampfactor=1., bwfactor=1., timefactor=1., timeref=0., + freqbias=0., timebias=0., + ) -> Self: + """ + Apply a scaling factor to one or multiple parameters + + Args: + freqfactor: frequency factor + ampfactor: amplitude factor + bwfactor: bandwidth factor + timefactor: time factor + timeref: time reference (this point remains invariant) + freqbias: an offset to add to all frequencies + timebias: an offset to add to all times + + Returns: + the modified Partial + """ + data = self.data.copy() + if freqfactor != 1.: + data[:, 1] *= freqfactor + if freqbias != 0: + data[:, 0] += freqbias + if ampfactor != 1.: + data[:, 2] *= ampfactor + if bwfactor != 1.: + data[:, 4] *= bwfactor + if timefactor != 1.: + data[:, 0] *= timefactor + data[:, 0] -= timeref * (timefactor + 1) + if timebias != 0.: + data[:, 0] += timebias * timefactor + + return Partial(data) + def withFreqs(self, freqs: np.ndarray) -> Partial: """ A copy of this Partial with new frequencies @@ -383,7 +418,7 @@ def __deepcopy__(self, memodict={}) -> Partial: return self.__copy__() def copy(self) -> Partial: - """Copy this Partial""" + """Copy this Partial. This performs a deep copy""" return self.__copy__() def crop(self, start: float, end: float) -> Partial | None: diff --git a/maelzel/partialtracking/plotting.py b/maelzel/partialtracking/plotting.py index fc996e0..780c09f 100644 --- a/maelzel/partialtracking/plotting.py +++ b/maelzel/partialtracking/plotting.py @@ -79,10 +79,8 @@ def plotmpl(spectrum: sp.Spectrum, if axes is None: fig = plt.figure(figsize=figsize) axes = fig.add_subplot(1, 1, 1) - # fig, axes = plt.subplots() else: fig = None - # bg = matplotlib.cm.inferno(0.005)[:3] bg = mpl.colormaps.get_cmap('inferno')(0.005)[:3] axes.set_facecolor(bg) axes.autoscale(False) @@ -112,7 +110,7 @@ def plotmpl(spectrum: sp.Spectrum, plt.sci(lc) axes.set_xlim(0, spectrum.end) if yscale == 'linear': - maxfreq = min(maxfreq, spectrum.maxFrequency()) + maxfreq = min(maxfreq, int(spectrum.maxFrequency())) axes.set_ylim(0, maxfreq) else: axes.set_yscale(yscale) diff --git a/maelzel/partialtracking/spectrum.py b/maelzel/partialtracking/spectrum.py index 36fe181..2995b18 100644 --- a/maelzel/partialtracking/spectrum.py +++ b/maelzel/partialtracking/spectrum.py @@ -208,14 +208,19 @@ def __copy__(self): return Spectrum(self.partials.copy(), indexTimeResolution=self._indexTimeResolution) def __deepcopy__(self, memodict={}): - return self.__copy__() + return Spectrum([p.copy() for p in self.partials], indexTimeResolution=self._indexTimeResolution) def __add__(self, other): if isinstance(other, Spectrum): return Spectrum(self.partials + other.partials) def copy(self) -> Spectrum: - """Copy this Spectrum""" + """ + Copy this Spectrum + + This performs a shallow copy since Partials are considered immutable + do ``Spectrum(self.partials.copy())`` + """ return self.__deepcopy__() @property @@ -404,6 +409,30 @@ def timeTransform(self, transform: Callable[[np.ndarray], np.ndarray]) -> Spectr partials = [p.timeTransform(transform) for p in self.partials] return Spectrum(partials) + def scale(self, freqfactor=1., ampfactor=1., bwfactor=1., timefactor=1., timeref=0., + freqbias=0., timebias=0., + ) -> Self: + """ + Apply a scaling factor to one or multiple parameters + + Args: + freqfactor: frequency factor + ampfactor: amplitude factor + bwfactor: bandwidth factor + timefactor: time factor + timeref: time reference (this point remains invariant) + freqbias: an offset to add to all frequencies + timebias: an offset to add to all times + + Returns: + the modified Spectrum + """ + partials = [p.scale(freqfactor=freqfactor, ampfactor=ampfactor, timefactor=timefactor, + bwfactor=bwfactor, + timeref=timeref, freqbias=freqbias, timebias=timebias) + for p in self.partials] + return Spectrum(partials) + def timeScale(self, factor: float, reference=0.) -> Spectrum: """ Scale the times of this Spectrum @@ -453,8 +482,13 @@ def freqTransform(self, transform: Callable[[np.ndarray], np.ndarray]) -> Spectr partials = [p.freqTransform(transform) for p in self] return self.clone(partials=partials) - def synthesize(self, sr=44100, start=0., end=0., fadetime: float | None = None, - gain=1. + def synthesize(self, + sr=44100, + start=0., + end=0., + fadetime: float | None = None, + gain=1., + speed=1., ) -> audiosample.Sample: """ Synthesize the partials as audio samples @@ -463,36 +497,81 @@ def synthesize(self, sr=44100, start=0., end=0., fadetime: float | None = None, sr: the samplerate start: start time of synthesis. end: end time of synthesis. + speed: playback speed (does not affect pitch) fadetime: any partial starting or ending at a non-zero amplitude will be faded in or out using this fadetime to avoid clicks. Use None to use a default gain: a gain factor applied to all amplitudes Returns: - the generated samples as a numpy array. + the generated samples as a :class:`maelzel.snd.audiosample.Sample` Example ~~~~~~~ >>> from maelzel.partialtracking import spectrum - >>> from sndfileio import * >>> samples, sr = sndread("path/to/soundfile.wav") >>> sp = spectrum.analyze(samples, sr=sr, resolution=50) >>> resynthesized = sp.synthesize() - >>> sndwrite("resynth.wav", samples, sr=sr) + >>> resynthesized.write("resynth.wav") """ + writable = False + if speed != 1: + if speed <= 0: + raise ValueError(f"Invalid speed: {speed}") + self = self.timeScale(1/speed) + writable = True + if end == 0: end = -1 + arrays = [p.data for p in self.partials] if gain != 1.: - arrays = [arr.copy() for arr in arrays] + if not writable: + arrays = [arr.copy() for arr in arrays] + writable = True for arr in arrays: arr[:, 2] *= gain + samples = lt.synthesize(arrays, samplerate=sr, start=start, end=end, fadetime=fadetime if fadetime is not None else -1) return audiosample.Sample(samples, sr=sr) + def rec(self, + outfile='?', + sr=44100, + start=0., + end=0., + fadetime: float | None = None, + speed=1., + gain=1., + ) -> audiosample.Sample: + """ + Synthesize and write this spectrum to outfile + + Args: + outfile: the soundfile to write to + sr: the samplerate + start: start time of synthesis. + end: end time of synthesis. + speed: playback speed (does not affect pitch) + fadetime: any partial starting or ending at a non-zero amplitude will + be faded in or out using this fadetime to avoid clicks. + Use None to use a default + gain: a gain factor applied to all amplitudes + + Returns: + the samples synthesized as a :class:`maelzel.snd.audiosample.Sample` + + .. seealso:: :meth:`Spectrum.synthesize`, :meth:`Spectrum.play` + """ + sample = self.synthesize(sr=sr, start=start, end=end, + fadetime=fadetime, gain=gain, + speed=speed) + sample.write(outfile=outfile) + return sample + def play(self, speed=1., freqscale=1., @@ -666,8 +745,8 @@ def filter(self, minpercentile=0., loudnessCompensation=True, numbands=5, - maxbandwidth=1., - minbandwidth=0., + maxbw=1., + minbw=0., banddistribution=0.7 ) -> tuple[Spectrum, Spectrum]: """ @@ -684,8 +763,8 @@ def filter(self, numbands: only relevant if minpercentile > 0. If greater than 1, the spectrum is first split into bands and the min. percentile is applied to each band. `banddistribution` determines the weighting of the bands - maxbandwidth: the maximum bandwidth (noisyness) for a partial to be selected - minbandwidth: the minimum bandwidth (noisyness) for a partial to be selected + maxbw: the maximum bandwidth (noisyness) for a partial to be selected + minbw: the minimum bandwidth (noisyness) for a partial to be selected banddistribution: the weight distribution of the bands. A value below 1 will compress the weight on the lower part of the spectrum, while a value higher than 1 will give more weight to the upper part of the @@ -720,8 +799,8 @@ def filter(self, minbreakpoints=minbreakpoints, minpercentile=minpercentile, loudnessCompensation=loudnessCompensation, - minbandwidth=minbandwidth, - maxbandwidth=maxbandwidth) + minbw=minbw, + maxbw=maxbw) allselected.extend(selected) allresidual.extend(residual) return Spectrum(allselected), Spectrum(allresidual) @@ -742,7 +821,7 @@ def filter(self, minfreq <= freq <= maxfreq and partial.duration >= mindur and len(partial) >= minbreakpoints and - minbandwidth <= partial.meanbw() < maxbandwidth and + minbw <= partial.meanbw() < maxbw and energyfunc(partial) >= minenergy): selected.append(partial) else: diff --git a/maelzel/scorestruct.py b/maelzel/scorestruct.py index 5a23ccd..bd61107 100644 --- a/maelzel/scorestruct.py +++ b/maelzel/scorestruct.py @@ -1998,8 +1998,8 @@ def measuresBetween(self, start: F, end: F) -> list[MeasureDef]: return [self.getMeasureDef(idx=i) for i in range(idx0, idx1)] def timeDelta(self, - start: num_t | tuple[int, num_t], - end: num_t | tuple[int, num_t] + start: beat_t, + end: beat_t ) -> F: """ Returns the elapsed time between two beats or score locations. diff --git a/maelzel/snd/audiosample.py b/maelzel/snd/audiosample.py index dbe7cfa..09e6f93 100755 --- a/maelzel/snd/audiosample.py +++ b/maelzel/snd/audiosample.py @@ -59,6 +59,7 @@ import emlib.numpytools as _nptools import emlib.misc +from maelzel import _util from maelzel.common import getLogger from maelzel.snd import _common from maelzel.snd import numpysnd as _npsnd @@ -71,6 +72,7 @@ from typing import Iterator, Sequence import matplotlib.pyplot as plt from maelzel.partialtracking import spectrum as _spectrum + from maelzel.transcribe import mono __all__ = ( 'Sample', @@ -86,16 +88,20 @@ 'reprhtml_audiotag_width': '100%', 'reprhtml_audiotag_maxwidth': '1200px', 'reprhtml_audiotag_embed_maxduration_seconds': 20, - 'reprhtml_audio_format': 'wav', + 'reprhtml_audio_format': 'mp3', 'csoundengine': _common.CSOUNDENGINE, } +_validator = { + 'reprhtml_audio_format::choices': ('wav', 'mp3', 'ogg') +} + -config = configdict.ConfigDict(name='maelzel.snd.audiosample', - default=_config) +config = configdict.ConfigDict(name='maelzel.snd.audiosample', default=_config, validator=_validator) _sessionTempfiles = [] +_tempFolder = "tmp" @_atexit.register @@ -106,6 +112,8 @@ def _cleanup(): shutil.rmtree(f) else: os.remove(f) + if os.path.exists(_tempFolder): + os.rmdir(_tempFolder) class PlaybackStream(abc.ABC): @@ -462,29 +470,31 @@ def play(self, logger.debug("Playback using portaudio (sounddevice)") return self._playPortaudio(loop=loop, chan=chan, gain=gain, speed=speed, skip=skip, dur=dur, block=block) - - # Use csoundengine - logger.debug("Playback using csoundengine") - if not engine: - engine = Sample.getEngine() - - tabnum = self._makeCsoundTable(engine) - if pan is None: - if self.numchannels == 1: - pan = 0 - else: - pan = 0.5 - - if dur == 0: - dur = -1 - synth = engine.session().playSample(tabnum, chan=chan, gain=gain, loop=loop, - skip=skip, dur=dur, delay=delay, pan=pan, - speed=speed) - if block: - import time - while synth.playing(): - time.sleep(0.02) - return _CsoundenginePlayback(synth=synth) + elif backend == 'csound': + # Use csoundengine + logger.debug("Playback using csoundengine") + if not engine: + engine = Sample.getEngine() + + tabnum = self._makeCsoundTable(engine) + if pan is None: + if self.numchannels == 1: + pan = 0 + else: + pan = 0.5 + + if dur == 0: + dur = -1 + synth = engine.session().playSample(tabnum, chan=chan, gain=gain, loop=loop, + skip=skip, dur=dur, delay=delay, pan=pan, + speed=speed) + if block: + import time + while synth.playing(): + time.sleep(0.02) + return _CsoundenginePlayback(synth=synth) + else: + raise ValueError(f"backend should be one of 'csound', 'portaudio', got {backend}") def asbpf(self) -> bpf4.BpfInterface: """ @@ -513,8 +523,17 @@ def plot(self, profile='auto') -> list[plt.Axes]: def _repr_html_(self) -> str: return self.reprHtml() + def show(self, withAudiotag=True, figsize=(24, 4), external=False, profile=''): + if external: + raise ValueError(f"External editor not supported") + if _util.pythonSessionType() == 'jupyter': + from IPython.display import display_html + display_html(self.reprHtml(withAudiotag=withAudiotag, figsize=figsize, profile=profile), raw=True) + else: + self.plot() + def reprHtml(self, withHeader=True, withAudiotag: bool = None, - figsize=(24, 4) + figsize=(24, 4), profile='' ) -> str: """ Returns an HTML representation of this Sample @@ -548,14 +567,15 @@ def reprHtml(self, withHeader=True, withAudiotag: bool = None, import emlib.img from . import plotting pngfile = tempfile.mktemp(suffix=".png", prefix="plot") - if self.duration < 20: - profile = 'highest' - elif self.duration < 40: - profile = 'high' - elif self.duration < 180: - profile = 'medium' - else: - profile = 'low' + if not profile: + if self.duration < 2: + profile = 'highest' + elif self.duration < 20: + profile = 'high' + elif self.duration < 180: + profile = 'medium' + else: + profile = 'low' plotting.plotWaveform(self.samples, self.sr, profile=profile, saveas=pngfile, figsize=figsize) img = emlib.img.htmlImgBase64(pngfile) # , maxwidth='800px') @@ -585,14 +605,16 @@ def reprHtml(self, withHeader=True, withAudiotag: bool = None, # ipython needs the samples in the shape (numchannels, samples) samples = self.samples.T audioobj = IPython.display.Audio(samples, rate=self.sr) - audiotag = audioobj._repr_html_() else: - os.makedirs('tmp', exist_ok=True) - outfile = tempfile.mktemp(dir="tmp", suffix='.mp3') - self.write(outfile, overflow='normalize') - _sessionTempfiles.append(outfile) + if self.path: + outfile = self.path + else: + os.makedirs('tmp', exist_ok=True) + outfile = tempfile.mktemp(dir=_tempFolder, suffix='.' + config['reprhtml_audio_format']) + self.write(outfile, overflow='normalize') + _sessionTempfiles.append(outfile) audioobj = IPython.display.Audio(outfile) - audiotag = audioobj._repr_html_() + audiotag = audioobj._repr_html_() audiotag = audiotag.replace('audio controls="controls"', fr'audio controls style="width: {audiotag_width}; max-width: {maxwidth};"') s += "
" + audiotag @@ -728,8 +750,13 @@ def openInEditor(self, wait=True, app=None, fmt='wav' return Sample(sndfile) return None - def write(self, outfile: str, encoding='', overflow='fail', - fmt='', bitrate=224, **metadata + def write(self, + outfile: str, + encoding='', + overflow='fail', + fmt='', + bitrate=224, + **metadata ) -> None: """ Write the samples to outfile @@ -789,8 +816,11 @@ def copy(self) -> Sample: return Sample(self.samples.copy(), self.sr) def _changed(self) -> None: + # clear cached values self._csoundTable = None self._reprHtml = '' + self._asbpf = None + self._f0 = None def __add__(self, other: float | Sample) -> Sample: if isinstance(other, (int, float)): @@ -974,6 +1004,12 @@ def fade(self, fadetime: float | tuple[float, float], shape: str = 'linear' def prependSilence(self, dur: float) -> Sample: """ Return a new Sample with silence of given dur at the beginning + + Args: + dur: duration of the silence to add at the beginning + + Returns: + new Sample """ silence = Sample.createSilent(dur, self.numchannels, self.sr) return concatenate([silence, self]) @@ -1032,7 +1068,7 @@ def normalize(self, headroom=0.) -> Sample: return self def peak(self) -> float: - """return the highest sample value in dB""" + """Highest sample value in dB""" return amp2db(np.abs(self.samples).max()) def peaksbpf(self, framedur=0.01, overlap=2) -> bpf4.core.Sampled: @@ -1067,14 +1103,15 @@ def reverse(self) -> Sample: def rmsbpf(self, dt=0.01, overlap=1) -> bpf4.core.Sampled: """ - Return a bpf representing the rms of this sample over time + Creates a BPF representing the rms of this sample over time .. seealso:: https://bpf4.readthedocs.io/en/latest/ """ return _npsnd.rmsbpf(self.samples, self.sr, dt=dt, overlap=overlap) def rms(self) -> float: - """ Returns the rms of the samples + """ + RMS of the samples This method returns the rms for **all** the frames at once. As such it is only of use for short samples. The use case is as follows: @@ -1090,14 +1127,18 @@ def rms(self) -> float: """ return _npsnd.rms(self.samples) - def mixdown(self) -> Sample: + def mixdown(self, enforceCopy=False) -> Sample: """ Return a new Sample with this sample downmixed to mono - Returns self if already mono + Args: + enforceCopy: always return a copy, even if self is already mono + + Returns: + a mono version of self. """ if self.numchannels == 1: - return self + return self if not enforceCopy else self.copy() return Sample(_npsnd.asmono(self.samples), sr=self.sr) def stripLeft(self, threshold=-120.0, margin=0.01, window=0.02) -> Sample: @@ -1216,6 +1257,48 @@ def contiguous(self) -> Sample: return self return Sample(np.ascontiguousarray(self.samples), self.sr) + def fundamentalAnalysis(self, + semitoneQuantization=0, + fftsize: int = None, + simplify=0.08, + overlap=8, + minFrequency=50, + minSilence=0.08, + onsetThreshold=0.05, + onsetOverlap=8, + ) -> mono.FundamentalAnalysisMonophonic: + """ + Analyze the fundamental of this sound, assuming it is a monophonic sound + + This is a wrapper around ``maelzel.transcribe.mono.FundamentalAnalysisMono`` and + is placed here for visibility and easy of use. To access all parameters, + use that dirctly + + Returns: + a :class:`maelzel.transcribe.mono.FundamentalAnalysisMono` + + Example + ~~~~~~~ + + >>> from maelzel.snd import audiosample + >>> samp = audiosample.Sample("sndfile.wav") + >>> f0analysis = samp.fundamentalAnalysis() + >>> notes = [(group.start(), group.duration(), group.meanfreq()) + ... for group in f0analysis.groups] + """ + from maelzel.transcribe import mono + analysis = mono.FundamentalAnalysisMonophonic(samples=self.samples, + sr=self.sr, + semitoneQuantization=semitoneQuantization, + fftSize=fftsize, + overlap=overlap, + simplify=simplify, + minFrequency=minFrequency, + minSilence=minSilence, + onsetThreshold=onsetThreshold, + onsetOverlap=onsetOverlap) + return analysis + def onsets(self, fftsize=2048, overlap=4, method: str = 'rosita', threshold: float = None, mingap=0.03) -> np.ndarray: """ @@ -1402,7 +1485,7 @@ def fundamentalFreq(self, time: float = None, dur=0.2, fftsize=2048, overlap=4, assert not math.isnan(avgfreq) return avgfreq - def fundamental(self, fftsize=2048, overlap=4 + def fundamental(self, fftsize=2048, overlap=4, unvoiced='negative' ) -> tuple[np.ndarray, np.ndarray]: """ Track the fundamental frequency of this sample @@ -1410,6 +1493,7 @@ def fundamental(self, fftsize=2048, overlap=4 Args: fftsize: the fft size to use overlap: number of overlaps + unvoiced: one of 'negative' or 'nan' Returns: a tuple (times, freqs), both numpy arrays. The frequency array will @@ -1420,6 +1504,7 @@ def fundamental(self, fftsize=2048, overlap=4 """ from maelzel.snd import vamptools samples = self.getChannel(0).samples + _util.checkChoice("unvoiced", unvoiced, choices=('negative', 'nan')) dt, freqs = vamptools.pyinSmoothPitch(samples, self.sr, fftSize=fftsize, stepSize=fftsize // overlap, @@ -1872,3 +1957,72 @@ def spectrumAt(samples: np.ndarray, pairs = [(float(bp[0]), float(bp[1])) for bp in breakpoints] pairs.sort(key=lambda pair: pair[0]) return pairs + + +def playSamples(samples: np.ndarray, + sr: int, + loop=False, + chan=1, + gain=1., + speed=1., + skip=0., + dur=0., + block=False) -> _PortaudioPlayback: + """ + Simple playback for samples + + If more complex playback is needed, use ``Sample(samples, sr).play()`` + + Args: + samples: the samples to play + sr: sample rate + loop: should playback be looped? + chan: first channel to play to. For stereo samples, output + is routed to consecutive channels starting with this channel + gain: a gain modifier + speed: the playback speed. A variation in speed will change + the pitch accordingly. + skip: start playback at a given point in time + dur: duration of playback. 0 indicates to play until the end of the sample + block: if True, block execution until playback is finished + Returns: + a :class:`PlaybackStream`. This can be used to stop playback + + See Also + ~~~~~~~~ + + * :meth:`Sample.getEngine` + * :meth:`Sample.setEngine` + + """ + import sounddevice + sr = int(sr * speed) + numchannels = _npsnd.numChannels(samples) + mapping = list(range(chan, numchannels + chan)) + if skip: + samples = samples[int(sr * skip):] + + if dur: + samples = samples[:int(sr*dur)] + + ctx = sounddevice._CallbackContext(loop=loop) + ctx.frames = ctx.check_data(data=samples, mapping=mapping, device=None) + + def callback(outdata, numframes, time, status, gain=gain): + assert len(outdata) == numframes + ctx.callback_enter(status, outdata) + if gain != 1: + outdata *= gain + ctx.write_outdata(outdata) + ctx.callback_exit() + + ctx.start_stream(sounddevice.OutputStream, + samplerate=sr, + channels=ctx.output_channels, + dtype=ctx.output_dtype, + callback=callback, + blocking=block, + prime_output_buffers_using_stream_callback=False) + + return _PortaudioPlayback(stream=ctx.stream) + diff --git a/maelzel/snd/deverb.py b/maelzel/snd/deverb.py new file mode 100644 index 0000000..971e6a5 --- /dev/null +++ b/maelzel/snd/deverb.py @@ -0,0 +1,192 @@ +import os +import numpy as np +from maelzel.snd import numpysnd +import sndfileio + + +_deverbInstr = r''' +|ionsettab, iaudiotab, isr, ichan=1, iwet=1, ifftsize=2048, iwinsize=2048, iwintype=0, ioverlap=8, ifreezemargin=0.1, imorphtime=0.2, ireduction=1, irelthreshold=0.01| +inumsamps = ftlen(iaudiotab) +idur = inumsamps / isr +p3 = min(p3, idur) +asig poscil3 1, isr/inumsamps, iaudiotab +ihopsize = ifftsize / ioverlap +fsig1 pvsanal asig, ifftsize, ihopsize, iwinsize, iwintype +i_overlap, i_numbins, i_winsize, i_format pvsinfo fsig1 + +kmags0[] init i_numbins +kfreqs0[] init i_numbins +kmags1[] init i_numbins +kmags2[] init i_numbins +kmags3[] init i_numbins +kmags4[] init i_numbins +kmagstest[] init i_numbins + +ionsets[] tab2array ionsettab +kindex = floor:k(bisect(eventtime(), ionsets)) +konset = changed(kindex) +kfreezetrig delayk konset, ifreezemargin +kframe pvs2array kmags0, kfreqs0, fsig1 + +if kfreezetrig > 0 then + kmags1 = kmags0 +endif + +if konset > 0 then + kmags3 = kmags2 + kmags2 = kmags1 +endif + +kenv = linenv(konset, 0, 0, 0.2, 1) +kmags4 = linlin(kenv, kmags3, kmags2) +kmagstest = kmags0 - kmags4 * ireduction +kmagstest limit kmagstest, 0, 1 +if sumarray(kmagstest) / sumarray(kmags0) > irelthreshold then + kmags0 = kmagstest +endif + +; kmags0 -= kmags4 * ireduction +fsig3 pvsfromarray kmags0, kfreqs0, ihopsize, iwinsize, 0 +aout pvsynth fsig3 +if iwet < 1 then + aout = aout * iwet + (1-iwet) * delay:a(asig, iwinsize/sr) +endif +outch ichan, aout +''' + + +def removeSustain(samples: np.ndarray, + sr: int, + fftsize=2048, + overlap=8, + wintype='hamming', + winsize: int = None, + onsets: list[float] | np.ndarray = None, + transientMargin=0.1, + morphTime=0.15, + reductionFactor=1.0, + backend='csound', + wet=1., + verbose=False, + outfile='', + onsetThreshold=0.07, + onsetFFTsize=2048, + onsetHopsize=256, + csoundKsmps=64, + realign=True, + tail=0. + ) -> np.ndarray: + """ + Remove the sustain of notes + + After each onset a snapshot of the audio is taken. Within the next + onset the previous snapshot is removed from the current audio, + reducing any resonance/sustain of the previous note into the new + note. This is helpful for piano sounds or in highly reverberated + recordings to help with fundamental tracking + + Args: + samples: audio samples + sr: sample rate + fftsize: fft size + overlap: overlap factor + wintype: window type, one of 'hamming', 'hann', kaiser' + winsize: window size, defaults to fftsize. If given, must be bigger than fftsize + onsets: if given, these times are used instead of calculating onsets here + transientMargin: a time margin after the onset when it is assumed that the signal + is stable, without the inhamonicity of attack transients + morphTime: morphing time between previous and new spectral template. + reductionFactor: how much to reduce. Normally a value between 0-1, but + negative values and values above 1 can also be used + backend: at the moment, only 'csound' + onsetThreshold: used when calculating onsets + wet: determines the mix of wet and dry signals. A value of 1. outputs only + the wet signal. In general the output signal will be delayed by winsize/sr + verbose: show debugging information + outfile: if given, the audio samples are written to this outfile + onsetFFTsize: size of the fft used for detecting offsets. Only valid if no onsets + are passed + onsetHopsize: hopsize used for detecting offsets (overlap = onsetFFTsize // onsetHopsize) + csoundKsmps: ksmps used for rendering when using the csound backend + realign: if True, remove the time delay introduced by the fft analysis + tail: extra render time at the end. + + Returns: + the modified samples + """ + if backend != 'csound': + raise ValeuError(f"At the moment only 'csound' is supported, got '{backend}'") + + wintypeNumber = { + 'hamming': 0, + 'hann': 1, + 'kaiser': 2 + }.get(wintype) + if wintypeNumber is None: + raise ValueError(f"Expected one of 'hamming', 'hann', 'kaiser', got '{wintype}'") + + if not isinstance(overlap, int) and overlap >= 1: + raise ValueError(f"Expected an integer, got {overlap}") + + if onsets is None: + from maelzel.snd import features + onsets, onsetStrength = features.onsets(samples=samples, + sr=sr, + winsize=onsetFFTsize, + hopsize=onsetHopsize, + threshold=onsetThreshold, + backtrack=True) + else: + onsets = np.asarray(onsets) + + if onsets[0] > 0.001: + onsets = np.insert(onsets, 0, 0.) + + from csoundengine.offline import Renderer + nchnls = numpysnd.numChannels(samples) + renderer = Renderer(sr=sr, nchnls=nchnls, ksmps=csoundKsmps) + channelTables = [] + for n in range(nchnls): + chan = numpysnd.getChannel(samples, n) + table = renderer.makeTable(chan, sr=sr) + channelTables.append(table) + + onsetTable = renderer.makeTable(data=onsets) + + renderer.defInstr('deverb', _deverbInstr) + sampledur = len(samples) / sr + if not winsize: + winsize = fftsize + elif winsize < fftsize: + raise ValueError(f"The window size should be at least as big as the fft size," + f"got {winsize=}, {fftsize=}") + for i, channeltab in enumerate(channelTables): + renderer.sched('deverb', 0, dur=sampledur, + args=dict(ionsettab=onsetTable.tabnum, + iaudiotab=channeltab.tabnum, + isr=sr, + ichan=i+1, + iwet=wet, + ifftsize=fftsize, + iwinsize=winsize, + iwintype=wintypeNumber, + ioverlap=overlap, + ifreezemargin=transientMargin, + imorphtime=morphTime, + ireduction=reductionFactor) + ) + job = renderer.render(outfile=outfile, verbose=verbose, tail=tail, wait=True) + if not os.path.exists(job.outfile): + raise RuntimeError(f"Could not generate output file '{job.outfile}', file not found. " + f"Args used: {job.process.args}") + outsamples, _ = sndfileio.sndread(job.outfile) + if realign: + outsamples = outsamples[fftsize:] + if outfile: + # We were asked to save to a file, so save the realigned audio + sndfileio.sndwrite(outfile, outsamples, sr=sr) + return outsamples + + + + diff --git a/maelzel/snd/features.py b/maelzel/snd/features.py index e6e8ce3..cb56006 100644 --- a/maelzel/snd/features.py +++ b/maelzel/snd/features.py @@ -152,6 +152,7 @@ def onsets(samples: np.ndarray, hopsize: samples to skip between windows threshold: the delta needed to trigger an onset mingap: min. time gap between onsets + backtrack: detected onsets are backtracked to the nearest energy minimum Returns: a tuple (onset array, onset strength bpf) diff --git a/maelzel/snd/filters.py b/maelzel/snd/filters.py new file mode 100644 index 0000000..3bb8408 --- /dev/null +++ b/maelzel/snd/filters.py @@ -0,0 +1,142 @@ +from __future__ import annotations +import os +import itertools +import numpy as np +import sndfileio +from maelzel.snd import numpysnd + + +_spectralFilterTable = r''' +| iaudiotab, isr, ipairstab, ichan=1, iwet=1, ifftsize=2048, + iwinsize=2048, iwintype=0, ioverlap=8 | +inumsamps = ftlen(iaudiotab) +p3 = min(p3, inumsamps / isr) +ihopsize = ifftsize / ioverlap +ifilterfreqs0[] tab2array ipairstab, 0, 0, 2 +ifiltergains0[] tab2array ipairstab, 1, 0, 2 + +asig poscil3 1, isr/inumsamps, iaudiotab + +fsig1 pvsanal asig, ifftsize, ihopsize, iwinsize, iwintype +i__overlap, inumbins, i__wsize, i__fmt pvsinfo fsig1 + +kmags0[] init inumbins +kfreqs0[] init inumbins +kfilteridxs[] init inumbins +kfiltergains[] init inumbins + +kframe pvs2array kmags0, kfreqs0, fsig1 +if changed(kframe) == 1 then + ; only do work when a new fft frame is available + kfilteridxs bisect kfreqs0, ifilterfreqs0 + kfiltergains interp1d kfilteridxs, ifiltergains0, "linear" + kmags0 *= kfiltergains + kmags0 limit kmags0, 0, 1 +endif +fsig2 pvsfromarray kmags0, kfreqs0, ihopsize, iwinsize, iwintype +aout pvsynth fsig2 +aout = aout * iwet + (1 - iwet) * delay:a(asig, iwinsize/sr) +outch ichan, aout +''' + + +def spectralFilter(samples: np.ndarray, + sr: int, + pairs: list[float] | tuple[list[float], list[float]], + fftsize=2048, + overlap=8, + winsize: int = None, + wintype='hamming', + realign=True, + wet=1., + tail=0., + outfile='', + verbose=False + ) -> np.ndarray: + """ + Filter the given audios by applying a spectral envelope + + Args: + samples: audio samples + sr: samplerate + pairs: either a flat list of pairs of the form [freq_0, gain_0, ..., freq_n, gain_n] + or a tuple (freqs, gains) + fftsize: fft size + overlap: overlap factor, hopsize = winsize // overlap + winsize: window size. If given, must be >= fftsize. If not given, + fftsize is used + wintype: window type, one of 'hamming', 'hann', kaiser' + wet: determines the mix of wet and dry signals. A value of 1. outputs only + the wet signal. In general the output signal will be delayed by winsize/sr + realign: shift the audio to compensate for the delay in the spectral + processing + tail: extra render time at the end. + outfile: if given, the audio samples are written to this outfile + + Returns: + the resulting samples + """ + sampledur = len(samples) / sr + if not winsize: + winsize = fftsize + elif winsize < fftsize: + raise ValueError(f"The window size should be at least as big as the fft size," + f"got {winsize=}, {fftsize=}") + + if isinstance(pairs, list) and isinstance(pairs[0], (int, float)): + # flat pairs + flatpairs = pairs + else: + assert isinstance(pairs, tuple) and len(pairs) == 2 + freqs, gains = pairs + flatpairs = list(itertools.chain(*zip(freqs, gains))) + + wintypeNumber = { + 'hamming': 0, + 'hann': 1, + 'kaiser': 2 + }.get(wintype) + + if wintypeNumber is None: + raise ValueError(f"Expected one of 'hamming', 'hann', 'kaiser', got '{wintype}'") + + if not isinstance(overlap, int) and overlap >= 1: + raise ValueError(f"Expected an integer, got {overlap}") + + nchnls = numpysnd.numChannels(samples) + + from csoundengine.offline import Renderer + renderer = Renderer(sr=sr, nchnls=nchnls, ksmps=64) + + channelTables = [] + for n in range(nchnls): + chan = numpysnd.getChannel(samples, n) + table = renderer.makeTable(chan, sr=sr) + channelTables.append(table) + + pairstable = renderer.makeTable(data=flatpairs) + + renderer.defInstr('spectralFilterTable', _spectralFilterTable) + for i, channeltab in enumerate(channelTables): + renderer.sched('spectralFilterTable', 0, dur=sampledur, + args=dict(iaudiotab=channeltab.tabnum, + isr=sr, + ipairstab=pairstable.tabnum, + ichan=i+1, + iwet=wet, + ifftsize=fftsize, + iwinsize=winsize, + ioverlap=overlap, + iwintype=wintypeNumber) + ) + job = renderer.render(outfile=outfile, verbose=verbose, tail=tail, wait=True) + if not os.path.exists(job.outfile): + raise RuntimeError(f"Could not generate output file '{job.outfile}', file not found. " + f"Args used: {job.process.args}") + outsamples, _ = sndfileio.sndread(job.outfile) + if realign: + outsamples = outsamples[fftsize:] + if outfile: + # We were asked to save to a file, so save the realigned audio + sndfileio.sndwrite(outfile, outsamples, sr=sr) + return outsamples diff --git a/maelzel/snd/freqestimate.py b/maelzel/snd/freqestimate.py index 09cc04b..abc58d2 100755 --- a/maelzel/snd/freqestimate.py +++ b/maelzel/snd/freqestimate.py @@ -212,7 +212,7 @@ def f0curvePyinVamp(sig: np.ndarray, sr: int, fftsize=2048, overlap=4, - lowAmpSuppression=0.1, + lowAmpSuppression=0.01, onsetSensitivity=0.7, pruneThreshold=0.1, threshDistr='beta15', @@ -227,7 +227,7 @@ def f0curvePyinVamp(sig: np.ndarray, sr: the sr fftsize: with sizes lower than 2048 the result might be unstable overlap: hop size as fftsize//overlap - lowAmpSuppression: supress low amplitude pitch estimates + lowAmpSuppression: supress low amplitude pitch estimates, 0.01=-40dB, 0.001=-60dB onsetSensitivity: onset sensitivity pruneThreshold: totalDuration pruning threshold threshDistr: yin threshold distribution (see table below) - One of diff --git a/maelzel/snd/generate.py b/maelzel/snd/generate.py new file mode 100644 index 0000000..1e03184 --- /dev/null +++ b/maelzel/snd/generate.py @@ -0,0 +1,142 @@ +from __future__ import annotations +import numpy as np +from maelzel.snd import numpysnd as npsnd + + +def whiteNoise(dur: float, sr=44100, amp=1.) -> np.ndarray: + """ + Uniformly distributed noise in the range (-1; 1), also called white noise + + Args: + dur: duration in seconds + sr: sample rate + + Returns: + a numpy array holding one channel of samples + """ + numsamples = int(dur * sr) + arr = np.random.random(size=numsamples) + arr *= 2. * amp + arr -= 1. + return arr + + +def _noise_psd(N, psd=lambda f: 1): + X_white = np.fft.rfft(np.random.randn(N)); + S = psd(np.fft.rfftfreq(N)) + # Normalize S + S = S / np.sqrt(np.mean(S ** 2)) + X_shaped = X_white * S; + return np.fft.irfft(X_shaped) + + +def pinkNoiseFFT(dur: float, sr=44100, peaknorm=True) -> np.ndarray: + """ + Generate pink noise + + Args: + dur: duration in seconds + sr: samplerate + peaknorm: apply max. peak normalization to keep samples between (-1, 1) + + Returns: + a numpy array holding the audio samples + """ + numsamps = int(dur * sr) + white = np.fft.rfft(np.random.randn(numsamps)) + freqs = np.fft.rfftfreq(numsamps) + S = 1/np.where(freqs == 0, float('inf'), np.sqrt(freqs)) + S = S / np.sqrt(np.mean(S**2)) + shaped = white * S + out = np.fft.irfft(shaped) + if peaknorm: + out *= npsnd.normalizationRatio(out, maxdb=0) + return out + + +def pinkNoise(dur: float, sr=44100, state: np.random.RandomState = None, + peaknorm=True + ) -> np.ndarray: + """ + Pink noise + + Pink noise has equal power in bands that are proportionally wide. + Power density decreases with 3 dB per octave. + + via: https://github.com/python-acoustics/python-acoustics/blob/master/acoustics/generator.py + + We don't use the library directly since it depends on pandas, which itself + depends on numba, which we try to avoid. This might change in the future + + Args: + dur: duration + sr: samplerate + state: State of PRNG. + peaknorm: apply max. peak normalization to keep samples between (-1, 1) + + """ + # This method uses the filter with the following coefficients. + # b = np.array([0.049922035, -0.095993537, 0.050612699, -0.004408786]) + # a = np.array([1, -2.494956002, 2.017265875, -0.522189400]) + # return lfilter(B, A, np.random.randn(N)) + # Another way would be using the FFT + # x = np.random.randn(N) + # X = rfft(x) / N + N = int(dur * sr) + state = np.random.RandomState() if state is None else state + uneven = N % 2 + X = state.randn(N // 2 + 1 + uneven) + 1j * state.randn(N // 2 + 1 + uneven) + S = np.sqrt(np.arange(len(X)) + 1.) # +1 to avoid divide by zero + y = (np.fft.irfft(X / S)).real + if uneven: + y = y[:-1] + out = _normalize(y) + if peaknorm: + out *= npsnd.normalizationRatio(out, maxdb=0) + return out + + +def _normalize(y, x=None): + """ + Normalize power in y to a (standard normal) white noise signal. + + Optionally normalize to power in signal `x`. + + #The mean power of a Gaussian with :math:`\\mu=0` and :math:`\\sigma=1` is 1. + """ + # return y * np.sqrt( (np.abs(x)**2.0).mean() / (np.abs(y)**2.0).mean() ) + if x is not None: + x = _ms(x) + else: + x = 1.0 + return y * np.sqrt(x / _ms(y)) + # return y * np.sqrt(1.0 / (np.abs(y)**2.0).mean()) + + +def _ms(x): + """Mean value of signal `x` squared. + """ + return (np.abs(x)**2.0).mean() + + +def gaussianNoise(dur: float, sr=44100, siderange=1, mu=0, clip=True + ) -> np.ndarray: + """ + Gaussian distribution noise + + Args: + dur: duration in seconds + sr: sample rate + siderange: 99.9% of samples will fall between the range (mu-siderange, mu+siderange) + mu: centre of the distribution + clip: if True, clip any value outside the range + + Returns: + a numpy array holding one channel of samples + + """ + sigma = siderange / 3.83 + s = np.random.normal(mu, sigma, size=int(dur * sr)) + if clip: + s.clip(mu-siderange, mu+siderange, out=s) + return s diff --git a/maelzel/snd/numpysnd.py b/maelzel/snd/numpysnd.py index 22ec424..24ee7b0 100644 --- a/maelzel/snd/numpysnd.py +++ b/maelzel/snd/numpysnd.py @@ -38,7 +38,7 @@ def rms(arr: np.ndarray) -> float: return sqrt(np.sum(arr) / len(arr)) -def rmsbpf(samples: np.ndarray, sr:int, dt=0.01, overlap=1) -> bpf4.core.Sampled: +def rmsbpf(samples: np.ndarray, sr: int, dt=0.01, overlap=1) -> bpf4.core.Sampled: """ Return a bpf representing the rms of this sample as a function of time @@ -49,7 +49,7 @@ def rmsbpf(samples: np.ndarray, sr:int, dt=0.01, overlap=1) -> bpf4.core.Sampled overlap: overlap of analysis frames Returns: - a samples bpf + a Sampled bpf mapping time to rms """ s = samples period = int(sr * dt + 0.5) @@ -310,6 +310,29 @@ def _lastSound(samples: np.ndarray, samplerate:int, threshold:float=-120, resolu return 0 +def normalizeByMaxPeak(samples: np.ndarray, maxdb=0., out: np.ndarray = None + ) -> np.ndarray: + """ + Normalize samples by maximum peak + + Args: + samples: the samples to normalize + maxdb: maximum peak in dB + out: where to place the results. Can be the input samples + itself, it which case the operation is performed in place + + Returns: + the normalized samples + + """ + ratio = normalizationRatio(samples, maxdb=maxdb) + if out is not None: + out *= ratio + return out + else: + return samples * ratio + + def normalizationRatio(samples: np.ndarray, maxdb=0.) -> float: """ Return the factor needed to apply the given normalization. diff --git a/maelzel/snd/plotting.py b/maelzel/snd/plotting.py index 2d78c0b..82166f0 100755 --- a/maelzel/snd/plotting.py +++ b/maelzel/snd/plotting.py @@ -99,8 +99,10 @@ def plotPowerSpectrum(samples: np.ndarray, samplerate: int, framesize=2048, - window: Union[str, tuple[str, float]] = ('kaiser', 9) - ) -> None: + window: Union[str, tuple[str, float]] = ('kaiser', 9), + axes: plt.Axes = None, + figsize=(24, 4) + ) -> plt.Axes: """ Plot the power spectrum of a sound @@ -111,12 +113,17 @@ def plotPowerSpectrum(samples: np.ndarray, window: As passed to scipy.signal.get_window. One of "blackman", "hamming", "hann", "bartlett", "flattop", "parzen", "bohman", "blackmanharris", "nuttall", "barthann", "kaiser" (needs beta), "gaussian" (needs standard deviation) + axes: the axes to plot to """ + if axes is None: + f: plt.Figure = plt.figure(figsize=figsize) + axes:plt.Axes = f.add_subplot(1, 1, 1) + from scipy import signal w = signal.get_window(window, framesize) - return plt.psd(samples, framesize, samplerate, window=lambda s, w=w: s*w) - + axes.psd(samples, NFFT=framesize, Fs=samplerate, window=lambda s, w=w: s*w) + return axes def _envelope(x, hop): @@ -320,10 +327,10 @@ def plotWaveform(samples, return fig.axes elif profile == 'low': maxpoints, maxsr = 600, 20 - elif profile == 'medium': + elif profile == 'medium' or profile == 'middle': maxpoints, maxsr = 1200, 40 else: - raise ValueError("preset should be one of 'low', 'medium' or 'highest'") + raise ValueError("preset should be one of 'low', 'medium', 'high' or 'highest'") targetsr = samplerate numch = numChannels(samples) diff --git a/maelzel/snd/vamptools.py b/maelzel/snd/vamptools.py index b1b916a..c292673 100644 --- a/maelzel/snd/vamptools.py +++ b/maelzel/snd/vamptools.py @@ -10,13 +10,20 @@ """ from __future__ import annotations +from dataclasses import dataclass import numpy as np +from math import isnan import numpyx +from emlib import iterlib import sys import os +import bpf4 +import pitchtools as pt from typing import TYPE_CHECKING from maelzel._util import getPlatform from maelzel.common import getLogger +from maelzel.snd import numpysnd +from maelzel import histogram import vamp import vamp.frames @@ -138,7 +145,7 @@ def pyinNotes(samples: np.ndarray, sr: int, fftSize=2048, stepSize=256, - lowAmpSuppression=0.05, + lowAmpSuppression=0.01, threshDistr="beta15", onsetSensitivity=0.9, pruneThresh=0.1 @@ -149,14 +156,15 @@ def pyinNotes(samples: np.ndarray, pYIN vamp plugin: https://code.soundsoftware.ac.uk/projects/pyin/files Args: - samples (np.ndarray): the sample data (mono) - sr (int): the sample-rate - fftSize (int): fft size - stepSize (int): hop size in samples - lowAmpSuppression (float): supress low amplitude pitch estimates - threshDistr (str): yin threshold distribution. See table 1 below - onsetSensitivity (float): onset sensitivity - pruneThresh (float): totalDuration pruning threshold + samples: the sample data (mono) + sr: the sample-rate + fftSize: fft size + stepSize: hop size in samples + lowAmpSuppression: supress low amplitude pitch estimates. + As a reference, 0.01 = -40dB, 0.001 = -60dB + threshDistr: yin threshold distribution. See table 1 below + onsetSensitivity: onset sensitivity + pruneThresh: totalDuration pruning threshold Returns: a list of Notes, where each Note has the attributes .timestamp, .frequency, .totalDuration @@ -213,11 +221,210 @@ def pyinNotes(samples: np.ndarray, return notes +@dataclass +class PyinResult: + voicedProbabilityCurve: bpf4.core.Linear + f0candidates: list[tuple[float, list[float], list[float]]] + """A list of tuples (timestamp, f0candidates, f0candidateprobability)""" + + smoothPitchCurve: bpf4.core.Linear + """Smooth pitch curve""" + + smoothPitchCurveNan: bpf4.core.Linear + """Like smoothPitchCurve, but unvoiced sections are marked with 'nan' values""" + + f0curve: bpf4.core.Linear + """F0 curve resulting from picking the best f0 candidate over time. nan where there is no candidate""" + + voicedProbabilityHistogram: histogram.Histogram + + rmsCurve: bpf4.BpfInterface + """bpf mapping rms in time""" + + rmsDbHistogram: histogram.Histogram + """rms histogram in dB, maps db values to their percentile""" + + numCandidates: bpf4.BpfInterface + + def __repr__(self): + def _(cs, maxnum=4, fmt='.6g'): + if cs is None: + return 'None' + if len(cs) > maxnum: + end = ', …]' + cs = cs[:maxnum] + else: + end = ']' + return '[' + ', '.join(format(x, fmt) for x in cs) + end + maxframes = 10 + if len(self.f0candidates) > maxframes: + end = ', ...]' + else: + end = ']' + frames = [f"({t:.3f}s, {_(c, fmt='.1f')}, {_(p, fmt='.4f')})" for t, c, p in self.f0candidates[:maxframes]] + framestr = '[' + ', '.join(frames) + end + return (f"PyinResult(voicedProbabilityCurve={self.voicedProbabilityCurve}, smoothPitchCurve={self.smoothPitchCurve}, " + f"f0curve={self.f0curve}, f0candidates={framestr}") + + +def pyin(samples: np.ndarray, + sr: int, + fftSize=2048, + overlap=8, + lowAmpSuppressionDb=-60, + lowAmpSuppressionPercentile=0.01, + threshDistr='beta15', + onsetSensitivity=0.7, + pruneThresh=0.1, + voicedThresholdPercentile=0.1, + preciseTime=False, + minRmsPercentile=0.05, + rmsPeriod=0.020, + maxRelativeSkew=0.15 + ) -> PyinResult: + """ + Pyin analysis, enhanced with some extra features + + Args: + samples: the samples to analyze + sr: samplerate + fftSize: FFT size + overlap: determines hopsize = fftSize // overlap + lowAmpSuppressionDb: low amplitude suppression in dB + threshDistr: + onsetSensitivity: + pruneThresh: + voicedThresholdPercentile: + preciseTime: + minRmsPercentile: + rmsPeriod: + maxRelativeSkew: + + Returns: + + """ + # r = vamptools.pyin(samples2, sr, overlap=8, voicedThresholdPercentile=0.1, onsetSensitivity=0.1, threshDistr='beta15', lowAmpSuppression=0.01, preciseTime=True, rmsPeriod=0.020, minRmsPercentile=0.002) + if fftSize < 2048: + raise ValueError("The pyin vamp plugin does not accept fft size less than 2048") + + if len(samples.shape) > 1: + samples = samples[:,0] + threshdistridx = _pyinThresholdDistrs.get(threshDistr) + if threshdistridx is None: + raise ValueError(f"Unknown threshold distribution: {threshDistr}. " + f"It must be one of {', '.join(_pyinThresholdDistrs.keys())}") + + output_unvoiced_idx = 2 # 0=no, 1=yes, 2=yes, with negative freq + + step_size = fftSize // overlap + kwargs = {'step_size': step_size, "block_size": fftSize} + plugin_key = "pyin:pyin" + params = { + 'lowampsuppression': pt.db2amp(lowAmpSuppressionDb), + 'onsetsensitivity': onsetSensitivity, + 'prunethresh': pruneThresh, + 'threshdistr': threshdistridx, + 'outputunvoiced': output_unvoiced_idx, + 'precisetime': int(preciseTime) + } + plugin, step_size, block_size = vamp.load.load_and_configure(samples, sr, plugin_key, + params, **kwargs) + + ff = vamp.frames.frames_from_array(samples, step_size, block_size) + outputs = ['smoothedpitchtrack', 'voicedprob', 'f0candidates', 'f0probs'] + results = list(vamp.process.process_with_initialised_plugin(ff, + sample_rate=sr, + step_size=step_size, + plugin=plugin, + outputs=outputs)) + + vps = [d['voicedprob'] for d in results if 'voicedprob' in d] + pts = [d['smoothedpitchtrack'] for d in results if 'smoothedpitchtrack' in d] + f0s = [d['f0candidates'] for d in results if 'f0candidates' in d] + f0probs = [d['f0probs'] for d in results if 'f0probs' in d] + + vptimes = [vp['timestamp'].to_float() for vp in vps] + vpvalues = [float(vp['values'][0]) for vp in vps] + vpcurve = bpf4.core.Linear(vptimes, vpvalues) + voicedProbabilityHistogram = histogram.Histogram(values=vpvalues) + + voicedThreshold = voicedProbabilityHistogram.percentileToValue(voicedThresholdPercentile) + + smoothpitchtimes = [frame['timestamp'].to_float() for frame in pts] + for t0, t1 in iterlib.pairwise(smoothpitchtimes): + if t1 < t0: + print(f"times not sorted", t0, t1) + elif t0 == t1: + print(f"Duplicate times: {t0=}, {t1=}") + + smoothpitchfreqs = [float(frame['values'][0]) for frame in pts] + smoothpitch = bpf4.core.Linear(smoothpitchtimes, smoothpitchfreqs) + nanfreqs = [] + nantimes = [] + for t, f in zip(smoothpitchtimes, smoothpitchfreqs): + if f < 0: + if not nanfreqs or (nanfreqs and not isnan(nanfreqs[-1])): + nantimes.append(t) + nanfreqs.append(float('nan')) + else: + nantimes.append(t) + nanfreqs.append(f) + + smoothpitchnan = bpf4.core.Linear(nantimes, nanfreqs) + + rmscurve0 = numpysnd.rmsbpf(samples, sr=sr, dt=rmsPeriod, overlap=2) + rmscurve = bpf4.util.smoothen(rmscurve0, window=rmsPeriod*4) + rmsdbhist = histogram.Histogram(rmscurve0.amp2db()[::rmsPeriod].ys) + silencermsdb = rmsdbhist.percentileToValue(minRmsPercentile) + silencerms = pt.db2amp(silencermsdb) + # silencerms = rmshist.percentileToValue(minRmsPercentile) + f0candidates = [] + for f0sframe, f0probsframe in zip(f0s, f0probs): + t = f0sframe['timestamp'].to_float() + assert t == f0probsframe['timestamp'].to_float() + values = f0sframe.get('values') + voiced = vpcurve(t) + smoothfreq = smoothpitch(t) + if values is not None and voiced > voicedThreshold and smoothfreq > 0 and rmscurve(t) >= silencerms: + row = (t, values, f0probsframe['values']) + f0candidates.append(row) + else: + f0candidates.append((t, None, None)) + + numCandidates = bpf4.core.NoInterpol(*zip(*[(t, len(candidates) if candidates is not None else 0) + for t, candidates, probs in f0candidates])) + + f0pairs: list[tuple[float, float]] = [] + for t, candidates, probabilities in f0candidates: + if candidates is not None: + best = candidates[0] + f0smooth = smoothpitch(t) + if f0pairs and f0smooth > 0 and abs(best - f0smooth) / f0pairs[-1][1] > maxRelativeSkew: + best = f0smooth + f0pairs.append((t, best)) + else: + if f0pairs and f0pairs[-1][1] > 0: + # Only add a nan if the last breakpoint was not a nan + f0pairs.append((t, float('nan'))) + + f0bestcurve = bpf4.core.Linear(*zip(*f0pairs)) + + return PyinResult(voicedProbabilityCurve=vpcurve, + f0candidates=f0candidates, + smoothPitchCurve=smoothpitch, + f0curve=f0bestcurve, + smoothPitchCurveNan=smoothpitchnan, + voicedProbabilityHistogram=voicedProbabilityHistogram, + rmsCurve=rmscurve, + rmsDbHistogram=rmsdbhist, + numCandidates=numCandidates) + + def pyinPitchTrack(samples: np.ndarray, sr: int, fftSize=2048, overlap=8, - lowAmpSuppression=0.1, + lowAmpSuppression=0.01, threshDistr="beta15", onsetSensitivity=0.7, pruneThresh=0.1, @@ -234,10 +441,10 @@ def pyinPitchTrack(samples: np.ndarray, Args: samples: the audio samples (mono). If a multichannel sample is given, only the first channel will be processed - sr (int): sample rate + sr: sample rate fftSize: fft size (vamp names this "block_size"). Must be >= 2048 overlap: determines the hop size (hop size = fftSize // overlap) - lowAmpSuppression: supress low amplitude pitch estimates + lowAmpSuppression: supress low amplitude pitch estimates. 0.01=-40dB, 0.001=-60dB threshDistr: yin threshold distribution. See table 1 below onsetSensitivity: onset sensitivity pruneThresh: totalDuration pruning threshold @@ -329,7 +536,7 @@ def pyinPitchTrack(samples: np.ndarray, params, **kwargs) ff = vamp.frames.frames_from_array(samples, step_size, block_size) - outputs = ['smoothedpitchtrack', 'voicedprob', 'f0candidates'] + outputs = ['smoothedpitchtrack', 'voicedprob', 'f0candidates', 'f0probs'] results = list(vamp.process.process_with_initialised_plugin(ff, sample_rate=sr, step_size=step_size, @@ -370,10 +577,10 @@ def pyinSmoothPitch(samples: np.ndarray, sr:int, fftSize=2048, stepSize=256, - lowAmpSuppression=0.1, + lowAmpSuppression=0.01, threshDistr="beta15", onsetSensitivity=0.7, - outputUnvoiced=True, + outputUnvoiced='nan', pruneThresh=0.1) -> tuple[float, np.ndarray]: """ Fundamental frequency analysis @@ -384,7 +591,8 @@ def pyinSmoothPitch(samples: np.ndarray, sr (int): sample rate fftSize (int): fft size (vamp names this "block_size") stepSize (int): hop size in samples - lowAmpSuppression (float): supress low amplitude pitch estimates + lowAmpSuppression (float): supress low amplitude pitch estimates. + As a reference, 0.01 = -40dB, 0.001 = -60dB threshDistr (str): yin threshold distribution. See table 1 below onsetSensitivity (float): onset sensitivity pruneThresh (float): totalDuration pruning threshold diff --git a/maelzel/transcribe/__init__.py b/maelzel/transcribe/__init__.py index 0cb5de8..b5d6e6d 100644 --- a/maelzel/transcribe/__init__.py +++ b/maelzel/transcribe/__init__.py @@ -1,5 +1,5 @@ from .breakpoint import * -from .mono import FundamentalAnalysisMono +from .mono import FundamentalAnalysisMonophonic from .options import TranscriptionOptions diff --git a/maelzel/transcribe/breakpoint.py b/maelzel/transcribe/breakpoint.py index c70fa5d..a05e191 100644 --- a/maelzel/transcribe/breakpoint.py +++ b/maelzel/transcribe/breakpoint.py @@ -1,11 +1,18 @@ from __future__ import annotations -from dataclasses import dataclass, fields +from dataclasses import dataclass, fields, astuple import pitchtools as pt -from typing import Callable +from emlib import iterlib +from typing import Callable, Iterator, TYPE_CHECKING +import numpy as np + + +if TYPE_CHECKING: + import matplotlib.pyplot as plt __all__ = ( 'Breakpoint', + 'BreakpointGroup', 'simplifyBreakpoints', 'simplifyBreakpointsByDensity', ) @@ -48,8 +55,9 @@ class Breakpoint: def __post_init__(self): assert self.freq >= 0 - def fields(self) -> list[str]: - return [field.name for field in fields(self)] + @classmethod + def fields(cls) -> list[str]: + return [field.name for field in fields(cls)] def setProperty(self, key: str, value) -> None: if self.properties is None: @@ -63,7 +71,7 @@ def getProperty(self, key, default=None): return self.properties.get(key, default) -def simplifyBreakpointsByDensity(breakpoints: list[Breakpoint], +def simplifyBreakpointsByDensity(breakpoints: list[Breakpoint] | BreakpoimtGroup, maxdensity=0.05, pitchconv: pt.PitchConverter | None = None ) -> list[Breakpoint]: @@ -108,7 +116,7 @@ def func(threshold) -> float: return simplifyBreakpoints(breakpoints, param=threshold, pitchconv=pitchconv) -def simplifyBreakpoints(breakpoints: list[Breakpoint], +def simplifyBreakpoints(breakpoints: list[Breakpoint] | BreakpointGroup, method='visvalingam', param=0.1, pitchconv: pt.PitchConverter | None = None @@ -131,7 +139,8 @@ def simplifyBreakpoints(breakpoints: list[Breakpoint], else: raise ValueError(f"Method {method} not supported") - def matchBreakpoint(t: float, breakpoints: list[Breakpoint], eps=1e-10) -> Breakpoint: + def matchBreakpoint(t: float, breakpoints: list[Breakpoint] | BreakpointGroup, eps=1e-10 + ) -> Breakpoint: bp = next((bp for bp in breakpoints if abs(bp.time - t) < eps), None) if bp is None: raise ValueError(f"Breakpoint not found for t = {t}") @@ -140,3 +149,117 @@ def matchBreakpoint(t: float, breakpoints: list[Breakpoint], eps=1e-10) -> Break return [matchBreakpoint(t, breakpoints) for t, p in simplified] +class BreakpointGroup: + """ + A list of breakpoints representing a note + + Args: + breakpoint: a list of breakpoints + """ + def __init__(self, breakpoints: list[Breakpoint]): + self.breakpoints = breakpoints + + def __iter__(self) -> Iterator[Breakpoint]: + return iter(self.breakpoints) + + def __len__(self) -> int: + return len(self.breakpoints) + + def __getitem__(self, item): + return self.breakpoints.__getitem__(item) + + def __repr__(self): + return (f"Group(start={self.start():.6g}, end={self.end():.6g}, meanfreq={self.meanfreq():.5g}, " + f"breakpoints={self.breakpoints}") + + def start(self) -> float: + """Start time of this group""" + return self.breakpoints[0].time + + def end(self) -> float: + """End time of this group""" + return self.breakpoints[-1].time + + def duration(self) -> float: + """The duration of this group""" + return self.breakpoints[-1].time - self.breakpoints[0].time + + def meanfreq(self, weighted=True) -> float: + """Mean frequency of this group + + Args: + weighted: weight the frequency by the breakpoints energy + + Returns: + the average frequency + """ + if len(self.breakpoints) == 1: + return self.breakpoints[0].freq + elif not weighted: + return sum(b.freq for b in self.breakpoints) / len(self.breakpoints) + else: + weights, freqs = 0, 0 + for b0, b1 in iterlib.pairwise(self.breakpoints): + dur = b1.time - b0.time + weight = (b0.amp + b1.amp) / 2 * dur + freqs += b0.freq * weight + weights += weight + return freqs / weights + + def meanamp(self, weighted=True) -> float: + """ + Average amplitude of this group + + Args: + weighted: weight the amplitude by the duration of the breakpoint + + Returns: + the average amplitude, optionally weighted + """ + if not weighted: + return sum(b.amp for b in self.breakpoints) + else: + weights, amps = 0., 0. + for b0, b1 in iterlib.pairwise(self.breakpoints): + weight = b0.amp * (b1.time - b0.time) + amps += b0.amp * weight + weights += weight + return amps / weights + + def times(self) -> list[float]: + return [bp.time for bp in self.breakpoints] + + def freqs(self) -> list[float]: + return [bp.freq for bp in self.breakpoints] + + def _repr_html_(self): + import tabulate + columnnames = Breakpoint.fields() + rows = [astuple(bp) for bp in self.breakpoints] + html = tabulate.tabulate(rows, tablefmt='html', headers=columnnames, floatfmt=".4f") + return html + + def plot(self, ax: plt.Axes, spanAlpha=0.2, linewidth=2, onsetAlpha=0.4, spanColor='red') -> None: + """ + Plot this group + + Args: + ax: the axes to plot onto + spanColor: color used for axvspan and onset marks + spanAlpha: alpha used for axvspan used to mark onset-offset regions + linewidth: line width for the breakpoints + onsetAlpha: alpha for onset marks + + """ + times = self.times() + freqs = self.freqs() + ax.plot(times, freqs, linewidth=linewidth) + t0 = self.start() + if len(self) > 1: + t1 = self.end() + ax.axvspan(t0, t1, alpha=spanAlpha, color=spanColor) + ax.axvline(t0, color=spanColor, alpha=onsetAlpha) + ax.plot(times, freqs) + + + diff --git a/maelzel/transcribe/mono.py b/maelzel/transcribe/mono.py index 7a9d184..5ed48d9 100644 --- a/maelzel/transcribe/mono.py +++ b/maelzel/transcribe/mono.py @@ -7,6 +7,7 @@ from maelzel.snd import features from maelzel.snd import freqestimate +from maelzel.snd import audiosample from maelzel.snd.numpysnd import rmsbpf from pitchtools import amp2db, PitchConverter, db2amp from math import isnan @@ -15,7 +16,7 @@ from maelzel.scorestruct import ScoreStruct from maelzel import histogram -from .breakpoint import Breakpoint, simplifyBreakpoints, simplifyBreakpointsByDensity +from .breakpoint import Breakpoint, BreakpointGroup, simplifyBreakpoints, simplifyBreakpointsByDensity from .options import TranscriptionOptions import logging @@ -27,7 +28,7 @@ __all__ = ( - 'FundamentalAnalysisMono', + 'FundamentalAnalysisMonophonic', ) @@ -57,7 +58,7 @@ def _quantizeFreq(pitchconv: PitchConverter, freq: float, divs: int) -> float: return -pitchconv.m2f(round(pitchconv.f2m(-freq) * divs) / divs) -class FundamentalAnalysisMono: +class FundamentalAnalysisMonophonic: """ Perform monophonic f0 analysis (one source, one sound at a a time) @@ -107,6 +108,11 @@ class FundamentalAnalysisMono: min. frequency as unvoiced. Under certain circumstances the f0 tracking algorithm might predict frequencies lower than the given min. frequency. An alternative way to mitigate such false predictions is to increase the overlap + removeSustain: remove sustain via :func:`maelzel.snd.deverb.removeSustain` prior + to analysis. This is helpful for audio signals like piano with pedal or + long reverberation, where the sustain of one note is still audible on + the next one, confusing the algorithm + lowAmpSuppression: supress low amplitude pitch estimates. 0.01=-40dB, 0.001=-60dB Attributes: groups: each group is a list of Breakpoints representing a note @@ -141,7 +147,8 @@ def __init__(self, referenceFrequency=442, markLowFrequenciesAsUnvoiced=True, unvoicedMinAmplitudePercentile=0, - lowAmpSuppression=0.05 + lowAmpSuppression=0.01, + removeSustain=False, ): if sr > 48000: @@ -187,6 +194,17 @@ def __init__(self, onsets = onsets[onsetsMask] offsets = features.findOffsets(onsets, samples=samples, sr=sr, rmscurve=rmscurve) + if removeSustain: + from maelzel.snd.deverb import removeSustain + samples = removeSustain(samples=samples, sr=sr, + fftsize=fftSize, + overlap=overlap, + onsets=onsets) + + if minFrequency > 100: + from maelzel.snd import filters + samples = filters.spectralFilter(samples, sr=sr, pairs=[0, 0, minFrequency, 0, minFrequency+1, 1, sr, 1]) + f0, voicedcurve = freqestimate.f0curvePyinVamp(sig=samples, sr=sr, fftsize=fftSize, @@ -215,9 +233,10 @@ def makeBreakpoint(t: float, freq: float, amp: float, linked: bool, kind='' # Algorithm: # * for each onset calculate an offset # * if there is an offset, sample f0 between onset and offset and simplify. Both onset and - # offset should be included in the simplification + # * offset should be included in the simplification # * if there is no offset, sample f0 between onset and next onset and simplify. - # The next onset should NOT be part of the group + # * The next onset should NOT be part of the group + # * TODO: decide what to do for static notes # * In both cases, do not simplify if the duration between onset-offset (or onset and next # onset) is less than minDuration. In this case make a group with just the onset breakpoint @@ -239,7 +258,7 @@ def makeGroup(onset: float, offset: float) -> list[Breakpoint]: first = group[0] first.kind = 'onset' first.isaccent = bool(first.onsetStrength > accentStrength) - if simplify: + if simplify > 0: group = simplifyBreakpoints(group, method=simplificationMethod, param=simplify, @@ -247,7 +266,7 @@ def makeGroup(onset: float, offset: float) -> list[Breakpoint]: group[-1].linked = False return group - groups: list[list[Breakpoint]] = [] + groups: list[BreakpointGroup] = [] for i, onset, offset in zip(range(len(onsets)), onsets, offsets): if offset > 0: # There is an offset, sample f0 between onset and offset and simplify. @@ -274,11 +293,14 @@ def makeGroup(onset: float, offset: float) -> list[Breakpoint]: for bp in group): continue - groups.append(group) + groups.append(BreakpointGroup(group)) # TODO: minSilence - remove short silences between breakpoints within a group - self.groups: list[list[Breakpoint]] = groups + self.sample = audiosample.Sample(samples, sr=sr) + """Sample holding the samples used for this analysis""" + + self.groups: list[BreakpointGroup] = groups """Each group is a list of Breakpoints representing a note""" self.rms = rmscurve @@ -316,12 +338,40 @@ def flatBreakpoints(self) -> Iterator[Breakpoint]: def _repr_html_(self): import tabulate - columnnames = self.groups[0][0].fields() + columnnames = Breakpoint.fields() rows = [_astuple(bp) for bp in self.flatBreakpoints()] html = tabulate.tabulate(rows, tablefmt='html', headers=columnnames, floatfmt=".4f") return html - def plot(self, linewidth=2, axes=None, spanAlpha=0.2): + def play(self, voicedInstr='saw', unvoicedInstr='.bandnoise', unvoicedbw=0.9, + unvoicedGain=0.): + from maelzel.core import Note, Voice, defPreset + defPreset('.bandnoise', r''' + |kbw=0.9| + aout1 = beosc(kfreq, kbw) * a(kamp) + ''') + notes = [] + struct = ScoreStruct(tempo=60) + for b0, b1 in iterlib.pairwise(self.flatBreakpoints()): + assert b0.time + b0.duration <= b1.time, f"{b0=}, {b1=}" + if b0.voiced: + n = Note(self._pitchconv.f2m(b0.freq), offset=struct.t2b(b0.time), dur=b0.duration, + tied=b0.linked, gliss=b0.linked) + n.setPlay(instr=voicedInstr) + notes.append(n) + elif unvoicedGain > 0: + if b0.linked: + dur = b0.duration + else: + dur = min(b0.duration, 0.1) + n = Note(self._pitchconv.f2m(b0.freq), offset=struct.t2b(b0.time), + dur=dur, tied=b0.linked, gliss=b0.linked) + n.setPlay(instr=unvoicedInstr, kbw=unvoicedbw, gain=unvoicedGain) + notes.append(n) + v = Voice(notes) + v.play() + + def plot(self, linewidth=2, axes=None, spanAlpha=0.2, onsetAlpha=0.4, spanColor='red') -> plt.Axes: """ Plot the breakpoints of this analysis @@ -330,21 +380,20 @@ def plot(self, linewidth=2, axes=None, spanAlpha=0.2): axes: if given, a pyplot Axes instance to plot on spanAlpha: the alpha value for the axvspan used to mark the onset-offset regions + onsetAlpha: alpha value for onset lines + spanColor: color for onset-offset span + Returns: + the axes used """ - import matplotlib.pyplot as plt if not axes: + import matplotlib.pyplot as plt axes = plt.axes() + for group in self.groups: - times = [bp.time for bp in group] - freqs = [bp.freq for bp in group] - axes.plot(times, freqs, linewidth=linewidth) - t0 = group[0].time - if len(group) > 1: - t1 = group[-1].time - axes.axvspan(t0, t1, alpha=spanAlpha, color='red') - else: - axes.axvline(t0, color='red') + group.plot(ax=axes, linewidth=linewidth, spanAlpha=spanAlpha, onsetAlpha=onsetAlpha, spanColor=spanColor) + + return axes def simplify(self, algorithm='visvalingam', threshold=0.05) -> None: """Simplify the breakpoints inside each group, inplace @@ -380,6 +429,8 @@ def transcribe(self, """ if options is None: options = TranscriptionOptions() + else: + options = options.copy() options.unvoicedMinAmpDb = min(self.dbHistogram.percentileToValue(0.05), options.unvoicedMinAmpDb) @@ -401,7 +452,7 @@ def transcribe(self, return voice -def transcribeVoice(groups: list[list[Breakpoint]], +def transcribeVoice(groups: list[list[Breakpoint]] | list[BreakpointGroup], scorestruct: ScoreStruct = None, options: TranscriptionOptions | None = None, ) -> Voice: @@ -419,6 +470,8 @@ def transcribeVoice(groups: list[list[Breakpoint]], """ from maelzel.core import Note, Voice, getScoreStruct + from maelzel.core import symbols + if scorestruct is None: scorestruct = getScoreStruct() @@ -456,9 +509,9 @@ def transcribeVoice(groups: list[list[Breakpoint]], note = Note(pitch, amp=bp1.amp, offset=offset, dur=end - offset, gliss=options.addGliss) note.setProperty('voiced', bp1.voiced) if not bp1.voiced and options.unvoicedNotehead: - note.addSymbol('notehead', options.unvoicedNotehead) + note.addSymbol(symbols.Notehead(options.unvoicedNotehead)) if options.addAccents and bp1.isaccent: - note.addSymbol('articulation', 'accent') + note.addSymbol('accent') if pitch == unvoicedPitch: note.setProperty('unvoicedGroup', True) note.gliss = False diff --git a/maelzel/transcribe/options.py b/maelzel/transcribe/options.py index 08b894a..896635e 100644 --- a/maelzel/transcribe/options.py +++ b/maelzel/transcribe/options.py @@ -1,5 +1,5 @@ from __future__ import annotations -from dataclasses import dataclass +from dataclasses import dataclass, replace as _replace @dataclass @@ -70,3 +70,6 @@ def __post_init__(self): assert isinstance(self.unvoicedPitch, (str, int)) assert isinstance(self.unvoicedMinAmpDb, (int, float)) assert isinstance(self.a4, (int, float)) and 432 < self.a4 < 460 + + def copy(self) -> Self: + return _replace(self) diff --git a/notebooks/test/clip.ipynb b/notebooks/test/clip.ipynb index 6816959..0cc5c97 100644 --- a/notebooks/test/clip.ipynb +++ b/notebooks/test/clip.ipynb @@ -35,14 +35,14 @@ { "data": { "text/html": [ - "Clip(source=../snd/piano-pitchtest-Cmaj.flac, numChannels=1, sr=44100, dur=1186337243678751/70368744177664, sourcedursecs=10.429secs)
\n", + "Clip(source=../snd/piano-pitchtest-Cmaj.flac, numChannels=1, sr=44100, dur=23.812, sourcedur=10.429s)
\n", " " + "width:543px\"\n", + " src=\"data:image/png;base64,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\"/>" ], "text/plain": [ - "Clip(source=../snd/piano-pitchtest-Cmaj.flac, numChannels=1, sr=44100, dur=1186337243678751/70368744177664, sourcedursecs=10.429secs)" + "Clip(source=../snd/piano-pitchtest-Cmaj.flac, numChannels=1, sr=44100, dur=23.812, sourcedur=10.429s)" ] }, "execution_count": 3, @@ -51,7 +51,7 @@ } ], "source": [ - "cl = Clip(\"../snd/piano-pitchtest-Cmaj.flac\", pitch=60, speed=1)\n", + "cl = Clip(\"../snd/piano-pitchtest-Cmaj.flac\", pitch=60, speed=0.75)\n", "cl" ] }, @@ -83,7 +83,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "bae05345b11543228000bedc97b4f7e3", + "model_id": "74dbc77271ae4cb98e6f622fdeea64a2", "version_major": 2, "version_minor": 0 }, @@ -97,7 +97,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "84d4ea0eeb4b49b5880eedfc68d8ef46", + "model_id": "e778fdb846e2424791d85c5d02537fcf", "version_major": 2, "version_minor": 0 }, @@ -113,11 +113,11 @@ "text/html": [ "SynthGroup(synths=1)\n", "

Instr: preset:_clip_diskin - 1 synths

\n", - "
p1startdurp4kposkgainidataidx_inumbpsibplenichanifadeinifadeoutipchintrp_ifadekindipathisndfilechankspeediskipiwrapiwinsize2122...
501.0002 𝍪0.03210.429001212310.020.0201../snd/piano-pitchtest-Cmaj.flac-110040...
" + "
p1startdurp4kposkgainidataidx_inumbpsibplenichanifadeinifadeoutipchintrp_ifadekindipathisndfilechankspeediskipiwrapiwinsize2122...
501.0002 𝍪0.03713.906001212310.020.0201../snd/piano-pitchtest-Cmaj.flac-10.750040...
" ], "text/plain": [ "SynthGroup(n=1)\n", - " Synth(𝍪 preset:_clip_diskin=501.0002 start=0.802 dur=10.429 p4=0 kpos=1 kgain=21 idataidx_=2 inumbps=3 ibplen=1 ichan=0.02 ifadein=0.02 ifadeout=0 ipchintrp_=1 ifadekind=../snd/piano-pitchtest-Cmaj.flac ipath=-1 isndfilechan=1 kspeed=0 iskip=0 iwrap=4 iwinsize=0 p21=60 …)" + " Synth(𝍪 preset:_clip_diskin=501.0002 start=0.871 dur=13.906 p4=0 kpos=1 kgain=21 idataidx_=2 inumbps=3 ibplen=1 ichan=0.02 ifadein=0.02 ifadeout=0 ipchintrp_=1 ifadekind=../snd/piano-pitchtest-Cmaj.flac ipath=-1 isndfilechan=0.75 kspeed=0 iskip=0 iwrap=4 iwinsize=0 p21=60 …)" ] }, "execution_count": 4, @@ -129,6 +129,27 @@ "cl.play()" ] }, + { + "cell_type": "code", + "execution_count": 5, + "id": "546a72df-25f2-4635-bbf8-b96c8d715612", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Fraction(1186337243678751, 70368744177664)" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cl.dur" + ] + }, { "cell_type": "code", "execution_count": 5, @@ -138,7 +159,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "c387e241f65d4e118242dae11f64c3cd", + "model_id": "e4cf4ee8674143fe97f7edbf967454f8", "version_major": 2, "version_minor": 0 }, @@ -152,7 +173,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "22a23be9ba2c46a79dc8116b771b40ce", + "model_id": "41c128b8a2d94f8ba7a511b971562efa", "version_major": 2, "version_minor": 0 }, @@ -168,11 +189,11 @@ "text/html": [ "SynthGroup(synths=1)\n", "

Instr: preset:_clip_diskin - 1 synths

\n", - "
p1startdurp4kposkgainidataidx_inumbpsibplenichanifadeinifadeoutipchintrp_ifadekindipathisndfilechankspeediskipiwrapiwinsize2122...
501.0003 𝍪0.04010.429001212310.020.0201../snd/piano-pitchtest-Cmaj.flac-110040...
" + "
p1startdurp4kposkgainidataidx_inumbpsibplenichanifadeinifadeoutipchintrp_ifadekindipathisndfilechankspeediskipiwrapiwinsize2122...
501.0003 𝍪0.04313.906001212310.020.0201../snd/piano-pitchtest-Cmaj.flac-10.750040...
" ], "text/plain": [ "SynthGroup(n=1)\n", - " Synth(𝍪 preset:_clip_diskin=501.0003 start=12.532 dur=10.429 p4=0 kpos=1 kgain=21 idataidx_=2 inumbps=3 ibplen=1 ichan=0.02 ifadein=0.02 ifadeout=0 ipchintrp_=1 ifadekind=../snd/piano-pitchtest-Cmaj.flac ipath=-1 isndfilechan=1 kspeed=0 iskip=0 iwrap=4 iwinsize=0 p21=60 …)" + " Synth(𝍪 preset:_clip_diskin=501.0003 start=33.059 dur=13.906 p4=0 kpos=1 kgain=21 idataidx_=2 inumbps=3 ibplen=1 ichan=0.02 ifadein=0.02 ifadeout=0 ipchintrp_=1 ifadekind=../snd/piano-pitchtest-Cmaj.flac ipath=-1 isndfilechan=0.75 kspeed=0 iskip=0 iwrap=4 iwinsize=0 p21=60 …)" ] }, "execution_count": 5, diff --git a/notebooks/test/musicxml-parse.ipynb b/notebooks/test/musicxml-parse.ipynb index 3ca8c20..27ac323 100644 --- a/notebooks/test/musicxml-parse.ipynb +++ b/notebooks/test/musicxml-parse.ipynb @@ -17,7 +17,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 2, "id": "21763a66-985d-4394-9229-472844184d7b", "metadata": {}, "outputs": [ @@ -28,13 +28,13 @@ " " + " src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABS0AAAFFCAIAAACG/18MAAAJLmlDQ1BJQ0MgUHJvZmlsZQAAeJyVlWdQk1kXx+/zPOmFQBJCh1BDkSolgJQQWijSq6hA6J1QRWyIuAIriog0RZBFARdclSJrRRQLi4ICFnSDLALKunEVUUFZcN8ZnfcdP7z/mXvPb/5z5t5zz/lwASCIg2XBy3tiUrrA28mOGRgUzATfKIyflsLx9HQD39W7EQCtxHu638/5rggRkWn85bi4vHL5KYJ0AKDsZdbMSk9Z4aPLTA+P/8JnV1iwXOAy31jh6H957EvOvyz6kuPrzV1+FQoAHCn6Gw7/hv9z74pUOIL02KjIbKZPclR6Vpggkpm20gkel8v0FCRHxSZEflPw/5X8HaVHZqevRG5yyiZBbHRMOvN/DjUyMDQEX2fxxutLjyFG/3/PZ0VfveR6ANhzACD7vnrhlQB07gJA+tFXT225r5R8ADru8DMEmf96qJUNDQiAAuhABigCVaAJdIERMAOWwBY4ABfgAXxBENgA+CAGJAIByAK5YAcoAEVgHzgIqkAtaABNoBWcBp3gPLgCroPb4C4YBo+BEEyCl0AE3oEFCIKwEBmiQTKQEqQO6UBGEBuyhhwgN8gbCoJCoWgoCcqAcqGdUBFUClVBdVAT9At0DroC3YQGoYfQODQD/Q19hBGYBNNhBVgD1ofZMAd2hX3h9XA0nArnwPnwXrgCrodPwh3wFfg2PAwL4ZfwHAIQIsJAlBFdhI1wEQ8kGIlCBMhWpBApR+qRVqQb6UPuIUJkFvmAwqBoKCZKF2WJckb5ofioVNRWVDGqCnUC1YHqRd1DjaNEqM9oMloerYO2QPPQgehodBa6AF2ObkS3o6+hh9GT6HcYDIaBYWHMMM6YIEwcZjOmGHMY04a5jBnETGDmsFisDFYHa4X1wIZh07EF2ErsSewl7BB2EvseR8Qp4YxwjrhgXBIuD1eOa8ZdxA3hpnALeHG8Ot4C74GPwG/Cl+Ab8N34O/hJ/AJBgsAiWBF8CXGEHYQKQivhGmGM8IZIJKoQzYlexFjidmIF8RTxBnGc+IFEJWmTuKQQUgZpL+k46TLpIekNmUzWINuSg8np5L3kJvJV8lPyezGamJ4YTyxCbJtYtViH2JDYKwqeok7hUDZQcijllDOUO5RZcby4hjhXPEx8q3i1+DnxUfE5CZqEoYSHRKJEsUSzxE2JaSqWqkF1oEZQ86nHqFepEzSEpkrj0vi0nbQG2jXaJB1DZ9F59Dh6Ef1n+gBdJEmVNJb0l8yWrJa8IClkIAwNBo+RwChhnGaMMD5KKUhxpCKl9ki1Sg1JzUvLSdtKR0oXSrdJD0t/lGHKOMjEy+yX6ZR5IouS1Zb1ks2SPSJ7TXZWji5nKceXK5Q7LfdIHpbXlveW3yx/TL5ffk5BUcFJIUWhUuGqwqwiQ9FWMU6xTPGi4owSTclaKVapTOmS0gumJJPDTGBWMHuZImV5ZWflDOU65QHlBRWWip9KnkqbyhNVgipbNUq1TLVHVaSmpOaulqvWovZIHa/OVo9RP6Tepz6vwdII0Nit0akxzZJm8Vg5rBbWmCZZ00YzVbNe874WRoutFa91WOuuNqxtoh2jXa19RwfWMdWJ1TmsM7gKvcp8VdKq+lWjuiRdjm6mbovuuB5Dz00vT69T75W+mn6w/n79Pv3PBiYGCQYNBo8NqYYuhnmG3YZ/G2kb8Y2qje6vJq92XL1tddfq18Y6xpHGR4wfmNBM3E12m/SYfDI1MxWYtprOmKmZhZrVmI2y6WxPdjH7hjna3M58m/l58w8WphbpFqct/rLUtYy3bLacXsNaE7mmYc2ElYpVmFWdldCaaR1qfdRaaKNsE2ZTb/PMVtU2wrbRdoqjxYnjnOS8sjOwE9i1281zLbhbuJftEXsn+0L7AQeqg59DlcNTRxXHaMcWR5GTidNmp8vOaGdX5/3OozwFHp/XxBO5mLlscel1Jbn6uFa5PnPTdhO4dbvD7i7uB9zH1qqvTVrb6QE8eB4HPJ54sjxTPX/1wnh5elV7Pfc29M717vOh+Wz0afZ552vnW+L72E/TL8Ovx5/iH+Lf5D8fYB9QGiAM1A/cEng7SDYoNqgrGBvsH9wYPLfOYd3BdZMhJiEFISPrWeuz19/cILshYcOFjZSNYRvPhKJDA0KbQxfDPMLqw+bCeeE14SI+l3+I/zLCNqIsYibSKrI0cirKKqo0ajraKvpA9EyMTUx5zGwsN7Yq9nWcc1xt3Hy8R/zx+KWEgIS2RFxiaOK5JGpSfFJvsmJydvJgik5KQYow1SL1YKpI4CpoTIPS1qd1pdOXP8X+DM2MXRnjmdaZ1Znvs/yzzmRLZCdl92/S3rRn01SOY85Pm1Gb+Zt7cpVzd+SOb+FsqdsKbQ3f2rNNdVv+tsntTttP7CDsiN/xW55BXmne250BO7vzFfK350/sctrVUiBWICgY3W25u/YH1A+xPwzsWb2ncs/nwojCW0UGReVFi8X84ls/Gv5Y8ePS3qi9AyWmJUf2YfYl7RvZb7P/RKlEaU7pxAH3Ax1lzLLCsrcHNx68WW5cXnuIcCjjkLDCraKrUq1yX+ViVUzVcLVddVuNfM2emvnDEYeHjtgeaa1VqC2q/Xg09uiDOqe6jnqN+vJjmGOZx543+Df0/cT+qalRtrGo8dPxpOPCE94nepvMmpqa5ZtLWuCWjJaZkyEn7/5s/3NXq25rXRujregUOJVx6sUvob+MnHY93XOGfab1rPrZmnZae2EH1LGpQ9QZ0ynsCuoaPOdyrqfbsrv9V71fj59XPl99QfJCyUXCxfyLS5dyLs1dTrk8eyX6ykTPxp7HVwOv3u/16h245nrtxnXH61f7OH2XbljdOH/T4ua5W+xbnbdNb3f0m/S3/2byW/uA6UDHHbM7XXfN73YPrhm8OGQzdOWe/b3r93n3bw+vHR4c8Rt5MBoyKnwQ8WD6YcLD148yHy083j6GHit8Iv6k/Kn80/rftX5vE5oKL4zbj/c/83n2eII/8fKPtD8WJ/Ofk5+XTylNNU0bTZ+fcZy5+2Ldi8mXKS8XZgv+lPiz5pXmq7N/2f7VLwoUTb4WvF76u/iNzJvjb43f9sx5zj19l/huYb7wvcz7Ex/YH/o+BnycWshaxC5WfNL61P3Z9fPYUuLS0j9CLJC+ERlPpwAAiuBJREFUeJzt3XuU2+Z5J/53HFkaOboAo2Z0cRqJpGxPGjv2EBM7q0SWswRTX3p8aQdUto0kpycEs6epbPeckEw3Te39bVJy9pzYcbbNEkxTW9vdtYipXbtOGpeYrmw33tghqMSXVHZEcGTX0UjbELSkWHLseH5/vA0Cg5cBSRAAOd/PHzoaDAk+xOD24H3f5x1ZXFwkADBQdu/eXSgUcPACAAAAAAyi87wOAAAAAAAAAGAZQR4OAAAAAAAA4B7k4QAAAAAAAADuQR4OAAAAAAAA4B7k4QAAAAAAAADuQR4OAAAAAAAA4B7k4QAAAAAAAADuQR4OAAAAAAAA4B7k4QAAAAAAAADuQR4OAAAAAAAA4B7k4QAAAAAAAADuQR4OAAAAAAAA4B7k4QAAAAAAAADuQR4OAAAAAAAA4B7k4QAAAAAAAADuQR4OAAAAAAAA4B7k4QDQXDabZVlWVdWmv5UkieO4kZGRkZERlmUFQWh8pa7rqVSKZVn6mlQq1f+oAQAAuqQoitch/BtN01pdf92nKIqu615HQYjPNgtAj5CHA8CvKIqSSqVEUWRZNp1O1+t1juMaXyaKYi6Xk2V5cXFxcXFRlmVFUaampiRJMl6j6zrP87Isq6q6uLiYzWZnZmZEUXTx2wAAANiVzWaj0Wg2m/U6EEIIufzyy6empryOghBCFEWJRqOZTMbrQAgh5BOf+MTU1BRScRgOyMMBwIpl2WAw2Oq3kiTRxNt4Dc/z9MYllUoZj8wzmUy5XJYkib5MFMVkMpnP531yiwMAAGBWq9UIIT/60Y+8DoQQQs6cOUMI8U/CubCw4HUIhBDy1ltvEUKefvpprwMBcADycAD4FZpRU61eUygUWJa1dFGjyXa9XpdlmRCiadrMzEw4HOZ53nhNLBYjhORyuX5FDwAA0JsTJ054HcKvIA9v6sc//rHXIQA4YIXXAQDA4KlWq6FQqFQqGb3WWZal/6lUKuSXybalUZ2+uFqtqqratLs7AACAt44cOeJ1CL9SKBR8Mp7rxRdf9DqEX3n88ce9DgEcoGmapmmEkGKxuLCwUK1Wz5w5Mz8/30Uxgo0bN27ZsuWiiy4aHR3ds2cPIcTcDuRbyMMBBoZP0leO4+bm5izxGM/s6Xg2+mNj5/ZAIFCtVguFgh++CAAAgMWxY8c0TWszOMtNc3NzPgnGV5vl8OHD/gkGlqSqqqZppVKpXq9///vfP3v2bLVafeONNxz8iBMnTpw4ceLw4cOEkAMHDhjLQ6HQli1b/t2/+3ehUEgQBKPRyCeQhwP4nSRJuVyuXC7THwOBwKZNmzyMJ51O0/8IgmAsLBQKhBCGYehCmqg3CgaD1WqVPv4EAADwIVEU/VM43T/B+CcS4rNgwIKWtVcU5amnnnr++eftvGX79u0sy15xxRUsy4ZCoVYPWViWbWzIMber0x91XX/11VePHDlSqVQqlcqTTz5JCEkkEpFIJBaL8Tzvk4c4yMMB/EtVVUEQqtWqeWG1WrUsMeN5vlUOTEUikR4vXSzLWkaPZ7NZ+qHmeult+GT6EwAAgEZzc3OKovikX6t/gvFPJMRnwQBNvB999NFnnnmmTVv39u3b165dOzU1xbLs2NgYzah7/yMGg0GaVzddlaqquq4Xi8X/83/+z9zcHL1fDQQCiUSC53lvu2ciDwfwKVVVeZ6v1+sdvWvJE4rjZxxVVel0JrlcztxCDgAAMHA2btx44sQJURRVVfW8F2s4HC6Xy34IxlebZfv27UePHvVJMMuTruuKopRKpWKx+KMf/ahp4v3ud7/78ssv/+hHPzo1NcVxnFdN0JZsX1GUYrEoyzLt3bl379577rnHq70IeTiAH2ma1kUSTghxeVYw+rCAEFIoFJCEAwDAoNu9e/eBAweq1Womk/F8ok06RagfgvHVZpmZmfn93/99nwSzrGiapijKX//1X9Oe3hbvfve7OY778Ic/7G3i3R7P83RuIF3X77zzznw+/+CDD54+fdqTYDBvGYAfZTKZ9kk4wzAuhdIaTcKDwaCiKJYkPBwON30LHcCDIm0AAOBPo6OjdALOmZkZz6uZsCzrk2B8tVnWrl3rn2CWA03Tksnk1q1bQ6FQIpEwkvDVq1fv2LEjmUwWCoVKpXLmzJnHH388m80KguDPJNyMZdmvfvWrr7766kMPPeRVDGgPB/CjJYdwt2p8liSJzhzWSigUcmQSFF3XBUHgeV6SJKM/TyqVIoRks1mO48rlcuPVkY5sD4VCvQcAAADQDzzPJ5PJmZmZTCZjs+7JcgjGP5H4LZhhpaqqJEkHDx587bXXzMuvvfbaa665ZiCS7SWxLOtllYFFAPCf9octwzCVSqXpGyORSPv3RiIROwHQmpOtThG1Wi0cDsfj8cZPTyaTi4uLtHx6OBy2vIuus1ar2YkBBlelUsnlco17I32aPjk5mcvlvI7RG6VSKZPJTE5OmjfLypUrt27dOjExEYlEisWi1zECLFPJZJIQQq9ii4uLgUCAENLqattvlkuwh8HQ+wGfbBZ68jTOk94GM6wKhcLu3btHR0fN16k1a9bE4/FCoYBbOAehPRzAj+g8201/xTCMJEmtnkHGYrH2vb4daYumrfGxWMzcbq/r+tzcHK17IQgCrS5jnuGT9iJLJpOoqjLEstnsN77xjaNHjzb97bFjx+h/EonEH/7hH958881/9md/NgQP1Jek63omk/nLv/zLn/70p42//fnPf063zJEjR+bm5tavXy+K4uc//3kcKQAeSqfTiUQil8v5YQSyf4LxTyR+C2bQ0fHSkiSdO3fOWPiBD3zghhtuWPLeErozsrhUyxsAuE+W5Vgs1rg8EAjIsuzC2TCbzdKMurEAWyqVmpmZafXGYrFIe/jQ0eM8z9P02zyYHNnFsHr/+99/5MiR973vfVdcccXExASt1GIMT1BVlfaJePDBB82J+vXXX3/HHXcM8fQzmqZddtllr7/+eiAQ2Llz56ZNm6LRaDAYNLaM0f3kvvvuO3nyJP3/ypUrb7nlli9/+cvL4TkFgB/Qq1symTSSOpZlg8GgqqruBzMyMkIIMd+lexWMoijRaNQnmyUcDh8+fNi40/A2mKGhadof//EfHzx4kP44Ojp6zTXX3HLLLf6ZZ3toed0gDwDNFQoF2uGKCofDLnTlbdOtnXYDK5VK7U8ppVLJWFupVAoEAoFAIBKJMAwTiUTQnWm4ZTIZm92qS6VSPB5fs2aNsed88Ytf7Hd4XqnVaslk0mbPyUKhEI/Hjc2yatUq9FQHcIelX/ri4uL09LRXt8qNd+leBWPpl+5hJIsN/dK9DWYIVCqVj370o8YVZ2JiYrmNGqvVarlcLh6PRyIROrjSzWEO2HEB/M6c2Q6iYrFYLBYH/VtAn+RyuR07dtA7gN27d3sdjl/QO4Pt27fTLfOVr3zF64gAhl9jHk6XeBJMYx7uVTCNebiHm6UxD/cwmIFWLBYnJiaMDPzGG29cbs986SPypk1Krj2MwLxlAH436GNyaO/0Qf8W0CeiKH73u98tFAoXXHDBwYMHb7nlFl3XvQ7KeyzLiqL44x//mN4l/NEf/dGf/umfeh0UwLLjq9ORf4LxTyTEZ8EMBEVR3v/+90ej0SNHjrz73e+mLcAPP/zwEI8Oa6SqKsdxrUZZJhIJd+bDQx4OsLzIsiyKIq5b4CuCIPzLv/zL1Vdf/bd/+7c333yz1+H4SDabLZVKW7Zs+c//+T/TeQEBwDWapjEM43UU/8Y/wfgnEuKzYHxOUZTNmzfTDPy9731vJpN55ZVXstnschsETisWtSqHTNHaRv2GPBxg2ZFlmed5pOLgKyzLPv7441/84hefeOIJP0wGK0nSyMjIyMiI58FwHPf888/ffPPNMzMz7jyhb88/Wwag32ijmddR/Bv/BOOfSIjPgvEtXddvu+22aDS6sLCwY8eOQqHwyiuvpFKp5VM3V5blVCqVSqVuu+22j3zkI/V6vf3rH3zwQfr6bDbbvxtmzFsGsLwIghAMBo3S5bh6gSN0XZdluVQq0USR47hEItHFI/a77rpryaujOxKJhPEfURS7Xo8jW4Zl2W9+85vnzp3zw+Mzp7aMbymKUiwWdV2nfzKWZaemptAZYRmSZbler/vkKumfYPwTCfFZML6lqqogCNVqdfv27V//+teXVf9zQ9NJiNp45plnnnnmGePHfl0C3BmGDgC+QgedMgyz3MpygOP8UOmkH3q/UGLLDJZarRaPxy0dXOl0D4SQcDjsdYDQR6VSqVKpWOq00ZkLXC4ySiNZbKjT5mEwljptnkRiBGOp0+ZVMANk//79dF8yV9pbhtrMB9ReIBDoXwX1obqIAoBNxnzFg54SgLfo1HRtLmBuzv/hrFwu18sBgi0zWHK5XGMGbtzrZzIZ8s4SzTAcKpWKeZrA9evXk3cmnK49f7FEYpw9jBd4GMymTZu82iyNwaxcuZK8Mw/HM7JWKpUKrYi+Y8eOwb3iOK7Nddng2jML5OEAy5Glma5QKHgdEQyeUqm0ZHWcTCbjdZgewJYZLObnkoQQhmEsN2GlUgl/suHT+PCFEkXRJ5EQL7qc+GeztAnmwIED7gczWCqVypo1a1atWoUTl8W73vWu9lfneDzuWjCo0waw7KiqaimwhLFV0Cld13meX3Isd61WcyWcX/G8ihi2zMAxj3KPRCKqqmazWfMLCoUCwXlyuKiqmkgkmh6nL7/8sk8ioW2/PgnG5c3SPpjnn3/e5WAGi67rv/mbv/n2229/97vfRW0Li/ZPyePxuJuXSNRpA1heFEURBMG4sDEMI0mSnapRqF0EZplMxk5BtVAoZH+djpQ087y+GrbMYJEkic5ewzBMOp1uPKeJopjP5wny8OFCxxo09cEPftD+eno/HNpEcvvtt7sZSftgXN4s7YNxOZKBo2kay7IPPPAAzlqNtmzZ8tOf/rRxeSAQyGazgiC4Go1rLe8A4DljYCfFMMyS1U1Quwiaaj/42djBarWanbU5WNKs9wtcj8FgywwWOvQ0HA43ngxLpVI4HKZfcHp62pPwoE/aHJ42i345dTj4J5IhC2Yoz1fQO1rq7wtf+EI8Ho9EIpFIJJlMelX+A3k4wDJiSaeXvJKhdhE0ZbNPtc1KJ86WNPO2vhodSIwtM0ACgUAgEGh8LGK5g8eJbsi02o1tDg118HDwTyTDFMywnq+gd5aS+95CHg6wjJiLjkYikfYvRu0iaMWyb/R43+afkma9B9Oq+QVbxrcIIZs2bTLflBeLRaMZvKM/GQwQ89XQMD09baejirOHg38iGZpghvh8Bb3zVR6O8eEAy4gkSZqmzc3NEULefPNNy291XVdV1fhxz549xv8nJyfvuOOOzZs3K4piLKRjJkdGRuhCjuNYlu1r/OA5+rcul8vtX3b99dfHYjHz3sLzvPF/TdPoUL3Tp0/v3bv3zJkz7ddWLpfpqoLBoOPj+hwJxjh25ufn27/dsmVYljWP31NVVdf1LoLpx9Hnq2AcZ/zdV6xYsbCwMDs7Gw6Hjx8//sADD3z72982v7JxZ7b81WCw0D/ldddd9+qrrxp/64suuuiGG2644YYbjIug+ZRlvIt0fjhY1mNGzxtLRmLZ3/p0/qTH+5LBWI7u/m0WstTfyLJZjHd1GgkO52XCOHBOnTpFbNzGGPq7h3j9IAAA3PbZz36WEDIyMvKP//iP5uV0yHfXlmxgh0Fnp7G3FWN4baVS6WU3s9OZsFar5XI589CvVu+y2Y28KfMY716OHaNZxlK+oSOBQMDBzbL4y1En3fH/qaDHnZBgfOnAsn8SM1cEaNowa1ObzhRLttkajEFklUrF/rvarMfC/snHXBTGkStCI0tvlDbMh2Evm2X4pm7t6Gy/TPSyh/Sv8Rzt4QBuUFVVURSfVBf/2te+9uMf//ixxx6LRqOyLN9yyy10OW376lqPbwf/8/+fWNf1TCYzMzNjXjg3NzczM5PL5XopEt7q42jTEH3K7qH2fxqXN4vnW2NJ/t+TAVqxMx1D/7hw7Lh/eA7TCcHls/0y0b89ZGSxbUFCAHAEz/Nzc3P+OdwURYlGo/T/xqnZ3C+ddkr/i7/4i7Vr15rfmM/n6VS6VDabNR5dD0RnVOiR0S89lUrFYjH7zUTm3cPo8GzshG2YP6V99zBVVQVBoHNQNVWpVBq7ZXYdTNN+6fQAMR8XSzL3z3QkGIvuNgsx9TjtNJiBOBUYm/ozn/lMpVLp6E9G2vaqBZ8zDzFow7wbm/s8//Zv//aS77V5OBgdZdtr1S/d2fNnF5uF9OcsYRki10bT4U7ObpbB0vXZfjkw9pBOz/nolz6cKpVKMpm0OXUNDJxisWiuaka7rXoYj4WlO5mlUxathr13717zQtQuAgOt02az6Hcb73rXu9pfoezvY70X5lnycmknGHpk9d6HzZFgFp3YLA7W5PMnX9XsAZ/z1eHg4PmzR9gsftDd2b5SqSy3s5+vzvnnLXnkQD+oqspx3MzMDJ6pD6vGfkH+oaqqJEnmJZZHffRR9OOPP05/1DRNFMVoNGouaxGPxy0rAehU+5sG+/uYrus8zy/ZXdPmdGs9BuMCm8G4sFnsBwOwHLh5ODh1/nQBNku/dXe2lyQpFApFo9FgMDhMnfMHCPJwD6iqahwttHun1xHBMqIoivlkzTBMoVBo2k/p2LFjwWCQ5/lQKERLo1PT09PFYnEor2Tgsi1btjRdHggECoWC/X0sk8nYGTMZCoXsx9Z1ME5ZvXp1j8E4uFl6D2aA0FoeoijyPM/zvCAI2WzW66DARzZu3Ni4cHR09NJLL2VZ1rX6CBdeeGHT5e5HQllGsXkVTKvLilebxR3dne2NBKRarfZSmxO6hjptbtN1XRAE89EyMzOTSCSW7YAN//NVibUeSZKUSCSMHxmGURSl1biXWCy2fv16TdNop3qO40KhkCAI/h/5CYNixYoVhJBCoVAsFum9Ecdx0Wi0045Csiwv+RqGYQRBWPJlvQfjlImJic9//vO9BOPgZuk9GP/TdT2VSsmybL5ABwKBYDCYTqcLhYLNMasw9Pbt2zc1NfXoo48+/vjjx44dowvPnTv3/PPPP//8864VxKIdsAuFgueRUFdeeWUikfA8GHpZ+cIXvvDyyy/7YbO4w8GzPbjK647xy8709HTjX2FYB6sMh+6GdlveRX+sVCreTo9h6a/VagoTp0b/wrByag+hw7R6j8fOxW7JaB25Jjo4PnxycrL3lfS+WejfuvdgfIvuhLfffrvl9BgIBIy/I20p8sl4QvCQceorlUqBQKDNkeXCNFF01/VDJHSzRCIRPwRDN8uf//mfex6Jm9p8U0Pj2d6Yry4QCCyfelUYH758KYoyOzvbuDyfzw9lP5kB5Xjrt67rdOBNKBSKxWIednE0PwqNRCJDUyMUljM7B1Q8Hl+GXYvPP//89i9YnpulqXvuucc8WieZTGqaZjT40/+gPRyohYUFnufbVKUm9tonHeGfSE6fPu2fYFKplE8i8YmmZ3tRFGmdNk3T0NXRE8jDXdVm9AUGZviHgyXWVFUVRTEYDJornPVYFakXkiTZn2gKYCAseUANa2GeJb3nPe9p89tlu1nai0QiqqpabljpZI14cAnUwYMH+13+0I5f/OIXxMZ04q7dcpTLZT8E89ZbbxFCzpw543kk/tHmbE/LALkcDxgwf7h7VFWdmpqyLEwmk4lEIhQKMQyDx1E+YZnru4upvzVNEwTBnHubJZNJb9ugstlsOp1u3OWy2SztXVar1Q4fPrx169bt27fbXy3HcWhbG26yLNNubF3sIbFYzBiPJwgC7SHy9NNPnzlzho7asINlWUmS6E4rSRLNjo4ePXrs2LGVK1f+/Oc/t7x+dHR0+/btjUWVEokE7Rui67ooijSYubk5QkhHwRgtKqlUijaW0mAmJyfHxsZsriebzdIEj05MQBfOzc2tWbPmqquusrkS89FnBKOqatPb4labhRAiSRItVqKqKu0WRP/WXQfjT+a/+z/90z+98cYbhJAVK1Zs3bp127Ztlhf/8z//809+8hNCyNVXX210MTD+ajBYjB17SeZTlnG2oYeDnbdPTEzQOmrm9VgYh2p75vMeMZ0/n3jiiTfffNN+JJb1mNnfLOaj23KWsPN2BzcLeedhaLyr081CTOe9wdJ4/WrU6mxvvn4tE8YeQm887F+mWZbNZrP92kM87he/nFhavBmGMQYn0Du/XC7nbYRANR3abf/tlqm5Lcx/dw/lcjmGYcLhsHlE0JIzT7bHMIyH3whc0LS8hU2RSISuxM5Ms21YTpveBmNUWOjl2DHG7LU/dSzJ+DP1shJHgvH/qaDHvztB+YyBZf8kZpwlFh062zSyvxLjvFcqlbqOhLQeE2v/eDcf3Y5cERrZP52aD8OuIyHNZtUeCE5dTJcJf+4hqJfuHvMBY6lTzXHc3NxcsVgcsvqNw0TTNFVV7ZSabNOnPZfL+aTeuCiKHMfxPC+KovFMVJKkrls7CSHmSuwwlNLpNCFE1/Uu9hD6XkIIz/PJZNL8WNr+Pa65B52xQtoEbT8YlmWN93IcF4/HaXmOTtvDOY4zzuHGsdNpezjLsrFYzPhGmqYZjRsdNUFHo1Hj/5lMhl5uyuWyrusdBWNsmUQiQYPpoj3c/6cCnueNv/s//uM/Li4uXnbZZePj4+bX0D+l8aN5M5o3FAwW4yRm85VUNpvtqOHXfDpq0zfEOFTbCwaD5ttF4/zZqgm0VSRteiAbx/uSKzQf3ZYrQkfBtDlLGKfT9iyHobExu9gsA3rvbT6PdXH9Wm7d0S03HvavjP3dQ/qU30Mj8xM+S9Fs40mkV7GBmbkBvFarhcNh4w9n55GY5RALBALJZJKupM+Bd6xSqTQtmY566dCer+ql0/Nn78E4chL2Vb10eirrMZihr5dO/+7mrVQsFs2nfYI5TeCX7KTNru0t5523RI0n1yLx1Wah07n5IRI30a/mdRSDoU29dDr8xM27X9Rpc48xTm96erpVs6qiKO4FBG05UmKNVqHMZrN+aANvZH7KDgCwDJmrytMh+tFo1HzaR0E7sM/NvaX9fYWv9ls3g2nfrd1XmwX8hnYJcXPkPPJwD7TppIRpUTxndM2amprK5/NLFv9sVCwWc7kcbU5Zbt1+AAAGy6ZNmwghe/bs4Xk+FArl83njV9PT08ViEXftw0pV1XXr1nXxxqY1DgOBQKFQ6Hpvue666zqtbmiUGXM2kq43y9q1ax0P5rrrrrvttts6esuWLVuaLu8xElgORFFkGKZarbqWjmF8uNsikUibmnvLah4FH0qlUm1GdzMMYx6E2QrNvWnnFgAA8LNf+7Vfe+WVV8Lh8BtvvEF78m/YsKFer2/atOnVV1/NZDK5XG5qaspmNWkYIIqinD59uos37tu3b2pqivZ3I4RwHBeNRnt87H7ixAlalt8+2gG7UCg4G4mu66dPn9Z1vdN+fFdeeWUikXB8s5w4caKjt6xYsYIQ8oUvfOHEiRMORgLLhCAI+Xy+UCi4010UebjbmiZy9ExB0B7utYEosQYAAM664447OI5LpVKyLJu7QQUCgWAwmE6nC4UCLtBDhrZ8aJrWxYxEgiDYqdvaEZtTf7kQCSFEUZQuVut4MGvXrp2fn+/ijbt27ULiDV2IRqP5fN61sz36pbut6fMVXN39yVxiTRTF3pNwVVWz2aydkqQAAOCab33rW8Fg0DwWKRAI0JY9RVEymUy5XEYBlyFD20V8Movyxo0bn3zyST/cHtCnEo8++qjXgRBCyIc//OGXX37ZaKwC6Df6+AZ5+NBqzMNVVa1Wq54EA204WGLNPOY8nU5jeBIAgK/cc889RgbOMEwymdQ0zWhPc/nODNxB/6z33Xef14EQQsg111xD/PFQIBgMrl+/fnZ21utACCFkamqKEGJnGjMAR9B7/i6KQ3UHebjbGpM680BiFK/2luMl1iRJEgQhFAr1UnQdAADcEYlEaMcl80J6mcYFevhceumlR44c8cMTFnrL8dBDD3kdCCGEfOxjH3v99df98FCAbpYDBw54HQgsI/anYe/dyGLDdMewpMsvv/zZZ5/1OgoAAAAAAAAYMJFIBHl4N0ZGRgghV155Je1HZNPBgwePHTsWi8W2bdtmLHz66acff/xx40daMd+pOD105MiRF198cdOmTXR6j3Pnzi0sLJw4ceI3f/M3/f8F6V8qmUw2/XHJ1z/88MMvvvhiqxevX7/+pptuojPl2PeDH/zgxIkTtJ/M6Ojopk2bLrnkkv5tyfn5+UKh0OkeDo6gxQJ9vvGd2kPuu+++kydPtjm47Dh06NAzzzzTezB0yzsSjOU8310w4+Pjt956ay8raXrR6RT9W3cRDN0UhJDet0Zf3XvvvefOnWMY5sYbb7ScmRcWFh577DFarvmSSy656aabPIpxaNFdlPR83HWN7t4XXHDBZz/7Wfuvp2ebc+fOfe9736M7ucXHP/7xK664otNg6Nawfyozzp+OR1Kv1yVJete73vUHf/AHo6OjS76ebpatW7fu3r3b8WAURSmXy+Fw2GYvRbpZYrHYpk2beo/E813UJkeuX8uEsYc0vTCdO3fu3nvvXbVqVacT5hno4UDeeSPXtA70pZdeShahc3TzJZPJjt5FD49cLmcsqdVq5lQqHA47Halnmp4L4vG413HZQnukWH4slUqZTKZWqy0uLhaLRfNf3/L6NgdnsVjsNJhisRgIBAgh09PThUIhl8vRH+mSSqXS23dt+aFd7OHgiO5OLy5zag+ZnJw0HzvdoWeb3oOhW96RYLo40huDmZyc7HEl9NTUYzD0b91FMMZVoPet0Vfnn38+IeTBBx+0LLdcxXz+LQaU0f/Twxg6OuUap75SqWRci5vq4uqcyWQIIatXr7b5Xnr+7Ecki4uLGzZsIITs37/fzovpZolEIv0Ixhi8WSqV7LyebpY///M/dyQSP+yidgxEkD5B95BWp3RajGB6errr9dPDwXJWaboTRiIRjA93D602UalUjCWZTMZcCSAWi7kfVZ801vwMh8ODWJ+saYm1TCbTZoYzi3A43PWYc0VRotFotVoNh8OyLAuCIIqiUbN3dnaW4zg/DGwDABhQb775JiFk7dq1xhJFUTiOM5/k4/E45kAaVvv37yeEzMzM2L+YLiws8DzfvsJuF4OrRVFcv3792bNnP/WpT9l/Vz8iIYR87nOfI4Tce++99qcJOH36dD+CEQThfe97HyFk37599t+VSqX6sVlguOm6Th+HNZ1kuh+Qh7uHXsWNI19RFPNlnmEYURS9iawPLJNMhMPhgZvxpesSa+Y+DpVKRVXVruc8M3YJXdeNRxvBYHB6epr+v16vC4Lgh5lOAAAGEW0PpzRNE0UxGo2aT/vxeHwQHyKDTXfeeef69esJIb//+79v8y0HDx5cspxyFwVZWZa9++67CSFPPPGEpVJgU7/4xS+IjcLO3ZWGTaVSExMThJBPfepTNu8xyuVyn4L5y7/8S0LICy+8kEqllnzxW2+9RQg5c+ZMPyKB4UYf3wQCAdcyMuTh7mFZNhwOV6tV2sQqCIL5t45MT+0f5ufKDMPIssyyrOUr+5OqqvQhQiKR6G7eDkVRCoUC7ctE5+HsjizLxtPcarVqvvyYV1utVvFYFwCgO3RM+J49e3ieD4VC+Xze+NX09HSxWEQSPtxYlv2rv/orQsizzz5rJ80jhLzxxhtLviYUCnURzKc+9amtW7cSQv7Lf/kvS06avbCwYGed3UVCCPnrv/5rQsi//Mu/0BbCJdEEuB/B8Dz/8Y9/nNjrtkALOvQpEhhikiTR8386nXbtQ5GHu8poEhcEwfzUMBAI2Hn2OShUVTVPxKooSjAYlCTJJ9NRtiEIwtTUVKu+TIFAoM3YAU3TaD7McZwjTxxKpZL5x3w+b1yV6RgHgzEWBQAAOvJrv/ZrhBA6dCgSiUQikWQymcvlarWaLMvojr4c3HLLLZdeeinpsHd6GwzDdH0b8NBDD73rXe86c+bMkr3T7TRT9xIJx3E33ngjIWRmZsaRLo29BPPAAw+8613vIja6LdiZ+bmXSGAoSZKUSCQIIZFIxM3uycjDXUWzuHQ6PTc3Z14+ZI/bzedrSZI4jtN13eZjZm+1eVJQLBY1TWucP9boMR4KhWKxmIPPUyzJNjE1g1u6TqBfOgBAL+644w7ll7LZ7JD1UIMlPfHEE3SEwic/+cne19bL/jM5Ofl7v/d7xEbvdFraoH+REELuu+8+Wjphz549vd9p9BIMy7L33HMPsdFt4ec//3lfI4HhI4oiTcJpB143Pxp5uKs4jmus35hMJofsibtR3DKXywmCoGkaz/N2nlD6TfsSa3TgdzAY7HQAuU2CIBjjwAkhtIQjZWkA76X3OwAAwDLHsuznP/95QsiRI0c6qgfWKB6P9/hE/v7776eVye6888427fPnnbfEPXzvkbAse//99xNCFhYWbr311l5S8d6D+exnP2t0W2jTfEWbzfsaCQwNmqEYw5EURXH5AQ3ycFcpimLp8xwOh4fsdKCqKs1Lk8mkKIq0PdycqfqZnRJr5grq+Xze5vOFdDodj8c7jUeW5UKhQKdIMfeTsQwba2w5BwAAAPvuuuuuD33oQ4SQAwcO7Nq1q7uc06mqfrQy2blz56amplqtsH3C4FQkt9xyC61388gjj+zcudPbzfLwww/T/yQSiVY3z+Ybuf5FAkNAlmWO44weyrlcrrHTa7+NtJrTDNoYGRkh75yf3Y6FhYWDBw+ay3usWrVq37597U8ZA+exxx774Q9/ePnll//mb/4maZi5vum84v6xsLBQr9d/+MMfHjt2zAj14MGDxo+HDh165plnWr191apVN91007Zt2yzvcla9XjdfRVatWpVIJEZHRx38iPn5+UKh0OkeDo6gh4zPN/5LL730t3/7t5s3b/71X//1Xtbz/PPPv/7661deeWUvK3nllVeOHz/eezD00O7xmP3Wt771wgsvXHLJJbQCcy/BXHDBBbTxp2tHjhw5depUj8G89tprL7744rp16z7zmc909EbjbBmLxehZ0Z/uu+++kydP+jzIYUUvlMQ39wbnzp0rFAq0/tl73vOeW265xXKHRi+OF1xwweuvv2557/r163ft2kVrjDviyJEjjz766Ntvv01aXBH+6q/+6v/9v//X+EbHIzl37tzDDz9M/1Lnn3/+f/gP/4FWNzTQzbJy5crGPuGOBzM/P/83f/M3tFa8catp9s1vfvNf//VfG9/YXSR+20VboXcOPg/SJ+g5f3x8/OTJk8ZCB2+66OFgWWfT2Y4vvfRS5OHdoHk4AAAAAAAAQEfGx8fRL717yWRy0Z5arUbHGHf39gESiUTC4XCtVjOWWL61h7HZR7tgNf3R8nUCgUAymaR/XBcCq9Vq5s7tDMMUi8V+fBAdfz6Uu6j/DcT5YchG05j1uGV6bNv3rdWrV3e6KYyWmT6dppwyOTnp/yCHFb28Ev/dG/zxH/+xMfo6l8sZy92/ONZqtUsuuYRG8sEPftB8f0V3XdciWVxcfPDBB43R15lMxlhON0skEnEzmI9+9KM0komJiVKpZCx39oj27S5qMRBB+gTdQwzhcNjZ9RslnMwniqYX1ssuu2wFIUTTNHMJKIupqSmO45oWglIUheM4n5QczGaztVrNn3eHqVSqcYD0kjNDDpxUKqWqqqqqPtkl+q1YLNLibe6U2dM0TRAEuiMxDCOKYjqdXiabGgAAwDVf+tKXfvu3fzsSibz22muJROKFF1648847PbngsixLS8cdOHDg2Weffe973/vwww97Vdz3lltueemll3bu3PmTn/wknU4/9dRTd999t1eVYp988skvfelLX/jCF44cObJz58577rnHzemmYDjQyZU9DOBX7eGqqs7MzFiKEGqaJopiKBTied5SszGVSkWjUfdHtLeSy+XGxsYsC7PZLMuyjswG2bVsNmsU4qPi8TjDMP6fTLsjqqpKkkSnCvc6FoeZS6wVi8U2FdT7hxaTKJfLgUAgl8tpmkb3bdcCAAAAWD44jqtWq7Q59N57773wwgtTqdTx48c9Ceb+++8vFourVq16/fXXo9Ho5s2bvSo2FgwGn3/++d27dxNCHnnkkVAotG/fPq82y3/6T/+pVCqxLHv27NlEIuHhZoEBJcuyt/fSKwghwWCQNiPTYc8cx5lblXVd53l+bm6OpuL+zLJUVa1Wq4IgEEIURSkWi7quy7JMa1l7+LBAUZR0Om1eQguk67o+OzsryzKNeQjwPB8MBguFgjFpWVPGrI9jY2MDMaM4IYTneSPlpv9p/x0dJ4piPp+PRCLpdHrIpriDAbV582ZCyNatW7dv397Lep5++ukzZ84YHf+6c/To0WPHjvUejFE0tRd0y0xOTjY+F+40mDVr1lx11VW9rKRcLuu63mMwtVrt8OHDv/Zrv9ZLJACDiGVZRVEkSSoUCnNzc0alJU/mYeV5/kc/+tFXv/rV//k//+fCwkIikVixYoX7YRBCWJZ94IEHPv3pT3/jG984ePDggQMHDhw4QAg5e/as+8FwHFepVCRJ+ou/+IuXX37Z2CynT592PxgYLPF43PubanOPdrqkcYBHqVSiv4rH45Ye8OaRKh6Kx+PT09P0/8ViMZlMGqN2SR/GS9DVLjlAqFarWSptMgxDtxgdCODzIaAdSSaTkWYs+5ux3Ph7+VCpVDIPfGrUZgC5syyVBcLhcDweN4+D6hOMD/eQzdOLt5zaQxwZ30jHIfcejCPXCxpM70MTCSGTk5M9roSemnoMhv6tuwgG48NhSYMy+HZxcbFWq33xi18cHx+nAW/YsGH//v1eBVMsFm+++WajZvD27dtduDFoqlarfeUrXzE2y+rVq3fv3u1JJIuLi3SGV2OzBAKBQqHQ4zoHZRcdiCB9whgfXqlU+rF+++PDI5GIrWdpRnuyZUiz908RfkmWZaMN32i9VBQlGo16GJUoiuaHpnQQAu3/QCM0hz3oWn0RS235bDbrn7EMrXAc10WQqqoqitI433gvRFE0VxYol8vlcjmfz09PT0uSZHwQ/dCh2ZcAAAB8hWXZu+66a+fOndFolE5HNDU15VUw9EY3HA4fPnzY26mqWJa94447Lrvssmg0GgqFfud3fqfHrkC94Dgul8t9//vfP3z4MJ2J0J99eMEPdu7c6Yfdw5s+Lc6i/c/91sFbURTLCHBzChoMBsPhcLlc1jTND/tBn8iybFmiqqr/8/COaJqm6zohxLgkO9XfXpblVkUEZmdnFUURBIFlWV3X8/l8pVJx5EMBAACgjWuuucY/D779E8m2bdv8E4wvuhyDj/kkGbGVhxvN4DRjpAOw6RLLKF9d1zOZjKIotBEvEAjwPG8uKGWuzT41NcXzfCqVoon09PR0Op1u3C6SJOVyuXK5zDCMIAiN5akKhUI8HvdbzSpLMhaPxy2FHHmeL5fLtAXV3dDc01iHP5PJ0OzRk3icJUlSsVi0pMq1Ws2p9RcKBVoXPRqNapqWSqXM3Svq9bpR/y+ZTA7x0xzwoZdeeokQQkt79r42S6+Z7jgVTI+efvppQogjXbEOHz7syJZxJJijR4/2vhIAAAA/aJxP2hO28nCaUjIMYy45JssyrSRpTjh5nqcF0jiOozn5zMyMoiiWDu2SJNXr9WQymclkOI4TRVHTNNrEZykFRytUZTIZVVXpvE3BYJDOl0ZfQAueuVw3i5qfn29V7P5b3/qWuTvxpk2brrvuOsuLV65cSQh5+OGHhzKDeumllw4ePPjEE09Yller1auuuur222+/+OKLPQmsdy+99NILL7xACEkkEo2/bbNXdGp2dvb222+n99DBYPBLX/pSKpU6c+aM5WXXX399NBp1dt4Fuvc6+F2gUz7f+IcPH/Y6hH7pcbMvLCw4FYmvvPHGG51umfn5efqfxmk7feXUqVPE90EOK+PJtZ9Pd2a+ujjSXdcPkdDNUqvV/BCMs0f0YO2iAxGk5+gecvz48T5tLmPfW/JEcfbs2SZ12gKBQNKEPjBgGMZS7YCOSDEXdaON5EYpMioQCJCGCij0vQzDmKth0VoI5kHttDXVXNCLfoR5yvVcLscwTPuB8kuNqO9YP/5sAAAAAAAAMPRYlm3SHq7rujHhNsuyPM8nEgk7fYnpC+r1uq7rxouDwWC1Wm31enNbOsdxc3Nz5rm+M5kMeWefOjrYo1wuGzN+FYtFr0aGx2IxY1pps+PHj+/du9f48frrr7/jjjuMH1966aX/7//7/9q0mVx//fWf/vSn165d62y0Lsvn842dFCybYhC16eGZzWb718tlWLcnNKL7WKvTi0+Uy+VBmXewU8YD3O40PVSHQCgU+u///b939BZjU/T13Ni7z3zmM5VKxedBDqtkMkk71/R43LmGnvp8cn6mu64fNh3dLJOTk34YHOTsET1wuyh4zrhBMp8omqYP73//+5vk4RzHdddSz3FcqVRiWTYYDNJkvlgsWnqkW17fZm2aptEE3tJtOxKJzM3NlUolQRBob3ZjWjWXbdu2rWkRCEuZiq997WvGV5Ak6Q/+4A/ar/bb3/72U089Ze57P4ga70TD4fC3vvUtT4Lpn3A4nEgkaP2CvtYsXSbbEwytTi/QV2vXru1xsw/rvdpFF13U6ZYxNkU4HPbzzrxu3Tri+yCHlVFbe7A2vk/Oz3TX9UMk1NjYmB+CcfaIHtBdFPxgyRPF6tWrHa6XznEcLaumadqSkz+1HxfdJoEnhNBmc1mWA4GA3/JVc+XqeDxufE1VVZuOKG5Ur9d5nh/oVNzy5wuHw8MxaoVhGKNYWqVSoX9cF5q/hnV7woDieX4oE87eq3Wk02lv58vsk8G9GAEAAPiTk3m4rus8z2ualk6njS6Lqqq26pfeXvtu8PSeoFAo+G26MvLOlMmceDeGGggEWm0cOhObqqoDWlrcPL6AYRhZllmWFQShcSazwUKLDuZyubm5OTcL7A3r9oTBhcaBpuhgLq+jAAAAAL87z8F1CYJQLpdFUbTMZNbd2jiOYximcQ00yw2FQqqqlstlmy3MbjJSJnNbPS0vT//PMEwymaxUKpqm0e+4uLhYKpUsw42q1SodIT9wVFU1Go0ZhlEUJRgMSpLUajbsAcJxnPuPfoZ4ewIAAAAALENO5uFzc3OEkKmpKWMJTZVJt9k4nVjbPPybDhqnE4kXCoVwOOzDSb+MlMncKmL04aR5VDabpZHTRJ12QafzUdPMnJIkqesHGR4yd5mWJIlOYjesVZ1cgO0JAAAAADBMfpWHG624uq63H5ttZs4S6RRlhUKBLlQURRAEYyGdG7yjFabT6XA4LEmS8Uaae2SzWZZlZVmOxWJtVmW8y+W+u/QrE0JCoZCx0Nik2WzWPNCO/t8IlQ4LN1Lxer0+iB2PjfHSuVyOltPjed54PAGdwvYEAAAAABgm5xFCFEUZGRkx2rHL5XIoFBoZGWlVCEpVVY7j6OQE5XKZZVlJkgghsiwzDDM7Ozs2NjYyMiKKYjabNRaKosiyrKqqwWCQvndmZoZ2r221QpZlaUMxz/M8z9NC7rlcThRFRVGq1WrTHsI8z4+MjIyMjKTTabokFovRJe6UtjKa6M35Nu0swDAMbeQ30M1uLu3GcZy54rpX1eC7ZnSCSCaToijS9ltjUvuhlE6n+zeFyTLcngAAAAAAw20FIYTn+cXFRfvv4Tiuacs2x3GaptFfsSxrZKF0DjPjx6aN7a2aymkqrqoqbSc3enoHg8FSqdS0U7rndaSDwSDNus3odGuNJWfpEss2EUUxk8nQ8eT2+yb4RC6XI4TE43H6NMGHA/gdR58T9Wnly3B7AgAAAAAMt5GOMnCgRkZGCCFbt27dvn1742/n5+dp+/bk5KQx8eA///M//+QnPxkdHf3IRz5ieT1N2iORSNOVNP7Kz2q12uHDh9euXXvllVfSJZZHEgP0Xdo4depUrVbbtm1bvz9omWxPMKN/4lanF4BBcfTo0WPHjpF3Xgp96Omnnz5z5ozPgxxW5XKZtrIMyrWMXpR9cn6mu64fNh3dLCzLhsNhr2Nx+IgeuF0UPEcPB/LOG7nGBlr6AifrtAG1ceNG+p+zZ88aC9etW0cIOXfunHkhRWcmO3XqlHkhfT0hZMUKh+d476v5+fm1a9dOTk56HUh/rVu3zoUknCyb7QkAAAAAsLwsQufopksmk61eQJ8IxuNx80Jav216etry4mQySQgpFArmhUZ99Ugk4mDkfZVMJhmGqVQq5oXY37qG7bk8LXl6ARgI9NJGCCkWi17H0g590OnzIIeV0cbodSB20Xszn5yf6a7rdRSLi7/cLD65X3X2iB64XRQ8Z2Rw5hNF0xw8EomgPbwv6CBeS6lzWnyOlqwzL6c9Z1rVY/PhxGxNqaoqSRKd2trrWIYBticAAAAAwLAapD7PA8QotJZKpYzi5zzP53K5RCKRz+d1XZckifZIp6XaLPOEG4XrotGou7F3ief5YDBYKBSMSbaaMma9HhsbwwzYbWB7AgAAAAAMK+Th/SJJUjQalSQpFosZZdLp5G2iKM7OzsZiMTrvGm3wtNRFp9lXIBBoOjebD4miqKrqklPEGy+gzyCgFWxPAAAXDFYRFgAAGBq4/PQLz/PJZHJmZkYQBFVVjTRJEASe51VVNc/BRt45c5ssy3SCaPNE4j7XKlRaW978ssbJ26ARticAgAseeOABTdP6N/ckDJ/5+XnPp8glDfV9PVer1bBZADqCPLyPstmsoijlcpnjOFmWjXyJZVnLJT8cDtPEmxCiqiodQB6PxwelMbwVywh5Qoh5JnnoFLYnAICzgsEgynCATfRWbckhY8sN3SyHDx/2z1DKl156CQ/XwP9Qp62/FEWJRCLVanVqaiqVSlkGgRtoa7miKIqi8Dxfr9fD4TCt6zbQcrmcZUkmk2m1EWBJ2J4AAAAA7Z05c8brEACWhjy8v1iWVRSFTt8yMzMTDAZTqZSiKJbciT6MF0UxGo3W6/V4PL7kwGCfU1VVEITGaeur1Srtlu9JVIML2xMAAMBbmzdv9joEP7rooou8DsHKhyEBNBppNacZtEHH6F555ZXXXHONzbcsLCw8/vjjx44da/+yjRs37tq1a9u2bb0F6LGHH374xRdfXL9+PcMwDMOsWrXK+NWJEyfq9fprr722devW3bt3exjkAMH2XFZmZmZIh6cXAB86dOjQM888QwiJxWKDflGDPjl48CC9LzJmm/e5+fl5v/VI98Om8+Fmceq0M3C7KHjOOBzMN3L01s7i0ksvRR7eDUutLAAAAAAAAAA7wuEw6rR1L5lMOlXPXFGUaDTq4AoBAAAAAADAnzA+HAAAAAAAAMA9yMMBAAAAAAAA3IM8vL80TRNFkWXZkZEROou41xEBAAAAAACAl5CH95GqqhzH5fP5er1OCCmXy7FYDKk4AAAAAADAcoY8vI8EQaAZuFkqlWp8pWU6cQAAAAAAABhWyMP7RVGUarXauLxarSqKYllYKpVcCQoAAAAAAAA8hjzcF2h7+NTUlNeBAAAAAAAAQH8hD/cAx3GWJXTQeONyAAAAAAAAGDLIw/ulVVKdTCZZljUvkSSpXq9HIpFgMOhKaAAAAAAAAOAZ5OH9wrLs9PS0eQnDMMlkMpvNmhfqup7JZAghiUTC1fgAAAAAAADAC8jD+yidTtP/RCKRYrGo67olCSeEpFKparUaiUQEQXA9QAAAAAAAAHAb8vA+4jiOtnXPzc0VCgXL5GSapgmCkM/nw+EwJhUHAAAAAABYJlZ4HcCQo7OFp9PpfD4vy7IgCHRwuKZps7OzhBCahFtGjAMAAAAAAMCwQh7ed6lUijaMz83N5fN5YznDMKIoptNpJOEAAAAAAADLB/JwN/A8z/O8pmmqqpZKpbGxMY7jeJ73Oi4AAAAAAABwG/Jw9wSDwWAwiHpsAAAAAAAAyxnqtAEAAAAAAAC4B3k4AAAAAAAAgHuQhwMAAAAAAAC4B3k4AAAAAAAAgHuQhwMAAAAAAAC4B3k4AAAAAAAAgHuQhwMAAAAAAAC4B3k4AAAAAAAAgHuQhwMAAAAAAAC4B3k4AAAAAAAAgHuQhwMAAAAAAAC4B3k4AAAAAAAAgHuQhwMAAAAAAAC4B3k4gBtUVc1ms15HAQAAAAAA3kMeDuCGVCqVTqe9jgIAAAAAALyHPNwzmqalUild170OBPpCUZRUKuV1FAAAAAAA4DvIw72hqirHcTMzMzzPex0L9EUmk5mZmfE6CgAAAAAA8B3k4R5QVZXn+Xq9Tggpl8toNQUAAAAAAFg+kIe7Tdd1QRBoEk7NzMxomuZdRLAElFgjhOi6LkmSKIo8z/M8n0qlsNMCAAAAAHQHebjbRFGsVquWhZlMxpNgwA4HS6xpmibLsiOrco2u66lUamxsLJFI5PP5ubm5ubm5mZmZUCgkSZLX0QEAAAAADB7k4a5SFGV2drZxeT6fR+uifzheYk3XdVqQLxQKxWKxAWpdNwoZNP1tIpHAfgsAAAAA0Cnk4a5q0+6NJnH/cLDEmqqqoigGg8FyuWwsrNVqjqy8O7Isi6Jop1A/LWTQ2H3DsjbnQgMAAAAAWBZWeB3AMqKq6tzcnGVhMplMJBKhUEiW5Ww2y7KsJ7GBszRNo4nu1NSU17E0IcuyqqqKolj2N13XjedB586dy+Vyb7zxRvtVPfjgg/SxQiKRCAaDfQoYAAAAAGCYIA93j6Io5h8ZhpFlmc5bFolE5ubmaEOlR9GBY1KpVJvmdIZhotGom/FYCIIQDAZ5ng8Gg4qicBxn/CqVSuXz+Y7W9swzzzzzzDOEEJrYOxwrAAAAAHRIUZRisajrOh0/yLLs1NQUZmjyG/RLd0+xWDT+zzCMoijG5OE0FzK/APzGfom1Nkl4LpfTNM3zSeM5jhNFsV6v8zxvTp5DoVAv63QiNAAAAADohq7roiiyLBuNRmdmZmh5XdpJM51O41bNb5CHu0dVVeP/kiQ1HgxNS7iBt3ovsRYIBJLJZDgcJoTQk6PzUXaOtsnX6/VoNGqUPU+lUouLi4uLizZHsCeTycVfGqDicwAAAABDRpKkYDCYz+eN2ZEDgUCxWNQ0TVGUTCZTLpfRddFXkIe7xzgqpqenBUFo+hocHv7hSIk1evrz4ch/c+eLRCJhaeo3PzNqJR6PI/cGAAAA8JyiKIlEwsg1GIZJJpPmPpj0P3Zu8MA1GB/ugTbZC61Q7WYwYNF7iTWae+dyuXK57M+/pqqqlqm/O+2qFI/HMXk4AAAAgB+YK0xFIhHaNm5+QaFQIBhF6DNoD3dbJBJpU1ba2xmtIJVKhUIhcwO4mc0SazzP+6f/eSNamMD8xLRQKDTdJzdu3Ni4MBAIFAoFJOEAAAAAfiBJEp1llmGYTCajKIrlvk4URVq9CHm4r6A93G1NEzlazJCgu4jX2pdYEwTBt9m1TZIkJRIJ40daL7DVSXnfvn1TU1O0eZ8QwnFcNBr1Zws/AAAAwPJUKpUIIeFwuLH+FB1lSVuYpqenB/0+dsggD3db05wH6bc/BQIBQRAURSmXy45MKUcn9/KwtdwyZUWbJJwSBKFVLQMAAAAA8JyiKIFAQFEUy+2lZSZdc0sM+AHycLc1pj2qqtLOJOArxWKRtv323gLcOObcqykcBUEwZgiPRCLongQAAAAw0KrV6q5du8xJuKIoqVTKPNAyHo+jS6PfYHy42xobQmnhBAp5kbeKxWIul6NzjDlytpIkSRAEy5hzD6sASJIUiUS8+nQAAAAAcNzjjz9O/6NpmiiK0WjUkoSjso8PoT28e4cOHeqoVXPr1q3Hjh277bbbRkdHzcu/+tWvGv//wQ9+4FVLKRh++tOfElOT9dGjR0mHLdgLCwt0rE7TLkCd7jnOeve7371ixYq33nrrySefbNwbqfn5efLOOM+dO3fkyJETJ07QAm8bN2684oorGIZxLWwAAAAAaIVhGIZhjh07Zl54wQUXrFmz5oknnrjmmmuuuuoqr2KDRlNTUyOLi4tehzF4RkZGvA4BAAAAAAAABs/4+Dj6pXcvmUwudiKZTBJCcrmcsaRWq5lbFMPhcEcr9DP6ZS3i8bjXcdlCe25bfiyVSplMplarLfn6NvtMsVjsNJhisRgIBAgh09PThUIhl8vRH+mSSqXS3Xekf6CRkZGdO3c2/VC6h5dKJePjmuo6AGilu9MLgN8YV4EuznuwTBjjpLwOBKC5QdlFaZC5XM7SUTEQCBhn4EwmgxOyC+gttOVGrukt9GWXXYY83D20RlelUjGWZDIZYxpnQkgsFnM/qj6hZcnM6GwKngTTC3OJtXQ6Tb8CrX5hcw3hcLjrMeeKokSj0Wq1Gg6HZVkWBEEURUVR6G9nZ2c5juuu2D6dP29xcfHJJ59s9XdZWFjgeb59EUFZlrv4dAAAAABwUCKRMNIKhmGSyaSmacadJ/0PZmjyFeTh7qEHgJG3KIpinkuAYRhHZsbyCWNGdCocDhvZ46BoU2Itk8m0mWnc/DCyUqnQmRu7m6jM2CV0XTcebQSDwenpafr/er0uCELjU48lGY/rCCGJRKJpOn3w4EHzc6KmPKw5BwAAAAAWkUhEVdVsNmteSMtCoyC0ryAPdw/LsuFwuFqt0iZWy7TMHs4p3Q/m520Mw8iyzLLsQMxEraoqfYiQSCRmZ2e7WIOiKIVCgfZlCgaDXUciy7LRFl2tVs0t8ObVVqvVThulVVW1tIE3PS+/8cYbS64qFAp19NFekWUZTfcAAAAwxBiGyWQyiqJY7j9FUaQNSMjDfQV5uKuMJnFBEMwtjYFAwPLUaqCpqmruGENPB5IkdZfWukkQhKmpqVY9sQOBgJ2xAxzHOfLEgVZcN+TzeaOXgTEPOWVu3F6Soig8z5v/QIVCobvnBQzDDMSzFUJIoVCIxWLojgUAAABDiXY+tQycVFWV47h8Pk8ImZ6eHqY2vyGAPNxVNItLp9Nzc3Pm5YM4cLoNcxd0SZI4jtN1fSDmY2vzpKBYLGqa1uY5oqZpzra4WpJtYmoGt5xG7fdLlyQpGo1anpJ0nUsPUCcOSZICgQDP85YREwAAAABDQFEUy21qKpWampoyxlc2nUwXPIQ83FUcxzVWn04mk52W7/I5OgSFEJLL5QRBoFUilhxp7EN2SqwZI7dDoVAsFnOwX4MgCMY4cEJILpcz/m9pALffmm15GtJ4yrYvHo8PUCcOlmVlWe56OD0AAACAn5mbRugNnrmYUTweH7J0YwggD3eVoiiWPs/hcHiAkhk7VFWlD96SyaQoirQ93FzqzM86KrFGfxsMBhsLuTVKp9PxeLzTeGRZLhQKdP4wcxk/S6NuY8t5K+am70gk0ksSPnCdODiOSyaT5XJ5mAoiAgAAABg0TRNFMRqNmu9OB/G2bTlY4XUAA2x+fr6jGuAvvfSSpTVyzZo1t99++8AVEm/v7rvvJoRcf/310WhUURRLHxiff9kvfelLx48f/9a3vnX48GFN02i6S1NrI/Ljx4+//PLLpEX2a+wVlncRQmKxWBdfn2XZaDSq67o5AHP/+TVr1rznPe+xueZYLFYqlQ4fPkwIOXnyZKt30XM3y7KNTcebNm369Kc/vWvXLp//KZvasGEDIWR2dvaGG2644447vA6nnU5PLwB+Mz8/T/8zKM9hwX3Gk2uc7sCfBmsX3bx58+bNm+k9nuHqq6++4YYbBnHeogFlXPKWvJE7e/bsSKu5xaGNkZERr0MAAAAAAACAwcOyLNrDuxeLxWz2ND59+nQqlfrxj3/c3dsHSDKZPHPmTDabXbt2LV0SjUbNL+iosrdXksnk4cOHjVDNP1q+jtntt99+9dVXG1+8H06fPv2Nb3zj29/+Nv1xzZo1f/Inf0KHr3fq85//fKlUOu+88/7kT/7kox/9qOW35XI5lUrRXfT06dMPPPCAMebf7Pbbb7/hhhu6+HSvHDx48Bvf+IbxYzab7W7r9RXdx4by/OCVW2655cyZMzZfjC3vlHw+T88b/jzQ+g17nR308koG5N7Ab7CPuWBQdlF65+DzIJcJegtN3nnQNU0f3v/+968ghGiaZi4BZTE1NcVxXNNCULQGgE8KJmez2Vqt5uZY623bttkseCCKoiUJJ4S8/fbbQ1YvIZVKVatVVVXblA0biK88NjZGTKFafjQLBAKCICiKUi6XaYf8/tE0TRAE2t2FYRhRFNPpdC9HXzQaffvtt++6665cLtd0yPS2bdtYlhVFsdVEbvfcc88f/uEf9jJHusssX/PP/uzPNE3zyRnMwv7pBZZk/1aVYMs7x7gjDIfDy3CTYq+zg15eyYDcG/gN9jEXDNYuOhBBLh9LHnSrV6/+VZ02VVVnZmZmZmbM4/jpWP9QKMTzvGXq3VQqFY1G/TMdfC6XM44WWhtsZGRkZGSEZVlBEDycNzibzdJZ+wzxeJxhGP9Ppt0RVVUlSaJThXsdi8NalVijM5lls1kXEjlZlmm5u0AgkMvlev9c80PTRCLRdMa1hYUFnudbJeFGYF3H4LLGBwr1eh3TmAEAAACA+1YQQoLBIG1GpsOeOY4ztyrrus7z/NzcHE3F/ZllqaparVZpLWhRFFVVlWWZhkqnR56dnW3V6NdXiqKk02nzElogXdf12dlZWZa7nrrZb3ieDwaDhUKhaQdmg1GpbmxsbCBmFCeE8DxvPNCiuXculyuXy649dxRFMZ/PRyKRdDrtyIfShybmJU0fqB08ePCNN95ov6pW9eF9Rdd1QRDm5uYsy6enp/3zJBEAAAAAlo+lx4ezLCtJ0tTUVL1ez2Qyxu17Npv1T3t4Lpebnp4OBoOSJMmybO5ryvN8NptNJBKpVEoQBDf7oNK7f/MShmEURaEVsGdnZ0ul0tDk4fTxx5L9DowX+LMzMJXNZltVOKRpcPtnDQ6iT8FoX/S5uTld1zmOSyQSvRx39MmUMZ07wzCSJDV9vrZkEk4ICYVCXUfiDvM2NJuensYcHgAAAADgCVt12oybfksfTv+MQ5BlmbbhFwoFOtmSOc2jOUa9Xpdl2c0mcVEUjWyHmJJw8stNZ4Q9BFp9EUtt+Ww265NnN21wHOeTIEVRNCeQ5XK5XC7n83maQxo7OZ3k3M6+JEmSeSY5uk92/WUZhvH/g6SmSTgm0gQAAAAADw1DvXRZluv1upEPVKvVUChUKpWM7MJIVyqVimtRKYpiGQFuTkGDwWA4HC6Xy5qm+bOrvyMaBw+rquqTFNdxqqoqikJTYkdWKMtyqyICs7OztFmbPnXK5/M2923LWIBeknDyy/y/67e7gJbQsyz0ZIgKeCiTydgfQNFmTgQA+7DXQb9hHwMYdLbycKMZ3BhxbRR5sozy1XU9k8kY976BQIB2Czdu1s212aempnieT6VSNJGenp5Op9ONWYEkSXQ4Lm18ayxPVSgU4vE4XchxHB0Fas73jL7QU1NT9jaLAywJTzwet9z602Y6mrm5FpXLGuvwZzIZl0cH9JumabquE9Pe5dS490KhQOuiR6NRTdNSqZS5e0W9Xjfq/yWTSZtPcwRBMN4ViUR6ScLj8bj/e3M0bpbp6ekhPuKgqUEpRQHDBHsd9Bv2MYBBd97SL/nloc4wjLnkmCzLMzMzlqnqeJ6XZVmSpMXFxVqtRm/6m6bWMzMzpVKJds8WRXF6enp2dpbneUvXd1EUE4lELBZbXFykw4+DwaB5EDIteGY850un08lkMplMmrvL0tG8bvahlSTJ3AoXCAQaMxaatpVKJXdCcpmqqk0rY1Wr1cba+wNKkiRBEEKhkPlv7WDdstnZ2Ww2m81meZ4XRVFRFIZhGl/WUT4sSZIjM4gOSr/uYDBoeRgUi8W8CgYAAAAAgBpZXFz81Q8jI+SXUyIbC2njNi3mZF6eSqVmZmYikYhR0UpRlGg0yjCMuUxaMBisVqvFYtE8mJy+lyb2xvM8WpU9mUwaSQUdyzo9PW10b6YfEQ6HjUROkqRUKkUbJJvKZrP08UGhUHAqD6cbauvWrdu3b2/6gnK5bA5pcnLSmFONevXVV0+cOGF+Dcuy69atu/DCC1evXu1IkB567rnnTp48OTo6unr16tWrV59//vnGr06dOnX27Nlz586xLBsOhz0MsmunTp167rnnzp071/S3bfaKTj3++OM7duwwb70333zz6NGjtVrt3LlzK1asGBsbu/DCCy27lh3z8/OVSmXFihWW9Rtqtdrhw4dXrlz585//3PKr0dHR7du3b9y4sdMP9dDRo0ePHTtG/3/11Vc3/cr+QZ9eObgjAXjCOO4ar4AAlHGzFIlEvI4FoIlB2UXpnYPPg1wm6C00eeeNXGPDJH1Bk37puq6bi1rzPJ9IJOz0JaYvqNfr5jJpNA9v9XpzpxrapdzcUprJZMg7x7TQZL5cLhszfhWLxTbZtaqqdCW5XM61xvCzZ8+aE+wtW7aYb0FaZXG6ruu6fuzYsS1btmzfvt3nqUJ7l1122YkTJ06ePLl27dp169YRQt58883Tp0+fOnXq/e9//0A/aKCPGFr9dnR0dHx83KnP2rVrl/F/Y3tu3Lhx48aNxvbsbmNu27bt/PPPP3r06OHDhycnJ1vtbJs3b167dm2tVjt79iwhZN26dWNjY4N4P719+/azZ8/SP9xbb7010AcXAAAAAAyDRRO6JBKJLNqQTCYbX1wqlSqVCu2UXiwWk8lkIBAghBSLxcb3Tk9Pt1mhUXfK8l76sCeZTBqvKZVKTSMslUoMwzAMUygU7Hwj+2hgNIZGNPM30A1CNY6XbophmFZfalDQv6ZFPB73Oq5etfmrWXZUZ/Vje9IDxHIYUnS8Sas9fBDVajXa/yKXy3kdyxLan14ABoVx1urruREGmtF853UgAM0Nyi46EEEuE8aQbfONXNPEIRKJ2Bofbh/HcbQCczAYtKSjjdpXlrIMFLegzeayLAcCgaa1plRV5Xk+GAzSstI2YneMuXJ1PB43vqaqquYpo9qo1+uDPoi6caRAOBweiBHFHQmHw7lcjiZ4fZ3Grx/bk+M4VVXNRR+GGMuydIB9+2EsAAAAAAAucHLeMl3XaaE186hvVVVb9Utvr303eJp7txryreu6IAg8z5vnWKYhuVDh2fwEwZx4N4YaCARabRw6E5uqqgNaWtzyGCUcDht1BAYawzBG0fJKpUIfstBCgH3Vp+05xHPmUZIk0b8Oy7JTU1PZbDaVSg36Qy4AAAAAGHROtocLglAul0VRtMxk1t3aOI6j1aEta6AJSSgUUlW1XC43tjDTxwG0crs5iXXtztv4IHNbvSzLRsrNMEwymaxUKpqm0e+4uLhYKpUshayr1eqSfQp8y7y1GYahfwuXOyb0g6IohUKB9lNyM4kd1u3Zb4lEYm5ubm5ubnZ2Np1OJxKJer1OT1NehwYAAAAAy5eTeTitBWeeo5umyqTbbJzeK5tn9tI0rVqt0hnICoVCOBxuzIVochKLxRQTWZbn5ubMJd/6x2gvNXdUNkYLMAyjKEo2m6WR00SdduaXJKlYLJrnppIkaRD70KqqamwE+n2DwaAkSbOzs57G5QCO49zPfod4e3oln8/7f/JzAAAAABhWv8rDjQY3Xdfbj802M2eJtCRboVCgC+nAbGOhoih2WqTNK0yn03QQrPFGo285y7KyLDdOBZxKpebm5srlcvSd3Jw0mH5lQkgoFDIWGps0m82aB7TT/xtfkOd58zTR9XrdmLNtgJi7TEuSxHGcruvmXhLQEWzPrhkVVhiGyWQyxWKxUCgkk0k6aeIgHlwAAAAAMATOI4QoijIyMmK0Y5fL5VAoNDIy0moAqqqqHMfNzMzQF7MsS+tFybLMMMzs7OzY2NjIyIgoitls1lgoiiLLsqqqBoNB+t6ZmRnarNdqhbS0EsdxtJ85LQKXy+VEUVQUpVqtWlomVVWlK2nFnbHWRhO9Od+mnQUYhrF0iKWb3VzajeM4c0uduTvAoDDGS9Pp4jRN43neaNGFTmF7ds3oAkPHy/A8LwhCNpvVNC0SiQxiZxMAAAAAGAIrCCE8z7eqqN4ULbPcdLmmafRXLMsaWSidkNz4sWlje6umcpqKq6pK75iNnt7BYLBUKlk6pXMc19EX6ZNgMNg4XXskEpmbm2ss7U6XWLaJKIqZTIaOJ7ffN8EnjMEIyWRSFEVJklKp1HAnjel0un9jxZfh9nQQPZTq9bplTAo9sXgVFQAAAAAsc07WSyeEsCzbdPamplOL2df4dj/UeT506FDTvsEvvfQS/U8+nzeGhf/rv/4rIaRUKjV9y9zcnGX5+973PpqHN/7K5x577DFCyOWXX04ISaVSlh4Kg/VdWjl69Ch553dhWbZPX82T7Tk/P09a7+GD5eKLL37mmWfMB+NAGI6ND8vZoUOH6H8G7ugD19CLKRmWewMYPoO1iw5EkEOP3kITGzdyJ06cGPFDA/LAGRkZ8ToEAAAAAAAAGDzj4+NO1ktfbpLJ5GIL4XCYEBKPx80Laf226elpy4uTySQhpFAomBcarQeRSKTVp/hQJBIJh8O1Ws1YYtloHsY2iLzannT3a7OHD5ZMJjNAx9GSpxeAgUAvbYSQYrHodSzgU0YpTa8DAWhuUHbRgQhymTAyOPONXNNE8rLLLkMe3hd0VnNLNWZafI6WrDMvHxsbI63rsfmhB75NqVRKVVXLtO3QNWxPp9B+QRgQDgAAAAA+gTy8L0RRDAQC9XrdPDCA5/lcLkcIyefzgiAYtZrp6HdL6WajcJ07c573TlVVSZLo1NZexzIMsD2dJcsytiQAAAAA+ITDddrAIElSNBqVJCkWixl15ujkbaIozs7OxmIxOu8aTQ8sddHpVFWBQMAyN5tv8TwfDAYLhYIxyVZTxoOJsbEx1JNoA9vTWSzLolsBAAAAAPgE8vB+4Xk+mUzOzMwIgqCqqpEDCILA87yqquY52Mg7Z26TZZlOVWWeSNznRFFUVbXV/HMG4wVIitrD9gQAAAAAGFbIw/som80qilIulzmOk2XZaBVvnN0tHA7TxJsQoqoqHUAej8cHpTGctH5kYKktn81me5zEbpnA9gQAAAAAGFYYH95fiqJEIpFqtTo1NZVKpSyDwA20MVNRFEVReJ6v1+vhcJjWdRtolkp15J3N/tApbE8AAAAAgCGAPLy/WJZVFIVO3zIzMxMMBlOplKIoloScdk0XRTEajdbr9Xg8Phz5Fa1LZ5bJZFo9jIAlYXsCAAAAAAwB5OFuyGazpVIpEonU6/WZmZloNDo2NjZiks/nCSHVajUcDheLxSFoCVdVVRCEubk5y/JqtUqHx3sS1eDC9gQAAAAAGBojreYWhzYsY3QBAAAAAAAA7LjkkktQp617V1555TXXXOPIqubn5wuFgoMrBOgFdkgAAAAAgD6ZmppCHt69a665xql5xRRFKRQKDq4QoBfYIQEAAAAA+gfjwwEAAAAAAADcgzy8vzRNE0WRZdmRkRE6i7jXEQEAAAAAAICXkIf3kaqqHMfl8/l6vU4IKZfLsVgMqTgAAAAAAMByhjy8jwRBoBm4WSqVanwlpoAGAAAAAABYJpCH94uiKNVqtXF5tVpVFMWysFQquRIUAAAAAAAAeAx5uC/Q9vCpqSmvAwEAAAAAAID+Qh7uAY7jLEvooPHG5QAAAAAAADBkkIf3S6ukOplMsixrXiJJUr1ej0QiwWDQldAAAAAAAADAMyu8DmBosSw7PT09OztrLGEYRhTFbDZrfpmu65lMhhCSSCTcDhGgBZ7ni8UiOmgAAAAAAPQD2sP7KJ1O0/9EIpFisajruiUJJ4SkUqlqtRqJRARBcD1AgJZ4nrd03AAAAAAAAEcgD+8jjuNoW/fc3FyhULBMTqZpmiAI+Xw+HA5jUnEAAAAAAIBlAv3S+4vOFp5Op/P5vCzLgiDQNkZN02iXdZqEo+ERAAAAAABgmUAe3nepVIo2jM/NzeXzeWM5HS6eTqeRhAMAAAAAACwfyMPdwPM8z/OapqmqWiqVxsbGOI7jed7ruAAAAAAAAMBtyMPdEwwGg8Eg6rEBAAAAAAAsZ6jTBgAAAAAAAOAe5OEAAAAAAAAA7kEeDgAAAAAAAOAe5OEAAAAAAAAA7kEeDgAAAAAAAOAe5OEAAAAAAAAA7kEeDgAAAAAAAOAe5OEAAAAAAAAA7kEeDgAAAAAAAOAe5OEAAAAAAAAA7kEeDgAAAAAAAOAe5OEAAAAAAAAA7kEeDgAAAAAAAOAe5OEAAAAAAAAA7kEeDgAAAAAAAOAe5OEAAAAAAAAA7kEeDgAAAAAAAOAe5OEAAAAAAAAA7kEeDgAAAAAAAOAe5OEAAAAAAAAA7kEeDgAAAAAAAOAe5OEAAAAAAAAA7kEeDvArsizv27dv3bp1XgcC4Av0iPj1X/91TdO8jgUAoI80TUulUps3b5Zl2etYAGBZWOF1AADeU1X13nvvlWX57NmzXscC4D1VVQuFwn333Xfy5Em6RNO0YDDobVQAAI7TNE2W5fvuu+/IkSMjIyOLi4ulUkkQBK/jAoDhhzwcmlNVVVGUVCrldSB9pGlaLpejyQa9+nodEYCX6P3oPffcs7CwYDkiTp8+7WFgAADO0nVdluWHHnroO9/5jrGQnvQWFha8iwsAlhHk4dBcKpWam5sbyjxc13VJkujDb2MhknBYtuj96P333//UU08ZCy1HxI9//GPX4wIAcJ4sy48++mibHnDmewMAgP5BHg7/RlGUYrGYzWa9DqSPJEmyPPxutHbtWjT9wTIhy/I3v/nN9kfEu9/97p/97GfhcNi1qAAAHEeH23zta19rmn7THkAXXHDB66+//uEPf9j98ABgGUKdNvg3mUxmZmbG6yj6gtaauuCCCxKJRGPKMTIyQgiZmJjIZDKVSmX79u1exAjgHlVV6RERi8VaHRGbNm2iR8TFF1/sRYwAAA7QNC2bzW7evHlqauq//tf/2jQJX7169Z49e0ql0mc/+1lCyOjoqOthAsByhPZwGFqNtaYajY+P33rrrYlEAjWoYOiZCyKcd955b7/9duNr6BERi8U4jnM/QgAAR9DhNnfffXf7AWh79+79rd/6LaMqW6FQcC9EAFj2kIcPoeVQYq2Nxtqnja9ZvXq1IAh79uzhed79CAcRvacplUp0/iqO4xx/eOHCR7jzKe58kY7iMQoiGEeEJQmnR4T5frSLT/HPt0YwPo8EoH/sDLfZsWPHvn37BEFgWbbHj/PPYeWfSHwVjH8iAWhiETpHN10ymfQ6kOYikUgXf1nLu+iPlUqlUCg4Gl2/1Gq1XC63Y8eO9jv8tdde2/4bTU5O4rgwq9VqyWSy6cbM5XKD8hHufIo7X8R+MLlc7tprr13yiMjlcrVardV66BFRLBbbfJCvvjWC8XMkAH1SLBb37t27evXqpvu5ZQBaq5XQw8Tm3Z1/Div/ROKrYPwTCUAryDe6QQ9j/+ThxWLRHEzveXitVjOXZcpkMo7F2geFQmHv3r1NT7WGiYmJ9smGAXm4WalUCgQCbTZsmxsa/3zEMH0RO+gR0ep+1DgiMpmM/SOiVR7un2+NYPwfCYDjKpVKMpkcHx9vs4dfcMEFyWSyVCotuTb7ebh/Div/ROKrYPwTCUAbyDe6QY9h/+ThTZuyu1tJqVSKx+MMw5jPVv75pmalUmnJh9/j4+NbtmzpaGsgDzeUSiXLntCox2c0LnzEMH2RJWNocz963nnnEULGx8fpC+yvtk0e7odvjWAGJRIAB1UqlUwmMzExQX55uW+0evXqD3zgA6STexibebh/Div/ROKrYPwTCUB7GB/evfn5eUVRvI6CEEJqtRohxAjG8qMdx48ff/nllwkhU1NTjb/1zzclhBw/fvzRRx/9h3/4h3q93uo1q1atuummm3bt2nXxxRd/5jOfIZ1sjVOnTnX0+mF1+vTpvXv3njlzpv3LyuVy19vKhY9w51Pc+SKtHD9+/Iknnvibv/kbXddbvWbVqlVXX331zTffTI+IkydPdnpElMtly3JvvzWCGaxIABxx+vTpJ5544rvf/e73v/99Y+FiQxWYD33oQx/5yEduuOGGfD7/wgsv2L+HmZ+fJ0vd8/jnsPJPJL4Kxj+RALQXDAabV7GC9lo9fAUAAAAAAABoY2JiAu3h3YvFYvF4vP1rDh48+MADD5w5c+b666+/+OKLN2/efPr06Zdeeunb3/42fVa3Zs2a66+//hOf+MTatWu7jiSZTB4+fLhYLJp/PHDgwEsvvbRr164l3x6NRlv96vbbb7/66qu7iC2fzzfO/3H99dffcccdna7Komm09OF301A/85nPVCoVY+MsqdPX91u5XL777rsXFhauvvrqq6+++syZMw888MDCwgIh5Oqrr/70pz+9efPmfnzunj176Ke0sWbNmgMHDnS967rwEe58irMfQfdwO6cX6pOf/OSJEycsC3/jN37j4x//uINHRDabNdeMIG79+WxCMD6MxLgKNO48ABS9XSGE2DwjzczMNL6SYZiPf/zjv/Vbv9V4NaQ7of3TqZ3X4wD3eTDORtLpLgpQLpfplFXmM0nT5GVsbAzjYLtBN9+SI4jo1mcYprE6iKUQGsMwbcoRL6nHEmuW3SIQCCSTSbqSrkNqvIaFw+Gu19YYrc3ap4udj/f21fhw47xv3nqVSsW859ipPdMp80e00WPhABc+wuZksL18Ch0G4uBHdPp6WiKBHhGbNm3q0xFhOUG5s4fY5MJfeUCD8TYSo1JxL1c3GG707oXYPiNdeeWVxq67evXqvXv3tr8CdlT/3M7rfXXq808kQ7xZOt1FAczNosbCpvthJBI5z87+Cl0QRTGfzxNCFEXhOM7yW5ZlFUUxEuZ6vR6NRiVJMr9G07SOxq6oqiqKYjAYNI/ktJkkGIrFoqZp2Wy2x0k16TyNhnA47Ow4nM997nOVSuWf//mfU6nUEM8DKYoi/Y+u68bo32AwOD09Tf9fr9cFQWgzMLg7lj9fU/F4PJvNOvu5jn9EqVTq96eoqtrvj2hvxYoVhJDPfe5zpVLp+PHj7hwRPtlDKBf+ygMaDN03/BAJgCPoY8cPfOADhULh9ddfv//++xvvr/rKV6e+d73rXT6JxFebhRYl9UMkAEtCHt4XsizTJDyZTLa6SLAsK8uyeUkqlTLOZbIsh0KhaDTKcVz7LEvTNPqCqampfD7fpnpZK8ViMZfL0YcCPM93+vamzMkJwzCyLLMsKwiCIysnhGSz2SFOvylZlqvVKv1/tVqlvVwo83evVquWHckF8Xjc8thoED/CnU/p90ds376dEJLNZl2+H23PnT+fTcs2mPaTOflqswDYcdVVVxFCbrjhBgdvJ5zl5mHVviS4rw5wN4Np34zkq80CgDy8L2jKxDBMOp1u87JgMGjuv12v1432z1wuR//TvqJjKpUKhUKNpYwphmHajP028DwvimKPDeBmqqoajwMYhlEUJRgMSpI0Ozvr1EcsB5aGtXw+bzymsZS179OwpY0bNzYuDAQChUKhr5cxxz/ioosu6venNJ0/z4Vt5S2v9hD/B+PCLtd1GJ5EAjBMfHK2odOy+iESqulwa/eDufDCC5sux3kPfAh12pwnSZLRjDk2NhYOh3meb9UHJpFI0JZzam5uTtO0YDAYDAbn5ubowjYNvzMzM61+lcvlBEFwMLu2z/zgQJIk2qRvbs4FOxrnkDP2BMuf1fF+6dS+ffumpqboUAVCCMdx0WjUqR4ThkKh0O+P+Iu/+Atd1/v6KRMTE5///Of7/UX8xp09ZBCDcWGXs4P2S//CF75w4sQJP2wWgOHgk7MNPcBduIbadOWVVyYSCc+Dod31cd6DgYA83HlGMyZtEy6Xy7RNu+k4Uo7jGIYxdybP5XLZbDabzeq6rqqqIAj2u5sGAgFBEBRFKZfLRtN6L1RVVRSl09Zyo1IRfRagaZogCF10mF/mBEGYnp42OhEYXSRIQwN4/7roC4LQ7+5/LnyEO5/izhfxG199awTT1K5du3ADCuAs/xzg/omE+CkYnPdgICAPd17TfLtcLkuS1DQ35jjOaPo23t44enxJxWKRnnR6P/WYx5zTJfZbs1VVpf3kk8mkKIqSJKVSKSTh3ZFlWZblUqkUi8XMj2MsNVEaW84BAMCCXtc86SYGAOAITdNYlsV5bDhgfLjzWo3WbjWfTS/VlRwvsSZJkiAIljHnHRVdp822RjnKRCKBJLwXgiBYSnBpmmYeac8wjE8ePwMA+JMsy/v27RsbG/vd3/1dr2MBAOiYruuSJF133XWhUCiTyXgdDjhjpNWcZtAGnap369attFKxhblx24xlWfPM3oajR48eO3ZsyZe1US6XdV03Jjm0/GjHqVOnnnvuuXPnzjX9batv2qhWqx0+fHjt2rXGJJ+WrdFRVE3RFdpfz9NPP33mzJn+vd59zzzzzOnTp40fJycnx8bGnP0I+ne0/3fvTqd/yi7Qg6sfm8hAt9WaNWtoId/e0c1if+P3ew+nr7dsQ3f2EJvoX9lXwfR1l7OPXgu8Csa4tHm4NU6dOvXKK6+cPHny7bffpkscPFShd3QXJbYvBJ0e7I6/3lenPv/crtDN0sXtaz80vWZ1rdNdtB9OnDjxr//6rwsLC8aSJffAN9988+TJk6dOnTp79iwhZN26dRdeeGHTgrK9cOFTBvEj6OFA3vlnapobbt26Ff3Snbd27VpzmmRw/ADo2qlTp2q12rZt2+iPzz333MmTJ1u9eHR0tP3kN2bz8/Nr166dnJzsPUiXnTp16vzzz/fP36ipN9988+jRo8betWLFissuu8wPt/swlOhB4XUUAB07e/bsq6+++pOf/OTNN9+0/KrV42ZY5nC6A785derUyZMnX3nlFeMxouFnP/tZq3e9+eabx44dMzfvEUJ0XT927NjExESrYvKdcuFThuMjlrYInaObLplMNv1tq0mkisVi09cnk0nzyyKRSKfx0Kd0lh9LpVImk6nVaku+vs3u0SrmVl+EYZhKpWJe6Pj+1ul66EOBVr+tVCrmqeMCgUAgEPDncVGpVIwnzQzDJJPJpn9cR9B9uNUe7hQXTkH04OpoN+4U3VaTk5NOrbD96aVR+z28i9dbDgp6b0q3oXFKcWcPsYn+lX0VTF93Ofvoqd6rYIxLm2sB1Gq1TCYzMTHR5qK2du1ad4IBO4w2Rpuv7/RgX/L1ltPd+vXrm77en6e+Tk/+/UM3Sxe3r/1AN4tTp51Od9HeVSqVZDJJG8Bo99tGu3btavreUqlEb2Jbsdyid8eFTxnojzDSQPOJoulHRCKRFYQQTdPMpZgtpqamOI5rWpBZURSO43xSKiCbzdZqtVbTg7mJ5/lcLpdIJMwLc7lcq/HblrpuvQwXJy1KrCmKUiwWbW6ccDicSCRyuVy5XLY/5lxVVUmS6FTh3UXuvsYactVq9bzz/Fg0QZZlURTr9XogEEin017NSAdDr/GgoC2Kx48fJ4Sk02mO41CEFvxGkqSHHnroO9/5TpvXTE1NLXnjBctK4+nutddeI7+c7MagaRpOfdBvuq7Lsnz33XcfOXLEWNiYv0Wj0WKx2HRwjaqqPM+3L8kky3KPswi78CnD8RE2/apfuqqqtPM6wzBGWW9N0yRJqtfrkUjEUiwqlUrNzMwEAgFL6WavmFNfSZJoGkl/nJ6epudQ14IRRZHneVmWaYWzRCLRJju15OE0f9Z1XRRFOm+ZzfxZkqRisWiu4EV+WWItk8nMzc21Wo954rRKpUJDbVVVrhWe54PBYKFQaP9GY58eGxvzdkZxVVUtz0qoxv4/nhNFMZ/PRyKRdDqN+wDon1YHBSHk8ccfHx0ddTkegPZkWX700UdlWabj+ixGRkYWFxcnJiZuvfVWOoNmNBqlcwsDtDndvfjii+YfFUUhPbeRALRi5zHijh079u3bJwiCqqpNe93qur5kYkk6rLvsyacMx0fYt4IQEgwGaYZG+z9wHGdO2Gi4c3NzPM+rqurP1k5VVavVKq0aTdPXbDZLMxZZlmOxmKIotPXetZCCwaCdPFNVVfOuYNS+TqVSNKOemZmxzFnVuAb6KKTVFWVJiqLQPhFzc3Nd/33pZm86Z5uZ8QLPm3PbVJvcu3evm5G0QY8++kRpbm5O13WO4xKJBG4IoB/aHBQbNmx49NFHiUPzMgD0QlXVQqFw3333talsMj4+fuutt5qvnjbbDGirVKlUoq+np1zH73xc+JSh+SJ90uZ0d/nll5t/vPvuu7dv3+75TQsMGUVR/sf/+B82HyMueUxlMhk7kxOFQqHuonXtU4bjI+xbuk4by7KSJE1NTdXr9UwmI0kSXZ7NZqPRqE/ygVwuNz09HQwGVVXN5/PT09PGzaIgCPF4PJ/PZzKZTmfkdoFlRIAxAZX5jkHTtFbbWRAESwO4WSAQiMViS8bAcRzHcW3GJtjRqrHdMrjF0qvCQ2222/79+92MpA1RFM0TyJXL5XK5TPdwSZKM2wJRFFmW9cOgDBhobQ6KWCy2c+dOPxTmhWVL0zRZlu+7774jR47Qm9TG16xevVoQhD179nTxwEjX9UwmMzMzY144Nzc3MzOTy+WMfoI9cuFThuaL9FWb0535WbyiKEeOHME0UeCU7h4jLslOgtP7NLcufMpwfIR9tuqlt3qc7J+GEVmWaRJCO0XPzs5KkmRcBmi60uac6xX6INm8JJ1O0/8kEgk6TCAcDrfZzm2+VLFYbP8H0jSN9nvvLOhONO7rqqr6JA9vJR6P+yRCWZZb/X1nZ2cVRaGjxHVdz+fzlUrF5fBg+YjH45qmnT17NhqNeh0LLDv0Qnn//fc/9dRTxsLGJPzaa6+95ZZbuk7/6NWwWq02/W0ikaBjr7pbuZufMjRfxCuWe4BvfOMbxNRGAtAd+48Rf+u3fquL/a3VwWhG22w6XbNB13UXPmU4PsI+P5ak6pQsy/V6ne61iUSCYRhCSOMFgC73FUvXiGQyaYQtCEKlUikWi6qq2t8VwuFwLpejVbVbJeG6rtNCbqFQKBaL9bURtbGNPZPJ0E/3nLlEqmF6eto/rcqFQoHWRS8Wi7lczrID1+v1fD4/MzOTz+fNew5A19ocFPfccw/BzSi4S5blffv2jY2NJRIJcxJutmrVqlwuV6vV/v7v/76XJJzn+fY3Z733p3PhU4bmi7jAzj2ApmkHDx4MBAK4wkJ3dF2XJOm6664LhULpdJrWYGtMwgOBQC6Xe/311++///4+XWfj8XiP97d2eoX0+ClLDm7t/SMIIUtWCen9I+yz1R5uNIPTMxEtvk2XWKpt0X5KiqLQzrSBQIDn+Ww2a2SS5trsU1NTPM+nUimaSLeqpmYUXaOdBMxrowqFQjwepwuDwSAtGG4+adLEz293kKqqmjt00TrY5hcEg8ElT/0dlVhTVTWXy9GtbSxsVYcgnU73cuFRVZUWh7Msr1arPM9LkuR5mzM9xvL5PP2RVon3VVe62dlZc+8+Wqy1cUyLm+cLGG6tDgpFUZ566qnx8XHcjIILVFW999572w+bHB8fv+aaawqFwm/8xm/0eN5GfSMffooL7NwD3HHHHaSH4juwnNEqkgcOHGjzmomJiY0bNz7++OOCIPT1/jMejxvDiv38KUs21DnyRRiG+elPf9rXj7DPVh5OM22GYcyJoizL1Wo1EomY83Ce52kXMo7jjLFDtAyYeYW0BnsymcxkMhzHiaKoaRrtamspBUcrRWcyGVqNjNYqMFdc03V9dnbWnHmyLGtO1CVJorWmHc9VDh061HXF73Pnzh08eNC8ZOfOnV0MQLrxxhvr9foPf/jDY8eOGQ84jh49SkyVyev1+vPPP09MM5mZGd/C8i5CCMuy3X3Bhx9++MUXX1y/fv3WrVsZhlm1apXxqxMnTlQqlampqa1bt+7evbuLlVP2A3v11VdbvZ5l2WQyOT8/v2nTptHR0Uql4m0Jd4tVq1a98MIL5pD27t37+OOPz8/Pv/baa6tWrdq2bdvll1/e9Z+pjfn5edLbHm5fXz/i0KFDhJB8Pt+0vqgj6LZ69dVXnf0i9jd+mz28i9c3PSj++q//mhByxRVXGO9ycw9ZEv0r+yqYvu5y9tGzulfB0E3RUQCHDh16/vnnX3/99VYvWLFiRTgcnpiY2LRpU6eHXqvXHzp0yE7Nnh/84Ae97GAufMogfhG6ixLbZ7BOD/b2r29/D3DkyJFHHnlk9erVtVrNn6e+Tk/+/UM3y9GjR/0QDN0sTp33Ot1Fz507973vfa9cLr/11lutXnPBBRdceumlV1xxBcMwne7Sne6B69ev37VrlyM3ijTUCy64oPEU7dSn0G+3YsWKxq3n4BdpNSu7s9+C2PgznThx4h0T09OlgUAgaUI7OTMMUygUzC9OJpOEkEgkYpm4nGGYWq1mLKRzdRaLxcb3MgyTyWSMhbQCkHnSc5pYTk9PWz4iHA6bX8MwTOMs6uZOvOZ1OqKXPw8AAAAAAAAsW+Pj403Gh+u6rv6Spmk8z+dyOdoW3X51tBW6Xq+b+xW06cdoeeRAm7jNYwNo+7C5MhAd81wul42hR8VisWlgtPN8sVhMJpMzMzO0ob59/J3qOr2njyEMuVyux+cC9BFG0x/bxE/H1PX40a1YviMVj8d7XzNd1ZIvK5VKlUplcXFxcnLSzut9rn/bsyn6wMvxB1gWNv+UvaDbzfIc0Fl0W01OTjq1wk5PL/b3cHpQdHpEbNq0iRDyla98xbzQnT3EJvpX9lUwfd3l7KPXAq+CMc5aNgNo2oHz2muvbXWp6vTQa/X6NldJQ+97lwufMohfxJiCwebr7R/s9HTX9cmBvnFiYsKy3FenPv/c3tDNYm6Z8xDdLE6d9zrdRZtOfLt3715LW6ah01201R7YUZDdceFS6/gNVVPO7iGNjI4Y5m3V9FR52WWXNemXznGcoih2TrWNbyyVSizLBoNBmswXi8U2M3a2HyGsaRqtAmLJ5CORyNzcXKlUEgSB9mYvlUptVk4z8Hw+T+c/7+J7OSubzZqHhbs8vUcgEBAEgQ7g7+vnNj71CIfDLoy40DQtk8kYI75od4wh4NX2hCFgOShWrlxp/72pVGphYWHDhg10nCRA/xw/ftz4v/1Zc3vXtA+kWe81ONwpPuTCR9h5u7clSyynu/Xr13exEqN8z9e+9jUng4NlgFZio3bs2LFv3z46tY2HIYGf2Rofbh/HcbSsGp3yun2m3f762iaBJ7+8qsmyHAgEzJ9CKxNaLt6xWCyfz5fLZUVRvJ1rjQ53p/9nGMY80N1BrUqsGTOZubARLH++cDjc3cOdjkiSlEqlzEPXqtXqeecNw6QAnmxPGAKNB8XPf/5zQoimaUtmOKqqfvWrXyWEfPnLX+5njACEELJ582ZCyNatW//mb/7GzUKe69ev73fNHneKD7nwEUtWX3O5xJFF4+nutddeI4TYGdBu0HX9k5/8JCEkEon4Z3ZeGBT0PLZr165vfvObqGwKS3IyRdF1neO4VCoVi8V0XVcUJZvNdr0Xtn96RC/ShULB0ildEISmRdcpD9vDdV0XBMFIwiORCH1U0Y/PogXJ6f/plFftZzLrB/OmZhhGlmWWZftasl5V1UQi0Xi5ffvtty+77LL+fa473N+eMARaHRTExqxC9Gb0jTfe2L59u6/mEYBhRe9ft2/f7vJsGhdeeGHT5YFAoFAoOJhVbty40YVPceEjtm/f7sKndKrN6c5cLHZJt956K23SRI8z6MIll1xCCLnqqquQhIMdTraHC4JQLpeTyaRlJrPu1sZxHJ2Uy7IG2jAYCoVUVTUPFKcaJ8qyrLO7YHqkqqooinQuN1p23tmSktlstlXrKM29W81k1ieqqhrXQtrsHwwGJUmanZ3t34e2qTZ/3XXX9e9zXeDJ9oQh0OagWLJdy7gZfeCBBxwOC8BP6FyyX/jCF06cOEFvMDiOi0ajjj+53rdv39TUlDFer0+fUigU+v0RX//613Vd7/endKrN6W716tU2VyKK4iOPPEIIyeVyyKPA54yZpLwOBLrnZB5Oc2Dz5Fg0VSbdZuOiKM7MzNCh4HQJHTROJxLPZDLhcNhyoqTjgS3JuVHI3ZM8PJvNZjIZmkdNT0/30keglSWHALjM/FCAThWu63q/Z7Nok5TGYrG+fnS/ebI9YQh0fVBks1l6M/rFL37RV+cWgD7ZtWuXC5mkIAj9vml24SNc+5SO9H4PQKe5JYSIoohOQOA3qqpaegrfe++9zz33nN+OROjIr/qlGx1fdV1vPzbbzJxg0xy4UCjQhYqiCIJgLKRzg3e0wnQ6TYtRGW+kuUc2m2VZVpblxnNrOp225PyqqtLORfRdNr+XI2i1+XQ6Xa/XI5FIsViUZdk/T1hVVc1ms46XkSem5vdcLkfL6fE839EALQfF4/FBTyR8tT1hCLQ/KFRVTafThJCdO3feddddLsYFAOAwm/cAiqIkEglCyKWXXkonzQXwA03TRFEcGRmZmpoKhUJ79uwxfvXkk0/++q//uoexgQPMBdYtWpV0L5VKdLwxxTAMnXmrVCqZZ+2mg4WMhYFAoFKplEolcwnrQCCQy+VarXBxcbFWq0UiEYZhIpFIOBw2fkVjphNTWeRyuUAgEA6HI5EInW+ARuJgSXoaZ/va/ZlMxvjivc9M1iPzTGaVSsW8tc1TuDvCKF9Ptw+d4N28v/Wo1Xri8XjjPjw9Pd2/udnc0e/t2dSf//mfNz0n9EOfvgJ10003ufMt3vOe9zgVM12hI/OWdXFQlEol2odzdHS0zcvc3ENsuummm2xusb7atWuX11vC6sCBA55sik7nLet06iOn5i3r9xw2i5gJsjUH5y3r5R7AOO9t2LCh/et9eOqzuen6qumkg95y6rzXv6n17LzecstnEEWxUqkQ0z18R0F2B/OW2WR/3rJIJLKCEMLzfKtXNMVxXNOWbY7jNE2jv2JZ1ngASecwM35s2tjeqqmcZVnakE6bbY1uY8FgsFQqNW1bph2KjLdks1mXm0ON0eDhcDiRSPind5MkScVi0dJ3a8lhop2iD5KNmUvoA2YX0I8zKuH5beN3zZPteebMGRc+xQXmmZD6yp9brNODQlXVXbt2nT17lhDyd3/3d206EPnw+7r2t26Pbj1f8cmWAeirru8BVFXduXPn2bNnV61a9dhjj7XvOOnDU58f+PAk48OQOkVLDzb91ZkzZ+gIXM/rMkCPRjrKwIEaGRnxOgQAAAAAAAAYPOPj4w7PH76sXHnllddcc41l4cLCAiFk06ZNHgTUzMMPP/ziiy+2+u369etvuukmB6M9ePDguXPndu/ePTo6SpfMzMyYX2D0VOzUwsLC6OgowzB0hV2vZ7D0b3u2Nz8/71qN/b7+KQ8dOvTMM8/0b/2G8fHxW2+91ZFV0T9x09OLmXFE3HfffSdPnuxxMy4sLPzv//2/33zzTULIxz72sQ996EPtX+/mHmLTklvMHa7tcvbFYrFt27a5/7nGprAZAN2ptm7dunv3bjvrp6+3c+jRg6Verzd9PT2C+rqVaKj93kVduDjSv6mD2+rgwYPHjh0jNsKmf8Qf/OAHzzzzjFNb8gc/+ME//MM/EELOO+88nuevuOKKJd/iw1OfH26HfLhZnNpL7e+iFD1G7O+ibV5vud8zu+WWWx566CHz2dK1w7+v5zH7Z/Ve9PucbxwO5m3V9K85Pj7ui4ElA4duvn6P9XJEmx3F8aERyWSSYRjLoH3Lh3a6zkqlYh70ZRQXcC5q/+rH9myjVqvdeOONpVJpsXXNiH5w8Cs0cu0G5UMf+pBTMdMVtjq9NB4R9KDo5RNLpdKaNWvoCr/yla/YeYube4hNPjkh++Ge2KKvI5/tbAqvxodbDhb6xJm+vlKp3HjjjfRlGB9un/vjwy1/xPXr1zu1JY15zlauXEkvfHb48NTX+6bonQ83i1N7qYfjw1t9tXg8vnfvXkKIufhUR0F2B+PDbep4fDgsH3TEVC6XK5fLzo4qoXXp6dTWTq1TkqRUKmUuDF6tVp1auc/1Y3u2/7idO3decMEFdGgcz/PuXFb7PYVBOp2ORqN9/QjKnT9T0yPivPPOa/2OpRljIwkhX/nKV+644w4773JtD7HPJ9MiuLbL2bc8BxA2Hiy0t9obb7xBCMnlcn7bgaFR4x/xtddeI4T0Pl3Ivn37aGmxVatWffe737V/9uA4DntOIx9eEYbgvBePx416B4bp6en/+B//YzgcHh0dHYISSIA8fMgxDGNcsSqVCs0W+tF9iOf5YDBYKBTar9yY9XpsbKz9DNhtClScf/75Xcc5KBzfnq3oun7nnXfee++9ExMTTz31lJEYD8E1jBDCsuxwfBHS+oh4++23V65c2d06JUm67bbbzp07RwjZu3evzSScGpoN66xh2uUGV5vLxy9+8QtCyP/9v/93YmLC3aCgM23+iC+//HLXq9U07ROf+MT3v/99QsiGDRsee+yxjh7h4QBvBZvFca1KD9KJYJCEDwfk4UNOURRN03K53NzcXF+b7GiN+iWniDdesGRDqNFnrFFH2cKAcnx7NpXNZu+6666zZ8/u37//zjvv7HfrNPSizRFx++23d7HCVCplDFj64he/iKnCYWi0OVhuuukmTdOefPJJH44gALM2f8QPfvCD3a1TluV9+/bR7j+WR88AfsOyrCRJtGskx3F0X1UU5ZFHHlm5cuWdd97pdYDgAOThQ47jOI7j6NxXfUWf2zWy1Ja3P42cZX41s1gs1lFsg8jx7WkhSdKf/umfLiwsjI+PP/LII3iS7X8OHhG6ru/cufOFF14ghIyOjv7d3/0ddgAYJu0PFjrfj9+GD4CFs/cAuq7ffvvtxjTX+/fv/+pXv9p9cAA9U1XV5mMg8wX6T//0Twkht956Kx4hDYeeBhYCtEdvd8yWbOBdUjwe98lAUPc5sj1lWd68eXMikdB1PZlMHjlyBDnYQOv0iFAU5b3vfS9NwicnJ3/yk59gB4Blgh4s3/jGN0ZHR7HbD6gu7gEURfmN3/gNmoSvX7++WCwiCQevaJomiuLIyMjU1FQoFOqonUyW5aeeeoqYxiTCoEMeDn3UeH7JZDK6rtt5r7lEqmF6erpVQ/Fy0Mv21DQtlUpt3LgxFostLCzs3bv3+PHj2WwWj1QHRe9HhK7r+/bti0ajr7/+OiFk//795XIZOwAMnzYHi6IoR48e9cMUd9CeI/cAxkmPVumLRCLVahWPYMArkiRxHGeuvma/9KCmaXQ2r927d7tTGhZcgDx8OUqn002vcA5SVVUQhLm5Octyegm004qbzWbNQYbD4VwuJ8vy8kwbut6emqZls9lLL700FArNzMycPHlyx44dpVLp/vvvX55bcnD1eESkUqn3vve9tEVow4YNhUIBLUIwrNocLLRX5+///u97Fx3Y0uMZT9f1VCp14YUX0pPe6OhooVBQFAUXPvAKLT3YNOV+8cUXl3z7nj17Xn/99dHR0a9//evOBwceGWk1pxm0Qcfobt26dfv27V7HYku5XNZ13ZgFsd+ee+65kydPjo6Orl69evXq1eby5qdOnTp79uy5c+dYlg2Hw3bWVqvV1q5duxxqpLfSxfZ88803T548eeLECaO1/LzzzhsfHw8Gg6tXr3b7C0An6NOWNqeXTo+IWq32/PPPv/nmm4SQkZGRCy+8MBgMLucDCtxx9OjRY8eOEUImJyfHxsaWfH2tVjt8+HBHl4bDhw+vWbPmqquuavMa88Hy6quvHjlyZMWKFbt27TJe8/TTT585c8ZmkN2hofb7noGeOvp6oad/Uwe3Fb05IW3D7uIeYH5+vlqtvv322/THTZs2XXzxxTjpQRfs7KJm9BhperDTe7mm73rve997ySWXLLlaQsill166cePGxhe4dvj39Txm56zeu36f8+m3IO+8kWtsSCOETExMoE5bN2688cYnn3xy7dq1Xgdi1/bt22u1mmsfd9lllzm4tv7dGw2Kjrbnq6++WqvVzOf6888/PxQKjY+P4y5kIExOThJC2jwusX9EnDhx4uWXXz516hT9cXx8fGJiArsBuOPCCy+k++q6deucXfOpU6ds7saWg0XTNELIoDxAXw4uuugi+oiwDftnPPoAulKpGOscHx/fvn07nj5D1+zsoja1SsIJIZs3b27zxlqtRpPwTZs2NU3CwVfWrVvXeCNHl1hcdtllZBEABl+hUNi7d6/5mB8dHd29e3exWPQ6NHBbpVJJJpObNm0ydoYdO3ZUKhWv4wJop1gsEkIikUirF1QqFXNHZbqHT05O2lw/nQeLZVnLcnp71NdTJf1qyWSyfx+x+Mu+jX39CDrZmw8vK4VC4cYbbzTf4O7evRsnPXAfPUaaHuyt0rZ4PN5mhbVa7YILLiCEbNiwoVartXqZa4d/X89j9FRp/6zeHRfO+fahPRxgIGmapqpqqVQqFou0Aww1Ojp60003/c7v/I4gCB6GB+6ju8Q3v/nN73znO3QJy7J79uzZu3fvsp1iAIaGJEmpVMo8tJJW3nrjjTfsvF3X9bvuuou0nZUaBo4sy48++ujs7CytPUkIed/73veJT3wikUigkBX4TTweN1doo9qXHtR1fceOHXT3fuCBB1DdYPggD4fBoCgKx3HL/BykqqqiKJVK5Vvf+tZPfvIT86+Qfi9Duq7LslypVJ599tlyuWz0eWNZVhAEURSRfsNwoPWNmv7KGHbR3u/+7u+ePXt2w4YNoig6Ghq4R1EUXddLpZLljEcI+fCHPxyLxW666Sak3+BbNN82UvFwOJxIJNqckXRd37lz55EjRwgh+/fvR53/oYQ8HAaArus333zz6Ojol7/85WV1F6XruqqqxWLxe9/73hNPPNH4gu3bt//2b/92NBrFCXoZUhSFJifbt2+/8MILP/GJT3zgAx/gOA7pNwyZNo3Y//7f//sl355KpWgnEdQZHlyapt1yyy1nzpwhhGzZsuXCCy/csWPHxRdfPDU1xfP8Mn9GDwOBZVlJkiRJstmwdM0117zwwguEkL1792J+k2GFPBwGAMuyzz777B/8wR8kEol0Oi0IAs/zQ9nwSxNvTdO++93vPvXUU0ePHm18zfj4+Cc+8YmPfvSjuPlY5gRBWMSEF7AMzM7OtvrV/v37279XUZSZmRlCiCiKQ3nVWCaCweDp06e9jgKgJVVVbd6S2Wk42bdv37PPPksIufnmm++///5egwO/Qh4OgyEYDP793/+9qqr33nsvfaBICLn22muvueYaQRAGsSuakXJXKhX6r3mYt8Xk5GQ0Gp2amuI4bhC/LACA4+LxePveH7qu33TTTYSQLVu2YGQ4ADhO07RMJmP0Nl+/fn3v69y3bx+d9z4SiTz00EP230inVe4rO1Odd+348eOEkMOHD7vwRehneQ55OAwSjuPuv//+e+65R5KkYrH4ne985zvf+U46nR4fH7/22ms3bdoUCoWCwaDfRpJbUu5jx459//vfb/+WQCCwc+fOj3zkI+hmDADLXBf1jSha4mjlypWPPPJIq4vCL37xC0JIuVx2JNSm6MrPnTvXv48wKIrSv5XPz8/3b+UAA6exfuRrr71GCDEv6Yiu67fffjtNwicmJmRZdiBKR/U1fXUzN0YeDtAllmVTqVQqlaJ1qh566KFDhw7R05bZBz/4wfe85z00iY1Go8ReX6BO0Ryb/p9m2vT/R44ceeWVVwghbVq5DePj41u3bv3Yxz5GnyNgsDcAgKHT+kbUvn37aImjdDrd5mlmtVolhKRSKcfCbeF73/tevz+C/PJi11flchkXKYA29SO7azTWNO2GG26gZ62JiYmnnnrKV01K1MTERP9WftFFF/Vv5R5+VhvIw2GAsSwriiK9G1MURVXVH/3oR8awajq0Zm5ujhBCxwdSdOZAau3ateeff755nW1u18xptp3suqkNGza8733vu/jii7du3YqsGwCWD13XRVHUdb3pb2u1GvlljsdxnLmtu9P6RsTUsfPaa6+lM5a18tZbb3X2NQBgGVNVlT62e+6551q95sUXX+R5PhaL2S8trKrqrl27fvaznxFCIpGILMs+TMIJIZs2berfyteuXdu/lXv4WW0gD4chwfO8OaFVFIWmzc8+++yJEydefvnln/70p/RX7VNomrf3aPXq1fSRoTnfpnpfOQDAIJIkqU3FNUrX9bm5ubm5uaZ9zm0+tTSS8ImJif/1v/5X+xdv3LjRne7W27Ztc+FTXLB582avQwDwTKFQWPJGcWFhYWFhgRBiMw+XJMloWt+/f38X1dHXrFlDZxPot7Gxsf6t3M1HDz55zIE8HIZT09s1TdM0TSOEqKpK216oYrHY0cp37tw5Ojpq/Dg2NkZb0VmWxVhuAICmRFEslUqN7eGnTp06//zzz549e/jwYZZlw+FwL52rjSR8+/btdjp2siyLPLwjyMNhOYvFYnQ0YqtsfMuWLe9///vpK+2s0DhlrVy5MpPJ3HHHHV1E9cMf/pDe3/ZbX7twchzX9BrhOP/cro9g2hsAAABwmaXO8KZNmxYWFiKRSC+Vxow72ve9730/+MEP7LR4XHfddXR28X5LJpNLFpbrxbp169yZ2atYLGI4FYAoik3rR0qSZLOtVVGUPXv20JbzDRs2PPbYYz5JDsE1aA8HAAAAVzXWGaY3o2fPnu1uhbqu/+7v/i7NqDsqcfT3f//33X2i35w6dcrrEACWke7qR1LmuuiEkB07djz66KM+6SkNbkJ7OAAAALhHVdWpqammv9q1a9ehQ4e6WOEnP/lJn9cZBoChZL9+JCVJ0h/90R/RkmwsyxYKBXQwWbbO8zoAAAAAWEYymUyrX1111VWdrk2SpJ07d9IkPBKJIAkHADfxPG+/I/pHPvKRRCLxs5/9bOXKlfv376/VakjClzO0hwMAAIB7RkZGWv2qVCp1NELytttuu/fee+n/v/jFL7afogwAwBOSJN17770vvPAC/XH37t1f/vKXMYcOYHw4AAAAeC8ej9tPwjVNu+GGG2gz+Ojo6D/90z+hxBEA+Iqmablc7r/9t//2+uuvE0JWrVp18803f+5zn8PJCijk4QAAAOCeeDzetM6wzXLiuq5nMpmZmRn644c+9KHHHnsMfdEBwA90XVcUpVQqPfjgg0ePHqULP/zhD3/qU5+yWcUNlg/k4QAAAOCeXuoMy7K8f/9+Wlx91apVt912W18nAwMAsOm666770Y9+9PLLL9MfR0dHJycnd+/eLQgCuqBDUxgfDgAAAB7oqM6wpml79ux56qmn6I+7d+/++te/jmZwAPAJSZIqlQohJBqNdlRBHZYt5OEAAADgX7Isf/Ob36RzgxNCdu7ced9996F9CQAABhr6pQMAAIDv0BJHBw4coL3QCSGTk5MzMzOY5gcAAIYA8nAAAADwC0VRVFU9dOiQ0QC+ZcuWT3/60/v27UMbOAAADA3k4QAAAOAlWZZzuVytVjt8+LCxcMOGDb/3e7+3d+9ezPEDAADDB3k4AAAAeOmf/umfarXa2rVrk8lkKBQKBoOocgQAAMMNddoAAAAAAAAA3HOe1wEAAAAAAAAALCP/P6XcHUxCw5QUAAAAAElFTkSuQmCC\"/>" ], "text/plain": [ "Score(3 voices)" ] }, - "execution_count": 6, + "execution_count": 2, "metadata": {}, "output_type": "execute_result" } @@ -63,32 +63,14 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 8, "id": "a60d2bae-b198-4c42-bd39-9c3cb1d93a5b", "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n", - "\n", - "\n", - "--Csound version 6.19 (double samples) Oct 30 2023\n", - "[commit: 79e5d31bea441e5289073319ab2b1e42d01814b9]\n", - "\u001b[mlibsndfile-1.2.0\n", - "\u001b[msr = 48000.0,\u001b[m kr = 750.000,\u001b[m ksmps = 64\n", - "\u001b[m0dBFS level = 1.0,\u001b[m A4 tuning = 442.0\n", - "\u001b[maudio buffered in 512 sample-frame blocks\n", - "\u001b[mreading 4096-byte blks of shorts from adc:Built-in Audio Pro: (RAW)\n", - "writing 1024 sample blks of 64-bit floats to dac:Built-in Audio Pro:\n", - "SECTION 1:\n" - ] - }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "9005c9bed2264916a4dffcea061feab4", + "model_id": "fdd5c6c883ee470a9878afaab76c37f9", "version_major": 2, "version_minor": 0 }, @@ -102,7 +84,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "c1ec5f04f78a453d97810ba6f4d2d196", + "model_id": "b4ae167327304fab85a194d847f5bf26", "version_major": 2, "version_minor": 0 }, @@ -116,298 +98,92 @@ { "data": { "text/html": [ - "SynthGroup(synths=231)\n", - "

Instr: preset:.piano - 231 synths

\n", - "
p1startdurp45:kpos6:kgain7:idataidx_8:inumbps9:ibplen10:ichan11:ifadein12:ifadeout13:ipchintrp_14:ifadekind15:ktransp16:ipitchlag17181920...
501.0002 𝍪27.0090.70000.511733100.10100.10670.51518...
501.0003 𝍪27.5090.70000.511733100.10100.10680.51518...
501.0004 𝍪28.0091.20000.511733100.10100.10700.51518...
501.0005 𝍪29.0091.20000.511733100.10100.10700.51518...
...
" + "SynthGroup(synths=70)\n", + "

Instr: preset:.piano - 70 synths

\n", + "
p1startdurp4kposkgainidataidx_inumbpsibplenichanifadeinifadeoutipchintrp_ifadekindktranspipitchlag17181920...
502.0212 𝍪0.0361.20000.50.51733100.10100.10850.51518...
502.0213 𝍪1.0360.32500.50.51733100.10100.10860.51518...
502.0214 𝍪1.1610.32500.50.51733100.10100.10850.51518...
502.0215 𝍪1.2860.32500.50.51733100.10100.10830.51518...
...
" ], "text/plain": [ - "SynthGroup(n=231)\n", - " Synth(𝍪 preset:.piano=501.0002 start=27.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=67 p18=0.515178 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0003 start=28.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=68 p18=0.515178 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0004 start=28.801 dur=1.200 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=70 p18=0.515178 p19=1 …)\n", - " Synth(𝍪 preset:.piano=501.0005 start=29.801 dur=1.200 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=70 p18=0.515178 p19=1 …)\n", - " Synth(𝍪 preset:.piano=501.0006 start=30.801 dur=1.200 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=70 p18=0.515178 p19=1 …)\n", - " Synth(𝍪 preset:.piano=501.0007 start=31.801 dur=1.200 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=70 p18=0.515178 p19=1 …)\n", - " Synth(𝍪 preset:.piano=501.0008 start=32.801 dur=1.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=70 p18=0.515178 p19=1.5 …)\n", - " Synth(𝍪 preset:.piano=501.0009 start=34.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=75 p18=0.515178 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.001 start=34.801 dur=1.200 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=75 p18=0.515178 p19=1 …)\n", - " Synth(𝍪 preset:.piano=501.0011 start=36.801 dur=1.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=67 p18=0.515178 p19=1.5 …)\n", - " Synth(𝍪 preset:.piano=501.0012 start=38.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=70 p18=0.515178 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0013 start=38.801 dur=1.200 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=70 p18=0.515178 p19=1 …)\n", - " Synth(𝍪 preset:.piano=501.0014 start=40.801 dur=2.700 p4=0.5 kpos=1 kgain=17 idataidx_=4 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=63 p18=0.515178 p19=2 …)\n", - " Synth(𝍪 preset:.piano=501.0015 start=43.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=65 p18=0.515178 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0016 start=43.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=67 p18=0.515178 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0017 start=44.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=68 p18=0.515178 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0018 start=44.801 dur=1.200 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=67 p18=0.515178 p19=1 …)\n", - " Synth(𝍪 preset:.piano=501.0019 start=45.801 dur=1.200 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=65 p18=0.515178 p19=1 …)\n", - " Synth(𝍪 preset:.piano=501.002 start=47.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=67 p18=0.515178 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0021 start=48.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=68 p18=0.515178 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0022 start=48.801 dur=1.200 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=70 p18=0.515178 p19=1 …)\n", - " Synth(𝍪 preset:.piano=501.0023 start=49.801 dur=1.200 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=70 p18=0.515178 p19=1 …)\n", - " Synth(𝍪 preset:.piano=501.0024 start=50.801 dur=1.200 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=70 p18=0.515178 p19=1 …)\n", - " Synth(𝍪 preset:.piano=501.0025 start=51.801 dur=1.200 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=70 p18=0.515178 p19=1 …)\n", - " Synth(𝍪 preset:.piano=501.0026 start=52.801 dur=1.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=70 p18=0.515178 p19=1.5 …)\n", - " Synth(𝍪 preset:.piano=501.0027 start=54.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=75 p18=0.515178 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0028 start=54.801 dur=1.200 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=75 p18=0.515178 p19=1 …)\n", - " Synth(𝍪 preset:.piano=501.0029 start=56.801 dur=2.700 p4=0.5 kpos=1 kgain=17 idataidx_=4 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=67 p18=0.515178 p19=2 …)\n", - " Synth(𝍪 preset:.piano=501.003 start=59.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=68 p18=0.515178 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0031 start=59.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=69 p18=0.515178 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0032 start=60.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=70 p18=0.515178 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0033 start=60.801 dur=1.200 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=63 p18=0.515178 p19=1 …)\n", - " Synth(𝍪 preset:.piano=501.0034 start=61.801 dur=1.200 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=63 p18=0.515178 p19=1 …)\n", - " Synth(𝍪 preset:.piano=501.0035 start=62.801 dur=0.950 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=67 p18=0.515178 p19=0.75 …)\n", - " Synth(𝍪 preset:.piano=501.0036 start=63.551 dur=0.450 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=68 p18=0.515178 p19=0.25 …)\n", - " Synth(𝍪 preset:.piano=501.0037 start=63.801 dur=0.950 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=65 p18=0.515178 p19=0.75 …)\n", - " Synth(𝍪 preset:.piano=501.0038 start=64.551 dur=0.450 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=67 p18=0.515178 p19=0.25 …)\n", - " Synth(𝍪 preset:.piano=501.0039 start=64.801 dur=1.200 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=63 p18=0.515178 p19=1 …)\n", - " Synth(𝍪 preset:.piano=501.004 start=67.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=67 p18=0.515178 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0041 start=68.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=69 p18=0.515178 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0042 start=68.801 dur=1.200 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=70 p18=0.515178 p19=1 …)\n", - " Synth(𝍪 preset:.piano=501.0043 start=69.801 dur=1.200 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=65 p18=0.515178 p19=1 …)\n", - " Synth(𝍪 preset:.piano=501.0044 start=70.801 dur=1.200 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=72 p18=0.515178 p19=1 …)\n", - " Synth(𝍪 preset:.piano=501.0045 start=71.801 dur=1.200 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=65 p18=0.515178 p19=1 …)\n", - " Synth(𝍪 preset:.piano=501.0046 start=3.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=67 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0047 start=4.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=68 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0048 start=4.801 dur=1.200 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=70 p18=0.114858 p19=1 …)\n", - " Synth(𝍪 preset:.piano=501.0049 start=5.801 dur=1.200 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=70 p18=0.114858 p19=1 …)\n", - " Synth(𝍪 preset:.piano=501.005 start=6.801 dur=1.200 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=70 p18=0.114858 p19=1 …)\n", - " Synth(𝍪 preset:.piano=501.0051 start=7.801 dur=1.200 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=70 p18=0.114858 p19=1 …)\n", - " Synth(𝍪 preset:.piano=501.0052 start=8.801 dur=1.200 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=70 p18=0.114858 p19=1 …)\n", - " Synth(𝍪 preset:.piano=501.0053 start=9.801 dur=1.200 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=75 p18=0.114858 p19=1 …)\n", - " Synth(𝍪 preset:.piano=501.0054 start=12.801 dur=1.200 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=67 p18=0.114858 p19=1 …)\n", - " Synth(𝍪 preset:.piano=501.0055 start=13.801 dur=1.200 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=70 p18=0.114858 p19=1 …)\n", - " Synth(𝍪 preset:.piano=501.0056 start=16.801 dur=1.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=63 p18=0.515178 p19=1.5 …)\n", - " Synth(𝍪 preset:.piano=501.0057 start=18.301 dur=0.450 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=65 p18=0.515178 p19=0.25 …)\n", - " Synth(𝍪 preset:.piano=501.0058 start=18.551 dur=0.450 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=67 p18=0.515178 p19=0.25 …)\n", - " Synth(𝍪 preset:.piano=501.0059 start=18.801 dur=0.450 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=68 p18=0.515178 p19=0.25 …)\n", - " Synth(𝍪 preset:.piano=501.006 start=19.051 dur=0.450 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=70 p18=0.515178 p19=0.25 …)\n", - " Synth(𝍪 preset:.piano=501.0061 start=19.301 dur=0.450 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=72 p18=0.515178 p19=0.25 …)\n", - " Synth(𝍪 preset:.piano=501.0062 start=19.551 dur=0.450 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=74 p18=0.515178 p19=0.25 …)\n", - " Synth(𝍪 preset:.piano=501.0063 start=19.801 dur=0.450 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=75 p18=0.515178 p19=0.25 …)\n", - " Synth(𝍪 preset:.piano=501.0064 start=20.051 dur=0.450 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=77 p18=0.515178 p19=0.25 …)\n", - " Synth(𝍪 preset:.piano=501.0065 start=20.301 dur=0.450 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=79 p18=0.515178 p19=0.25 …)\n", - " Synth(𝍪 preset:.piano=501.0066 start=20.551 dur=0.450 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=80 p18=0.515178 p19=0.25 …)\n", - " Synth(𝍪 preset:.piano=501.0067 start=20.801 dur=0.533 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=82 p18=0.515178 p19=0.333333 …)\n", - " Synth(𝍪 preset:.piano=501.0068 start=21.134 dur=0.533 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=79 p18=0.515178 p19=0.333333 …)\n", - " Synth(𝍪 preset:.piano=501.0069 start=21.467 dur=0.533 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=75 p18=0.515178 p19=0.333333 …)\n", - " Synth(𝍪 preset:.piano=501.007 start=21.801 dur=0.533 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=70 p18=0.515178 p19=0.333333 …)\n", - " Synth(𝍪 preset:.piano=501.0071 start=22.134 dur=0.533 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=67 p18=0.515178 p19=0.333333 …)\n", - " Synth(𝍪 preset:.piano=501.0072 start=22.467 dur=0.533 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=63 p18=0.515178 p19=0.333333 …)\n", - " Synth(𝍪 preset:.piano=501.0073 start=22.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=67 p18=0.515178 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0074 start=23.801 dur=0.700 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=56 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0075 start=23.801 dur=0.700 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=58 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0076 start=23.801 dur=0.700 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=62 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0077 start=23.801 dur=0.700 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=65 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0078 start=24.801 dur=2.200 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=56 p18=0.114858 p19=2 …)\n", - " Synth(𝍪 preset:.piano=501.0079 start=24.801 dur=2.200 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=58 p18=0.114858 p19=2 …)\n", - " Synth(𝍪 preset:.piano=501.008 start=24.801 dur=2.200 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=62 p18=0.114858 p19=2 …)\n", - " Synth(𝍪 preset:.piano=501.0081 start=24.801 dur=2.200 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=65 p18=0.114858 p19=2 …)\n", - " Synth(𝍪 preset:.piano=501.0082 start=26.801 dur=1.200 p4=0.5 kpos=0.57735 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=55 p18=0.114858 p19=1 …)\n", - " Synth(𝍪 preset:.piano=501.0083 start=26.801 dur=1.200 p4=0.5 kpos=0.57735 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=58 p18=0.114858 p19=1 …)\n", - " Synth(𝍪 preset:.piano=501.0084 start=26.801 dur=1.200 p4=0.5 kpos=0.57735 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=63 p18=0.114858 p19=1 …)\n", - " Synth(𝍪 preset:.piano=501.0085 start=28.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=55 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0086 start=29.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=58 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0087 start=29.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=63 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0088 start=30.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=58 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0089 start=30.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=56 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.009 start=31.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=58 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0091 start=31.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=65 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0092 start=32.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=58 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0093 start=32.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=55 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0094 start=33.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=58 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0095 start=33.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=63 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0096 start=34.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=58 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0097 start=34.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=55 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0098 start=35.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=58 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0099 start=35.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=63 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.01 start=36.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=58 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0101 start=36.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=55 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0102 start=37.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=58 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0103 start=37.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=63 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0104 start=38.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=58 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0105 start=38.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=55 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0106 start=39.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=58 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0107 start=39.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=63 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0108 start=40.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=58 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0109 start=40.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=63 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.011 start=41.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=58 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0111 start=41.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=55 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0112 start=42.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=58 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0113 start=42.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=63 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0114 start=43.301 dur=0.700 p4=0.5 kpos=0.707107 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=62 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0115 start=43.301 dur=0.700 p4=0.5 kpos=0.707107 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=65 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0116 start=43.801 dur=0.700 p4=0.5 kpos=0.707107 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=63 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0117 start=43.801 dur=0.700 p4=0.5 kpos=0.707107 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=67 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0118 start=44.301 dur=0.700 p4=0.5 kpos=0.707107 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=65 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0119 start=44.301 dur=0.700 p4=0.5 kpos=0.707107 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=68 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.012 start=44.801 dur=1.200 p4=0.5 kpos=0.707107 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=63 p18=0.114858 p19=1 …)\n", - " Synth(𝍪 preset:.piano=501.0121 start=44.801 dur=1.200 p4=0.5 kpos=0.707107 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=67 p18=0.114858 p19=1 …)\n", - " Synth(𝍪 preset:.piano=501.0122 start=45.801 dur=1.200 p4=0.5 kpos=0.707107 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=62 p18=0.114858 p19=1 …)\n", - " Synth(𝍪 preset:.piano=501.0123 start=45.801 dur=1.200 p4=0.5 kpos=0.707107 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=65 p18=0.114858 p19=1 …)\n", - " Synth(𝍪 preset:.piano=501.0124 start=48.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=55 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0125 start=49.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=58 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0126 start=49.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=63 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0127 start=50.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=58 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0128 start=50.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=56 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0129 start=51.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=58 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.013 start=51.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=65 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0131 start=52.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=58 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0132 start=52.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=55 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0133 start=53.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=58 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0134 start=53.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=63 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0135 start=54.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=58 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0136 start=54.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=55 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0137 start=55.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=58 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0138 start=55.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=63 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0139 start=56.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=58 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.014 start=56.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=55 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0141 start=57.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=58 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0142 start=57.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=63 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0143 start=58.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=58 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0144 start=58.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=55 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0145 start=59.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=58 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0146 start=59.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=63 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0147 start=60.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=58 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0148 start=60.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=55 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0149 start=61.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=58 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.015 start=61.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=63 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0151 start=62.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=58 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0152 start=62.801 dur=0.700 p4=0.5 kpos=0.707107 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=58 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0153 start=62.801 dur=0.700 p4=0.5 kpos=0.707107 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=63 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0154 start=63.801 dur=0.700 p4=0.5 kpos=0.707107 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=56 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0155 start=63.801 dur=0.700 p4=0.5 kpos=0.707107 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=62 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0156 start=64.801 dur=1.200 p4=0.5 kpos=0.707107 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=55 p18=0.114858 p19=1 …)\n", - " Synth(𝍪 preset:.piano=501.0157 start=64.801 dur=1.200 p4=0.5 kpos=0.707107 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=63 p18=0.114858 p19=1 …)\n", - " Synth(𝍪 preset:.piano=501.0158 start=68.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=58 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0159 start=69.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=62 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.016 start=69.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=65 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0161 start=70.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=62 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0162 start=70.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=60 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0163 start=71.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=63 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0164 start=71.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=65 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0165 start=72.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=63 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0166 start=4.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=51 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0167 start=5.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=58 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0168 start=5.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=55 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0169 start=6.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=58 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.017 start=6.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=50 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0171 start=7.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=56 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0172 start=7.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=53 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0173 start=8.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=56 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0174 start=8.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=51 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0175 start=9.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=58 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0176 start=9.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=55 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0177 start=10.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=58 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0178 start=10.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=51 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0179 start=11.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=58 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.018 start=11.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=55 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0181 start=12.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=58 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0182 start=12.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=51 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0183 start=13.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=58 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0184 start=13.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=55 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0185 start=14.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=58 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0186 start=14.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=51 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0187 start=15.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=58 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0188 start=15.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=55 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0189 start=16.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=58 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.019 start=16.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=46 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0191 start=17.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=55 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0192 start=17.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=51 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0193 start=18.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=55 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0194 start=18.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=46 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0195 start=19.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=55 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0196 start=19.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=51 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0197 start=20.301 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=55 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0198 start=20.801 dur=1.200 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=46 p18=0.114858 p19=1 …)\n", - " Synth(𝍪 preset:.piano=501.0199 start=23.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=46 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.02 start=24.801 dur=3.200 p4=0.5 kpos=0.707107 kgain=17 idataidx_=4 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=39 p18=0.114858 p19=2 …)\n", - " Synth(𝍪 preset:.piano=501.0201 start=24.801 dur=3.200 p4=0.5 kpos=0.707107 kgain=17 idataidx_=4 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=51 p18=0.114858 p19=2 …)\n", - " Synth(𝍪 preset:.piano=501.0202 start=28.801 dur=2.200 p4=0.5 kpos=0.707107 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=39 p18=0.114858 p19=2 …)\n", - " Synth(𝍪 preset:.piano=501.0203 start=28.801 dur=2.200 p4=0.5 kpos=0.707107 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=51 p18=0.114858 p19=2 …)\n", - " Synth(𝍪 preset:.piano=501.0204 start=30.801 dur=2.200 p4=0.5 kpos=0.707107 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=38 p18=0.114858 p19=2 …)\n", - " Synth(𝍪 preset:.piano=501.0205 start=30.801 dur=2.200 p4=0.5 kpos=0.707107 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=50 p18=0.114858 p19=2 …)\n", - " Synth(𝍪 preset:.piano=501.0206 start=32.801 dur=1.200 p4=0.5 kpos=0.707107 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=39 p18=0.114858 p19=1 …)\n", - " Synth(𝍪 preset:.piano=501.0207 start=32.801 dur=1.200 p4=0.5 kpos=0.707107 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=51 p18=0.114858 p19=1 …)\n", - " Synth(𝍪 preset:.piano=501.0208 start=36.801 dur=1.200 p4=0.5 kpos=0.707107 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=39 p18=0.114858 p19=1 …)\n", - " Synth(𝍪 preset:.piano=501.0209 start=36.801 dur=1.200 p4=0.5 kpos=0.707107 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=51 p18=0.114858 p19=1 …)\n", - " Synth(𝍪 preset:.piano=501.021 start=40.801 dur=2.200 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=43 p18=0.114858 p19=2 …)\n", - " Synth(𝍪 preset:.piano=501.0211 start=42.801 dur=2.200 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=39 p18=0.114858 p19=2 …)\n", - " Synth(𝍪 preset:.piano=501.0212 start=44.801 dur=1.200 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=46 p18=0.114858 p19=1 …)\n", - " Synth(𝍪 preset:.piano=501.0213 start=45.801 dur=1.200 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=58 p18=0.114858 p19=1 …)\n", - " Synth(𝍪 preset:.piano=501.0214 start=46.801 dur=1.200 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=46 p18=0.114858 p19=1 …)\n", - " Synth(𝍪 preset:.piano=501.0215 start=48.801 dur=2.200 p4=0.5 kpos=0.707107 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=39 p18=0.114858 p19=2 …)\n", - " Synth(𝍪 preset:.piano=501.0216 start=48.801 dur=2.200 p4=0.5 kpos=0.707107 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=51 p18=0.114858 p19=2 …)\n", - " Synth(𝍪 preset:.piano=501.0217 start=50.801 dur=2.200 p4=0.5 kpos=0.707107 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=38 p18=0.114858 p19=2 …)\n", - " Synth(𝍪 preset:.piano=501.0218 start=50.801 dur=2.200 p4=0.5 kpos=0.707107 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=50 p18=0.114858 p19=2 …)\n", - " Synth(𝍪 preset:.piano=501.0219 start=52.801 dur=1.200 p4=0.5 kpos=0.707107 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=39 p18=0.114858 p19=1 …)\n", - " Synth(𝍪 preset:.piano=501.022 start=52.801 dur=1.200 p4=0.5 kpos=0.707107 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=51 p18=0.114858 p19=1 …)\n", - " Synth(𝍪 preset:.piano=501.0221 start=56.801 dur=1.200 p4=0.5 kpos=0.707107 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=39 p18=0.114858 p19=1 …)\n", - " Synth(𝍪 preset:.piano=501.0222 start=56.801 dur=1.200 p4=0.5 kpos=0.707107 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=51 p18=0.114858 p19=1 …)\n", - " Synth(𝍪 preset:.piano=501.0223 start=60.801 dur=2.200 p4=0.5 kpos=0.707107 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=34 p18=0.114858 p19=2 …)\n", - " Synth(𝍪 preset:.piano=501.0224 start=60.801 dur=2.200 p4=0.5 kpos=0.707107 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=46 p18=0.114858 p19=2 …)\n", - " Synth(𝍪 preset:.piano=501.0225 start=63.801 dur=0.700 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=46 p18=0.114858 p19=0.5 …)\n", - " Synth(𝍪 preset:.piano=501.0226 start=64.801 dur=1.200 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=51 p18=0.114858 p19=1 …)\n", - " Synth(𝍪 preset:.piano=501.0227 start=65.801 dur=1.200 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=46 p18=0.114858 p19=1 …)\n", - " Synth(𝍪 preset:.piano=501.0228 start=66.801 dur=1.200 p4=0.5 kpos=1 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=39 p18=0.114858 p19=1 …)\n", - " Synth(𝍪 preset:.piano=501.0229 start=68.801 dur=2.200 p4=0.5 kpos=0.707107 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=38 p18=0.114858 p19=2 …)\n", - " Synth(𝍪 preset:.piano=501.023 start=68.801 dur=2.200 p4=0.5 kpos=0.707107 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=50 p18=0.114858 p19=2 …)\n", - " Synth(𝍪 preset:.piano=501.0231 start=70.801 dur=2.200 p4=0.5 kpos=0.707107 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=33 p18=0.114858 p19=2 …)\n", - " Synth(𝍪 preset:.piano=501.0232 start=70.801 dur=2.200 p4=0.5 kpos=0.707107 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=45 p18=0.114858 p19=2 …)" + "SynthGroup(n=70)\n", + " Synth(𝍪 preset:.piano=502.0212 start=57.126 dur=1.200 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=85 p18=0.515178 p19=1 …)\n", + " Synth(𝍪 preset:.piano=502.0213 start=58.126 dur=0.325 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=86 p18=0.515178 p19=0.125 …)\n", + " Synth(𝍪 preset:.piano=502.0214 start=58.251 dur=0.325 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=85 p18=0.515178 p19=0.125 …)\n", + " Synth(𝍪 preset:.piano=502.0215 start=58.376 dur=0.325 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=83 p18=0.515178 p19=0.125 …)\n", + " Synth(𝍪 preset:.piano=502.0216 start=58.501 dur=0.325 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=85 p18=0.515178 p19=0.125 …)\n", + " Synth(𝍪 preset:.piano=502.0217 start=58.626 dur=0.325 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=86 p18=0.515178 p19=0.125 …)\n", + " Synth(𝍪 preset:.piano=502.0218 start=58.751 dur=0.325 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=85 p18=0.515178 p19=0.125 …)\n", + " Synth(𝍪 preset:.piano=502.0219 start=58.876 dur=0.325 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=83 p18=0.515178 p19=0.125 …)\n", + " Synth(𝍪 preset:.piano=502.022 start=59.001 dur=0.325 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=85 p18=0.515178 p19=0.125 …)\n", + " Synth(𝍪 preset:.piano=502.0221 start=59.126 dur=1.164 p4=0.5 kpos=0.288675 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=78 p18=0.515178 p19=0.964286 …)\n", + " Synth(𝍪 preset:.piano=502.0222 start=59.126 dur=1.164 p4=0.5 kpos=0.288675 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=81 p18=0.515178 p19=0.964286 …)\n", + " Synth(𝍪 preset:.piano=502.0223 start=59.126 dur=1.164 p4=0.5 kpos=0.288675 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=86 p18=0.515178 p19=0.964286 …)\n", + " Synth(𝍪 preset:.piano=502.0224 start=60.090 dur=0.236 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.0357143 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=86 p18=0.515178 p19=0.0357143 …)\n", + " Synth(𝍪 preset:.piano=502.0225 start=60.126 dur=0.414 p4=0.5 kpos=0.288675 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=76 p18=0.515178 p19=0.214286 …)\n", + " Synth(𝍪 preset:.piano=502.0226 start=60.126 dur=0.414 p4=0.5 kpos=0.288675 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=81 p18=0.515178 p19=0.214286 …)\n", + " Synth(𝍪 preset:.piano=502.0227 start=60.126 dur=0.414 p4=0.5 kpos=0.288675 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=85 p18=0.515178 p19=0.214286 …)\n", + " Synth(𝍪 preset:.piano=502.0228 start=60.340 dur=0.236 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.0357143 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=86 p18=0.515178 p19=0.0357143 …)\n", + " Synth(𝍪 preset:.piano=502.0229 start=60.376 dur=0.414 p4=0.5 kpos=0.288675 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=76 p18=0.515178 p19=0.214286 …)\n", + " Synth(𝍪 preset:.piano=502.023 start=60.376 dur=0.414 p4=0.5 kpos=0.288675 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=81 p18=0.515178 p19=0.214286 …)\n", + " Synth(𝍪 preset:.piano=502.0231 start=60.376 dur=0.414 p4=0.5 kpos=0.288675 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=85 p18=0.515178 p19=0.214286 …)\n", + " Synth(𝍪 preset:.piano=502.0232 start=60.590 dur=0.236 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.0357143 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=86 p18=0.515178 p19=0.0357143 …)\n", + " Synth(𝍪 preset:.piano=502.0233 start=60.626 dur=0.414 p4=0.5 kpos=0.288675 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=76 p18=0.515178 p19=0.214286 …)\n", + " Synth(𝍪 preset:.piano=502.0234 start=60.626 dur=0.414 p4=0.5 kpos=0.288675 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=81 p18=0.515178 p19=0.214286 …)\n", + " Synth(𝍪 preset:.piano=502.0235 start=60.626 dur=0.414 p4=0.5 kpos=0.288675 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=85 p18=0.515178 p19=0.214286 …)\n", + " Synth(𝍪 preset:.piano=502.0236 start=60.840 dur=0.236 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.0357143 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=86 p18=0.515178 p19=0.0357143 …)\n", + " Synth(𝍪 preset:.piano=502.0237 start=60.876 dur=0.450 p4=0.5 kpos=0.288675 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=76 p18=0.515178 p19=0.25 …)\n", + " Synth(𝍪 preset:.piano=502.0238 start=60.876 dur=0.450 p4=0.5 kpos=0.288675 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=81 p18=0.515178 p19=0.25 …)\n", + " Synth(𝍪 preset:.piano=502.0239 start=60.876 dur=0.450 p4=0.5 kpos=0.288675 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=85 p18=0.515178 p19=0.25 …)\n", + " Synth(𝍪 preset:.piano=502.024 start=61.126 dur=0.950 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=83 p18=0.515178 p19=0.75 …)\n", + " Synth(𝍪 preset:.piano=502.0241 start=61.876 dur=0.450 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=88 p18=0.515178 p19=0.25 …)\n", + " Synth(𝍪 preset:.piano=502.0242 start=57.126 dur=0.700 p4=0.5 kpos=0.288675 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=73 p18=0.515178 p19=0.5 …)\n", + " Synth(𝍪 preset:.piano=502.0243 start=57.126 dur=0.700 p4=0.5 kpos=0.288675 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=76 p18=0.515178 p19=0.5 …)\n", + " Synth(𝍪 preset:.piano=502.0244 start=57.126 dur=0.700 p4=0.5 kpos=0.288675 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=81 p18=0.515178 p19=0.5 …)\n", + " Synth(𝍪 preset:.piano=502.0245 start=61.126 dur=1.200 p4=0.5 kpos=0.353553 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=76 p18=0.515178 p19=1 …)\n", + " Synth(𝍪 preset:.piano=502.0246 start=61.126 dur=1.200 p4=0.5 kpos=0.353553 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=80 p18=0.515178 p19=1 …)\n", + " Synth(𝍪 preset:.piano=502.0247 start=57.126 dur=0.236 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.0357143 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=45 p18=0.515178 p19=0.0357143 …)\n", + " Synth(𝍪 preset:.piano=502.0248 start=57.162 dur=0.236 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.0357143 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=49 p18=0.515178 p19=0.0357143 …)\n", + " Synth(𝍪 preset:.piano=502.0249 start=57.198 dur=0.236 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.0357143 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=52 p18=0.515178 p19=0.0357143 …)\n", + " Synth(𝍪 preset:.piano=502.025 start=57.233 dur=0.343 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=57 p18=0.515178 p19=0.142857 …)\n", + " Synth(𝍪 preset:.piano=502.0251 start=57.376 dur=0.450 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=57 p18=0.515178 p19=0.25 …)\n", + " Synth(𝍪 preset:.piano=502.0252 start=57.626 dur=0.450 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=57 p18=0.515178 p19=0.25 …)\n", + " Synth(𝍪 preset:.piano=502.0253 start=57.876 dur=0.343 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=57 p18=0.515178 p19=0.142857 …)\n", + " Synth(𝍪 preset:.piano=502.0254 start=58.019 dur=0.236 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.0357143 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=45 p18=0.515178 p19=0.0357143 …)\n", + " Synth(𝍪 preset:.piano=502.0255 start=58.055 dur=0.236 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.0357143 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=49 p18=0.515178 p19=0.0357143 …)\n", + " Synth(𝍪 preset:.piano=502.0256 start=58.090 dur=0.236 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.0357143 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=52 p18=0.515178 p19=0.0357143 …)\n", + " Synth(𝍪 preset:.piano=502.0257 start=58.126 dur=0.450 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=57 p18=0.515178 p19=0.25 …)\n", + " Synth(𝍪 preset:.piano=502.0258 start=58.376 dur=0.450 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=57 p18=0.515178 p19=0.25 …)\n", + " Synth(𝍪 preset:.piano=502.0259 start=58.626 dur=0.450 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=57 p18=0.515178 p19=0.25 …)\n", + " Synth(𝍪 preset:.piano=502.026 start=58.876 dur=0.343 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=57 p18=0.515178 p19=0.142857 …)\n", + " Synth(𝍪 preset:.piano=502.0261 start=59.019 dur=0.236 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.0357143 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=38 p18=0.515178 p19=0.0357143 …)\n", + " Synth(𝍪 preset:.piano=502.0262 start=59.055 dur=0.236 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.0357143 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=42 p18=0.515178 p19=0.0357143 …)\n", + " Synth(𝍪 preset:.piano=502.0263 start=59.090 dur=0.236 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.0357143 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=45 p18=0.515178 p19=0.0357143 …)\n", + " Synth(𝍪 preset:.piano=502.0264 start=59.126 dur=0.450 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=50 p18=0.515178 p19=0.25 …)\n", + " Synth(𝍪 preset:.piano=502.0265 start=59.376 dur=0.450 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=50 p18=0.515178 p19=0.25 …)\n", + " Synth(𝍪 preset:.piano=502.0266 start=59.626 dur=0.450 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=50 p18=0.515178 p19=0.25 …)\n", + " Synth(𝍪 preset:.piano=502.0267 start=59.876 dur=0.343 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=50 p18=0.515178 p19=0.142857 …)\n", + " Synth(𝍪 preset:.piano=502.0268 start=60.019 dur=0.236 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.0357143 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=45 p18=0.515178 p19=0.0357143 …)\n", + " Synth(𝍪 preset:.piano=502.0269 start=60.055 dur=0.236 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.0357143 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=49 p18=0.515178 p19=0.0357143 …)\n", + " Synth(𝍪 preset:.piano=502.027 start=60.090 dur=0.236 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.0357143 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=52 p18=0.515178 p19=0.0357143 …)\n", + " Synth(𝍪 preset:.piano=502.0271 start=60.126 dur=0.450 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=57 p18=0.515178 p19=0.25 …)\n", + " Synth(𝍪 preset:.piano=502.0272 start=60.376 dur=0.450 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=57 p18=0.515178 p19=0.25 …)\n", + " Synth(𝍪 preset:.piano=502.0273 start=60.626 dur=0.450 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=57 p18=0.515178 p19=0.25 …)\n", + " Synth(𝍪 preset:.piano=502.0274 start=60.876 dur=0.343 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=57 p18=0.515178 p19=0.142857 …)\n", + " Synth(𝍪 preset:.piano=502.0275 start=61.019 dur=0.236 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.0357143 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=40 p18=0.515178 p19=0.0357143 …)\n", + " Synth(𝍪 preset:.piano=502.0276 start=61.055 dur=0.236 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.0357143 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=44 p18=0.515178 p19=0.0357143 …)\n", + " Synth(𝍪 preset:.piano=502.0277 start=61.090 dur=0.236 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.0357143 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=47 p18=0.515178 p19=0.0357143 …)\n", + " Synth(𝍪 preset:.piano=502.0278 start=61.126 dur=0.450 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=52 p18=0.515178 p19=0.25 …)\n", + " Synth(𝍪 preset:.piano=502.0279 start=61.376 dur=0.450 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=52 p18=0.515178 p19=0.25 …)\n", + " Synth(𝍪 preset:.piano=502.028 start=61.626 dur=0.450 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=52 p18=0.515178 p19=0.25 …)\n", + " Synth(𝍪 preset:.piano=502.0281 start=61.876 dur=0.450 p4=0.5 kpos=0.5 kgain=17 idataidx_=3 inumbps=3 ibplen=1 ichan=0 ifadein=0.1 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=52 p18=0.515178 p19=0.25 …)" ] }, - "execution_count": 4, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "sco.play(fade=(0, 0.1), sustain=0.2)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "4e3509fe-e8f6-4a9b-b3a0-87aa8bf1160f", - "metadata": {}, - "outputs": [], - "source": [ - "sco.write('~/tmp/foo.ly')\n", - "sco[0].dump()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "85f5f734-b77e-4bbc-8948-937273c5b099", - "metadata": {}, - "outputs": [], - "source": [ - "sco.render().score[0].dump()" + "sco.play(instr='.piano', fade=(0, 0.1), sustain=0.2, gain=0.5)" ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "12f08acb-bebe-455c-8e33-9950f8d7f711", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "fb7945e0-4e45-40fd-8497-5440cf5a2fca", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "5a60a534-666a-4159-be53-6924dbbdeb1c", - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { @@ -426,7 +202,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.4" + "version": "3.11.6" } }, "nbformat": 4, diff --git a/notebooks/test/partial-tracking-demo.ipynb b/notebooks/test/partial-tracking-demo.ipynb index ff205c5..8b76e2c 100644 --- a/notebooks/test/partial-tracking-demo.ipynb +++ b/notebooks/test/partial-tracking-demo.ipynb @@ -16,7 +16,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 2, "id": "d4981ea0-53b3-4a46-912b-d747209d87a8", "metadata": {}, "outputs": [ @@ -26,7 +26,7 @@ "Spectrum(numpartials=10082, start=0.014, end=10.729, density=6351.3)" ] }, - "execution_count": 4, + "execution_count": 2, "metadata": {}, "output_type": "execute_result" } @@ -39,7 +39,212 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 3, + "id": "b464ca74-5f66-487a-a160-e35b1a4ca9f8", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "Sample(duration=10.7, sr=44100, numchannels=1)
\n", + "
\n", + " \n", + " " + ], + "text/plain": [ + "Sample(dur=10.728639455782313, sr=44100, ch=1)" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sp.scale(freqfactor=2.0).synthesize()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "15a30887-1b42-4787-a1e3-814a222cd356", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + "\n", + "\n", + "--Csound version 6.19 (double samples) Jan 13 2024\n", + "[commit: c53556fbbb69d14554a4a4bd91efa441a1701d70]\n", + "\u001b[mlibsndfile-1.2.0\n", + "\u001b[msr = 44100.0,\u001b[m kr = 689.062,\u001b[m ksmps = 64\n", + "\u001b[m0dBFS level = 1.0,\u001b[m A4 tuning = 440.0\n", + "\u001b[maudio buffered in 256 sample-frame blocks\n", + "\u001b[mreading 2048-byte blks of shorts from adc:Built-in Audio Pro: (RAW)\n", + "writing 512 sample blks of 64-bit floats to dac:Built-in Audio Pro:\n", + "SECTION 1:\n", + "\u001b[m" + ] + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "5e6c0066f2f24d3a90d313da493f4962", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Button(description='Stop', style=ButtonStyle())" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "37a262eb807e4973ba7c6cf3f290b140", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Output()" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "

Synth(▶ .playPartials:501.0002, 5:ifn=104 6:iskip=0 7:inumrows=3065 8:inumcols=853 9:kspeed=1 10:kloop=0 11:kminfreq=0 12:kmaxfreq=0 13:iflags=6 14:istart=0 15:istop=0 16:kfreqscale=1 17:ichan=1 18:kbwscale=1 19:kgain=1 20:iposition=0 21:kfreqoffset=0 22:kminbw=0.01 23:kmaxbw=1 24:kminamp=0)

" + ], + "text/plain": [ + "Synth(▶ .playPartials=501.0002 start=0.330 dur=-1.000 p4=104 ifn=0 iskip=3065 inumrows=853 inumcols=1 kspeed=0 kloop=0 kminfreq=0 kmaxfreq=6 iflags=0 istart=0 istop=1 kfreqscale=1 ichan=1 kbwscale=1 kgain=0 iposition=0 kfreqoffset=0.01 kminbw=1 kmaxbw=0)" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sp.play(minbw=0.01)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "5a8bf9e8-f4da-4034-9cf0-4216bfc988f2", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "Sample(duration=10.7, sr=44100, numchannels=1)
\n", + "
\n", + " \n", + " " + ], + "text/plain": [ + "Sample(dur=10.728639455782313, sr=44100, ch=1)" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sp2 = sp.scale(bwfactor=0)\n", + "sp2.synthesize()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "7cf0734a-8644-4f0f-81b8-75b0a3d7174a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "Sample(duration=10.7, sr=44100, numchannels=1)
\n", + "
\n", + " \n", + " " + ], + "text/plain": [ + "Sample(dur=10.728639455782313, sr=44100, ch=1)" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sp2 = sp.scale(bwfactor=1)\n", + "sp2.synthesize()" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "297a59b3-748a-478f-b3ed-efd7578f1f78", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "Sample(duration=10.2, sr=44100, numchannels=1)
\n", + "
\n", + " \n", + " " + ], + "text/plain": [ + "Sample(dur=10.207596371882087, sr=44100, ch=1)" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sp.filter(minfreq=2000, maxfreq=4000)[0].scale(bwfactor=20).synthesize()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, "id": "eb739b1a-53f2-4dca-8737-b0936d7e41a2", "metadata": {}, "outputs": [ @@ -65,7 +270,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "699e1dda5a91475587b22f75f7f81aca", + "model_id": "b1bd3d9d13e74aa2bf41d52b29bbfeff", "version_major": 2, "version_minor": 0 }, @@ -79,7 +284,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "5e8633e8ec964f3d84f441fba7c0d31b", + "model_id": "2c3fd56782cb445ca3221792f6ba6ae6", "version_major": 2, "version_minor": 0 }, @@ -93,13 +298,13 @@ { "data": { "text/html": [ - "

Synth(▶ .playPartials:501.0002, 5:ifn=104 6:iskip=0 7:inumrows=3065 8:inumcols=853 9:kspeed=1 10:kloop=0 11:kminfreq=0 12:kmaxfreq=0 13:iflags=6 14:istart=0 15:istop=0 16:kfreqscale=1 17:ichan=1 18:kbwscale=1 19:kgain=1 20:iposition=0 21:kfreqoffset=0 22:kminbw=0 23:kmaxbw=1 24:kminamp=0)

" + "

Synth(𝍪 .playPartials:501.0002, 5:ifn=104 6:iskip=0 7:inumrows=3065 8:inumcols=853 9:kspeed=1 10:kloop=0 11:kminfreq=0 12:kmaxfreq=0 13:iflags=6 14:istart=0 15:istop=0 16:kfreqscale=1 17:ichan=1 18:kbwscale=1 19:kgain=1 20:iposition=0 21:kfreqoffset=0 22:kminbw=0 23:kmaxbw=1 24:kminamp=0)

" ], "text/plain": [ - "Synth(▶ .playPartials=501.0002 start=0.452 dur=-1.000 p4=104 ifn=0 iskip=3065 inumrows=853 inumcols=1 kspeed=0 kloop=0 kminfreq=0 kmaxfreq=6 iflags=0 istart=0 istop=1 kfreqscale=1 ichan=1 kbwscale=1 kgain=0 iposition=0 kfreqoffset=0 kminbw=1 kmaxbw=0)" + "Synth(𝍪 .playPartials=501.0002 start=0.533 dur=-1.000 p4=104 ifn=0 iskip=3065 inumrows=853 inumcols=1 kspeed=0 kloop=0 kminfreq=0 kmaxfreq=6 iflags=0 istart=0 istop=1 kfreqscale=1 ichan=1 kbwscale=1 kgain=0 iposition=0 kfreqoffset=0 kminbw=1 kmaxbw=0)" ] }, - "execution_count": 5, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -119,28 +324,45 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 13, "id": "6e8a9114-4a4e-4c00-8f07-48eb82465c00", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + "\n", + "\n", + "--Csound version 6.19 (double samples) Jan 13 2024\n", + "[commit: c53556fbbb69d14554a4a4bd91efa441a1701d70]\n", + "\u001b[mlibsndfile-1.2.0\n", + "\u001b[msr = 44100.0,\u001b[m kr = 689.062,\u001b[m ksmps = 64\n", + "\u001b[m0dBFS level = 1.0,\u001b[m A4 tuning = 440.0\n", + "\u001b[maudio buffered in 256 sample-frame blocks\n", + "\u001b[mreading 2048-byte blks of shorts from adc:Built-in Audio Pro: (RAW)\n", + "writing 512 sample blks of 64-bit floats to dac:Built-in Audio Pro:\n", + "SECTION 1:\n", + "\u001b[m" + ] + } + ], "source": [ - "# Use the default session\n", - "session = synth.session\n", - "\n", "# Or create a new session\n", - "# session = ce.Session()" + "session = ce.Session()" ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 14, "id": "4767b76b-9588-4e70-b529-3d9dc8e193f8", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "7776a130994f497796054a8d44856d7d", + "model_id": "bea9a26bd24b4c959e3118905a51967f", "version_major": 2, "version_minor": 0 }, @@ -154,7 +376,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "4dbc4aa43eab4c8fbfce67990d653e92", + "model_id": "b64696ba937042cb93f778c41be95b8d", "version_major": 2, "version_minor": 0 }, @@ -168,13 +390,13 @@ { "data": { "text/html": [ - "Session(maelzel, synths=2)" + "Session(engine0, synths=2)" ], "text/plain": [ - "Session(maelzel, synths=2)" + "Session(engine0, synths=2)" ] }, - "execution_count": 7, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -189,7 +411,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 7, "id": "2afd1bd0-e8c4-4edb-8d9b-7d8e91b4a9f3", "metadata": {}, "outputs": [], @@ -210,7 +432,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 7, "id": "f7d635f6-85b4-4f48-8297-ae84bbe2523a", "metadata": {}, "outputs": [ @@ -220,7 +442,7 @@ "Spectrum(numpartials=10082, start=0.014, end=10.729, density=2126.3)" ] }, - "execution_count": 9, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -232,78 +454,29 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 11, "id": "61962149-a704-48ff-aae9-bffdb6407bfb", "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "QSocketNotifier: Can only be used with threads started with QThread\n" - ] - } - ], - "source": [ - "%matplotlib qt\n", - "quantizedspec.plot()" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "1b7e2dfb-07f6-47dd-b7d6-e21ae9a81379", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "bab50fc3217c47099cf558e83c3dca29", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Button(description='Stop', style=ButtonStyle())" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, { "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "5529f819d5e84d69bd65afb0d3198319", - "version_major": 2, - "version_minor": 0 - }, + "image/png": "iVBORw0KGgoAAAANSUhEUgAABvUAAAMWCAYAAADBPAqXAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/SrBM8AAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdfZhkZ13n/899n3Oq+mGmex6S6ZlJQjKAQIJANJEwAiqaZcToimb9gUYTYwwrJtdKsgrkUgNGJSusIeACWTUh7CVcgl4+ghsIo4hASNwgCAECSMgDZGaSzEPP9FOdc+7v749TVd0909Nd1V3VVXXm/eJqMtNd3X26p0/1Off3/n6+zsxMAAAAAAAAAAAAAPqW7/UBAAAAAAAAAAAAAFgeRT0AAAAAAAAAAACgz1HUAwAAAAAAAAAAAPocRT0AAAAAAAAAAACgz1HUAwAAAAAAAAAAAPocRT0AAAAAAAAAAACgz1HUAwAAAAAAAAAAAPocRT0AAAAAAAAAAACgz1HUAwAAAAAAAAAAAPocRT0AAAAAAAAAAACgz7VV1MvzXL/927+tXbt2aXh4WM94xjP0u7/7uzKz5mPMTDfeeKN27Nih4eFhXXzxxfr617++6OMcPHhQl112mcbGxrRp0yZdddVVOnbs2KLH/Pu//7te+tKXamhoSGeddZbe+ta3ruHLBAAAAAAAAAAAAAZXW0W9P/iDP9B73vMe/a//9b/0la98RX/wB3+gt771rfqjP/qj5mPe+ta36p3vfKduu+023XvvvRodHdWePXs0OzvbfMxll12mBx54QHfffbc+/OEP65Of/KRe85rXNN8+OTmpl7/85Tr77LN1//33621ve5ve/OY364//+I878CUDAAAAAAAAAAAAg8XZwja7Ffz4j/+4JiYmdPvttzdfd+mll2p4eFh/9md/JjPTzp079d//+3/Xr//6r0uSjhw5oomJCd1555169atfra985Ss677zz9K//+q+68MILJUl33XWXfuzHfkyPPfaYdu7cqfe85z36zd/8Te3bt0+VSkWS9MY3vlF/8zd/o69+9aud/PoBAAAAAAAAAACAvtdWp973f//3a+/evfra174mSfrCF76gT33qU3rFK14hSXrooYe0b98+XXzxxc33GR8f10UXXaR77rlHknTPPfdo06ZNzYKeJF188cXy3uvee+9t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6U9/ui677DI98sgjkqT7779faZrq4osvbj72Oc95jp72tKfpnnvukSTdc889et7znqeJiYnmY/bs2aPJyUk98MADzccs/BiNxzQ+xsnMzc1pcnJy0QsA9FpuqWLiNwEAAAAAAAAAa9RWUe+iiy7SnXfeqbvuukvvec979NBDD+mlL32pjh49qn379qlSqWjTpk2L3mdiYkL79u2TJO3bt29RQa/x9sbblnvM5OSkZmZmTnpsN998s8bHx5svZ511VjtfGgB0RaZUMZ16AAAAAAAAANBk5vvqZVC01T7yile8ovnn5z//+brooot09tln60Mf+pCGh4c7fnDtuOGGG3T99dc3/z45OUlhD0DP5ZYpchT1AAAAAAAAAABrs6by46ZNm/SsZz1L3/jGN7R9+3bVajUdPnx40WP279/fnMG3fft27d+//4S3N9623GPGxsaWLRxWq1WNjY0tegGAXsuUKqaoBwAAAAAAAABYozUV9Y4dO6b/+I//0I4dO3TBBRcoSRLt3bu3+fYHH3xQjzzyiHbv3i1J2r17t774xS/qwIEDzcfcfffdGhsb03nnndd8zMKP0XhM42MAwCDJLJUkRe01RgMAAAAAAABAaVlwffUyKNoq6v36r/+6/vmf/1nf+ta39JnPfEY/9VM/pSiK9LM/+7MaHx/XVVddpeuvv17/9E//pPvvv19XXnmldu/erRe96EWSpJe//OU677zz9Au/8Av6whe+oI9+9KP6rd/6LV1zzTWqVquSpF/5lV/RN7/5Tb3+9a/XV7/6Vb373e/Whz70IV133XWd/+oBoMvyelGPbj0AAAAAAAAAwFq01Try2GOP6Wd/9mf11FNP6fTTT9dLXvISffazn9Xpp58uSXr7298u770uvfRSzc3Nac+ePXr3u9/dfP8oivThD39Yr33ta7V7926Njo7qiiuu0E033dR8zK5du/SRj3xE1113nd7xjnfozDPP1J/+6Z9qz549HfqSAWD9ZMokSbESzWmmx0cDAAAAAAAAABhUzsys1wfRDZOTkxofH5cUy2lwWicBlMsmf7p+YPSn9Ympv9RkeKrXhwMAAAAAAACcskwmKdORI0c0NjbW68M5JTVqN1/6qe/VxiTq9eFIko6mub77rz83ED8Xa5qpBwBYXibiNwEAAAAAAAAAa0dRDwC6KKvP1IvaSzsGAAAAAAAA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", "text/plain": [ - "Output()" + "
" ] }, "metadata": {}, "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "

Synth(𝍪 .playPartials:501.0005, 5:ifn=105 6:iskip=0 7:inumrows=604 8:inumcols=1243 9:kspeed=1 10:kloop=0 11:kminfreq=0 12:kmaxfreq=0 13:iflags=6 14:istart=0 15:istop=0 16:kfreqscale=1 17:ichan=1 18:kbwscale=1 19:kgain=1 20:iposition=0 21:kfreqoffset=0 22:kminbw=0 23:kmaxbw=0.2 24:kminamp=0)

" - ], - "text/plain": [ - "Synth(𝍪 .playPartials=501.0005 start=68.440 dur=-1.000 p4=105 ifn=0 iskip=604 inumrows=1243 inumcols=1 kspeed=0 kloop=0 kminfreq=0 kmaxfreq=6 iflags=0 istart=0 istop=1 kfreqscale=1 ichan=1 kbwscale=1 kgain=0 iposition=0 kfreqoffset=0 kminbw=0.2 kmaxbw=0)" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" } ], "source": [ - "quantizedspec.play(maxbw=0.2)" + "%matplotlib inline\n", + "quantizedspec.plot(maxfreq=8000, exp=0.2)" ] }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 8, "id": "c44f2d90-e649-42a4-8b36-365b77926fc5", "metadata": {}, "outputs": [], @@ -324,7 +497,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 9, "id": "34bebb43-a8bd-4bc1-a7a1-005ad4e09c3c", "metadata": {}, "outputs": [ @@ -334,7 +507,7 @@ "Spectrum(numpartials=10082, start=0.014, end=10.729, density=2003.2)" ] }, - "execution_count": 33, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -347,64 +520,35 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 12, "id": "70065bc7-9585-4f95-a3a1-b81875c5c34d", "metadata": {}, "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "05fe8f9b712f455b961ef83a7712adb8", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Button(description='Stop', style=ButtonStyle())" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "f31684bb0c5e4a3791e00bb7f37e2c55", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Output()" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, { "data": { "text/html": [ - "

Synth(𝍪 .playPartials:501.0016, 5:ifn=114 6:iskip=0 7:inumrows=510 8:inumcols=1303 9:kspeed=0.5 10:kloop=0 11:kminfreq=0 12:kmaxfreq=0 13:iflags=6 14:istart=0 15:istop=0 16:kfreqscale=1 17:ichan=1 18:kbwscale=1 19:kgain=1 20:iposition=0 21:kfreqoffset=0 22:kminbw=0 23:kmaxbw=1 24:kminamp=0)

" + "Sample(duration=42.9, sr=44100, numchannels=1)
\n", + "
\n", + " \n", + " " ], "text/plain": [ - "Synth(𝍪 .playPartials=501.0016 start=454.083 dur=-1.000 p4=114 ifn=0 iskip=510 inumrows=1303 inumcols=0.5 kspeed=0 kloop=0 kminfreq=0 kmaxfreq=6 iflags=0 istart=0 istop=1 kfreqscale=1 ichan=1 kbwscale=1 kgain=0 iposition=0 kfreqoffset=0 kminbw=1 kmaxbw=0)" + "Sample(dur=42.91460317460317, sr=44100, ch=1)" ] }, - "execution_count": 34, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "quantizedspec2.play(speed=0.5)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "fbfa84b9-f3b7-43b4-aecb-16d147f41de5", - "metadata": {}, - "outputs": [], - "source": [ - "quanti" + "quantizedspec2.synthesize(speed=0.25)" ] } ], diff --git a/notebooks/test/test-experimental-plot.ipynb b/notebooks/test/test-experimental-plot.ipynb index 9fcd37c..3a97ef2 100644 --- a/notebooks/test/test-experimental-plot.ipynb +++ b/notebooks/test/test-experimental-plot.ipynb @@ -12,7 +12,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 2, "id": "0c30422b-a56c-4672-a196-a342388a9f49", "metadata": {}, "outputs": [], @@ -23,7 +23,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 3, "id": "2e5939a2-2539-4afb-a726-f56f26f69787", "metadata": {}, "outputs": [], @@ -47,7 +47,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "id": "6eb00745-4bba-49d4-aba0-8c808b9fe4fe", "metadata": {}, "outputs": [ @@ -183,10 +183,145 @@ "_plot.plotVoices(s.voices)" ] }, + { + "cell_type": "markdown", + "id": "ae7df5c5-af87-4c68-8610-327facec2bc2", + "metadata": {}, + "source": [ + "## Test clips" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "40e9ccea-ebe9-4844-a471-a2f8d54508a5", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[Fraction(179029625023757095, 144115188075855872), Fraction(2614334477566547, 2251799813685248), Fraction(3124129700692023, 1125899906842624), Fraction(321889932550381, 140737488355328), Fraction(901945394760459, 1125899906842624), Fraction(124180887684411, 281474976710656), Fraction(169931741041825, 562949953421312), Fraction(88233788617871, 281474976710656), Fraction(34313140018061, 140737488355328), Fraction(37581058115019, 140737488355328)]\n" + ] + } + ], + "source": [ + "cl = Clip(\"../snd/piano-pitchtest-Cmaj.flac\", pitch=60, speed=1)\n", + "samp = cl.asSample()\n", + "onsets = samp.onsets()\n", + "struct = getScoreStruct()\n", + "onsetbeats = [struct.timeToBeat(onset) for onset in onsets]\n", + "\n", + "from emlib.iterlib import pairwise\n", + "durs = [o2 - o1 for o1, o2 in pairwise(onsetbeats)]\n", + "print(durs)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "db1e8bbb-c832-4fb3-9ad6-ce1e4cbaa777", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "mnOut size: 899\n", + "m_pitchTrack size: 899\n" + ] + }, + { + "data": { + "text/html": [ + "Voice([5C+11:1.242♩:offset=0.035, 5E+10:1.161♩:offset=1.277, 3C+16:2.775♩:offset=2.438, 3C+12:2.287♩:offset=5.213, 6C+23:0.302♩:offset=8.742, 5B+14:0.313♩:offset=9.044, 5A+03:0.244♩:offset=9.358], dur=9.601)
\n", + " " + ], + "text/plain": [ + "Voice([5C+11:1.242♩:offset=0.035, 5E+10:1.161♩:offset=1.277, 3C+16:2.775♩:offset=2.438, 3C+12:2.287♩:offset=5.213, 6C+23:0.302♩:offset=8.742, 5B+14:0.313♩:offset=9.044, 5A+03:0.244♩:offset=9.358])" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pitchtools as pt\n", + "f0 = samp.fundamentalBpf()\n", + "freqs = f0.map(onsets)\n", + "transcr = Voice([Note(pt.f2m(freq), dur=dur, offset=beat) for beat, dur, freq in zip(onsetbeats, durs, freqs) if freq > 50])\n", + "transcr" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "da646c23-ba26-4d28-81cc-bb4375826ff5", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "fe281c8d5da2466a9730edac43e2bb4c", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Button(description='Stop', style=ButtonStyle())" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "2e688f8601f24f5d98c058f08784921f", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Output()" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "SynthGroup(synths=7)\n", + "

Instr: preset:.piano - 7 synths

\n", + "
p1startdurp4kposkgainidataidx_inumbpsibplenichanifadeinifadeoutipchintrp_ifadekindktranspipitchlag17181920...
502.0009 𝍪0.0741.24200.51172310.020.020100.1072.1120.51518...
502.001 𝍪1.3161.16100.51172310.020.020100.1076.1050.51518...
502.0011 𝍪2.4772.77500.51172310.020.020100.1048.1650.51518...
502.0012 𝍪5.2522.28700.51172310.020.020100.1048.1220.51518...
...
" + ], + "text/plain": [ + "SynthGroup(n=7)\n", + " Synth(𝍪 preset:.piano=502.0009 start=38.986 dur=1.242 p4=0.5 kpos=1 kgain=17 idataidx_=2 inumbps=3 ibplen=1 ichan=0.02 ifadein=0.02 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=72.1116 p18=0.515178 p19=1.24227 …)\n", + " Synth(𝍪 preset:.piano=502.001 start=40.228 dur=1.161 p4=0.5 kpos=1 kgain=17 idataidx_=2 inumbps=3 ibplen=1 ichan=0.02 ifadein=0.02 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=76.1049 p18=0.515178 p19=1.161 …)\n", + " Synth(𝍪 preset:.piano=502.0011 start=41.389 dur=2.775 p4=0.5 kpos=1 kgain=17 idataidx_=2 inumbps=3 ibplen=1 ichan=0.02 ifadein=0.02 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=48.1647 p18=0.515178 p19=2.77478 …)\n", + " Synth(𝍪 preset:.piano=502.0012 start=44.164 dur=2.287 p4=0.5 kpos=1 kgain=17 idataidx_=2 inumbps=3 ibplen=1 ichan=0.02 ifadein=0.02 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=48.1221 p18=0.515178 p19=2.28717 …)\n", + " Synth(𝍪 preset:.piano=502.0013 start=47.693 dur=0.302 p4=0.5 kpos=1 kgain=17 idataidx_=2 inumbps=3 ibplen=1 ichan=0.02 ifadein=0.02 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=84.2268 p18=0.515178 p19=0.301859 …)\n", + " Synth(𝍪 preset:.piano=502.0014 start=47.995 dur=0.313 p4=0.5 kpos=1 kgain=17 idataidx_=2 inumbps=3 ibplen=1 ichan=0.02 ifadein=0.02 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=83.138 p18=0.515178 p19=0.313469 …)\n", + " Synth(𝍪 preset:.piano=502.0015 start=48.308 dur=0.244 p4=0.5 kpos=1 kgain=17 idataidx_=2 inumbps=3 ibplen=1 ichan=0.02 ifadein=0.02 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 ipitchlag=0 p17=81.0325 p18=0.515178 p19=0.24381 …)" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "transcr.play(instr='.piano')" + ] + }, { "cell_type": "code", "execution_count": null, - "id": "6aa3bda8-c905-4af0-9c3a-59f37512f6be", + "id": "38a3e8c7-5ee3-4c8a-9665-5d6541500c22", "metadata": {}, "outputs": [], "source": [] diff --git a/notebooks/test/test-nested-tuples.ipynb b/notebooks/test/test-nested-tuples.ipynb index 380a9bc..b44c5e5 100644 --- a/notebooks/test/test-nested-tuples.ipynb +++ b/notebooks/test/test-nested-tuples.ipynb @@ -36,7 +36,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "[maelzel.scoring:quant.py:1410:quantizeMeasure:DEBUG] Measure (4, 4) is not filled (events=[«0.000:0.667 2/3♩ 4C#», «0.667:1.333 2/3♩ 4D», «1.333:2.000 2/3♩ 4E»]). Filling gaps with silences\n" + "[maelzel.scoring:quant.py:1364:quantizeMeasure:DEBUG] Measure 4/4 is not filled (events=[«4C# 0:0.667 2/3♩», «4D 0.667:1.333 2/3♩», «4E 1.333:2 2/3♩»]). Filling gaps with silences\n" ] }, { @@ -44,7 +44,7 @@ "output_type": "stream", "text": [ "Beat: 0 - 1 (dur: 1)\n", - "Best 1 divisions: (quantized in 458.2µs)\n" + "Best 1 divisions: (quantized in 1.0ms)\n" ] }, { @@ -52,10 +52,10 @@ "text/html": [ "\n", "\n", - "\n", + "\n", "\n", "\n", - "\n", + "\n", "\n", "
error div snapped slots info
errordiv snapped slots info
0 (3,) [«0.000:0.667 2/3♩ 4C#», «0.667:1.000 1/3♩ 4D tiedNext»][0, 2] gridError=0, rhythmComplexity=0 (numNotesAcrossSubdivs=0, numTies=0), divPenalty=0 (0, divPenalty=0, cardinalityPenalty=0, numSubdivsPenalty=0, levelPenalty=0)
0(3,) [«4C# 0:0.667 2/3♩», «4D~ 0.667:1 1/3♩»][0, 2] gridError=0, rhythmComplexity=0 (numNotesAcrossSubdivs=0, numTies=0), divPenalty=0 (0, divPenalty=0, cardinalityPenalty=0, numSubdivsPenalty=0, levelPenalty=0)
" ], @@ -71,7 +71,7 @@ "output_type": "stream", "text": [ "Beat: 1 - 2 (dur: 1)\n", - "Best 1 divisions: (quantized in 191.9µs)\n" + "Best 1 divisions: (quantized in 393.6µs)\n" ] }, { @@ -79,10 +79,10 @@ "text/html": [ "\n", "\n", - "\n", + "\n", "\n", "\n", - "\n", + "\n", "\n", "
error div snapped slots info
errordiv snapped slots info
0 (3,) [«0.000:0.333 1/3♩ 4D tiedPrev», «0.333:1.000 2/3♩ 4E»][0, 1] gridError=0, rhythmComplexity=0 (numNotesAcrossSubdivs=0, numTies=0), divPenalty=0 (0, divPenalty=0, cardinalityPenalty=0, numSubdivsPenalty=0, levelPenalty=0)
0(3,) [«~4D 0:0.333 1/3♩», «4E 0.333:1 2/3♩»][0, 1] gridError=0, rhythmComplexity=0 (numNotesAcrossSubdivs=0, numTies=0), divPenalty=0 (0, divPenalty=0, cardinalityPenalty=0, numSubdivsPenalty=0, levelPenalty=0)
" ], @@ -97,77 +97,67 @@ "name": "stderr", "output_type": "stream", "text": [ - "[maelzel.scoring:quant.py:1668:_mergeSiblings:DEBUG] Nodes can merge: \n", + "[maelzel.scoring:quant.py:1677:_mergeSiblings:DEBUG] Nodes can merge: \n", " Node(3/2, \n", - " «0.000:0.667 2/3♩ 3/2 4C#»\n", - " «0.667:1.000 1/3♩ 3/2 4D tiedNext»\n", + " «4C# 0:0.667 2/3♩ 3/2»\n", + " «4D~ 0.667:1 1/3♩ 3/2»\n", ")\n", " Node(3/2, \n", - " «1.000:1.333 1/3♩ 3/2 4D tiedPrev»\n", - " «1.333:2.000 2/3♩ 3/2 4E»\n", + " «~4D 1:1.333 1/3♩ 3/2»\n", + " «4E 1.333:2 2/3♩ 3/2»\n", ")\n", - "[maelzel.scoring:quant.py:1671:_mergeSiblings:DEBUG] ---- Merged node:\n", + "[maelzel.scoring:quant.py:1680:_mergeSiblings:DEBUG] ---- Merged node:\n", " Node(3/2, \n", - " «0.000:0.667 2/3♩ 3/2 4C#»\n", - " «0.667:1.333 2/3♩ 3/2 4D»\n", - " «1.333:2.000 2/3♩ 3/2 4E»\n", + " «4C# 0:0.667 2/3♩ 3/2»\n", + " «4D 0.667:1.333 2/3♩ 3/2»\n", + " «4E 1.333:2 2/3♩ 3/2»\n", ")\n", - "[maelzel.scoring:quant.py:1673:_mergeSiblings:DEBUG] Nodes cannot merge: \n", - "Node(3/2, \n", - " «0.000:0.667 2/3♩ 3/2 4C#»\n", - " «0.667:1.333 2/3♩ 3/2 4D»\n", - " «1.333:2.000 2/3♩ 3/2 4E»\n", - ")\n", - "Node(1/1, \n", - " «2.000:3.000 1/1♩ rest»\n", - ")\n", - "----> not same durRatio\n", - "[maelzel.scoring:quant.py:1668:_mergeSiblings:DEBUG] Nodes can merge: \n", + "[maelzel.scoring:quant.py:1677:_mergeSiblings:DEBUG] Nodes can merge: \n", " Node(1/1, \n", - " «2.000:3.000 1/1♩ rest»\n", + " «rest 2:3 1♩»\n", ")\n", " Node(1/1, \n", - " «3.000:4.000 1/1♩ rest»\n", + " «rest 3:4 1♩»\n", ")\n", - "[maelzel.scoring:quant.py:1671:_mergeSiblings:DEBUG] ---- Merged node:\n", + "[maelzel.scoring:quant.py:1680:_mergeSiblings:DEBUG] ---- Merged node:\n", " Node(1/1, \n", - " «2.000:4.000 2/1♩ rest»\n", + " «rest 2:4 2♩»\n", ")\n", - "[maelzel.scoring:node.py:550:_splitUnnecessaryNodes:DEBUG] Did not split node Node(1/1, \n", + "[maelzel.scoring:node.py:707:_splitUnnecessaryNodes:DEBUG] Did not split node Node(1/1, \n", " Node(3/2, \n", - " «0.000:0.667 2/3♩ 3/2 4C#»\n", - " «0.667:1.333 2/3♩ 3/2 4D»\n", - " «1.333:2.000 2/3♩ 3/2 4E»\n", + " «4C# 0:0.667 2/3♩ 3/2»\n", + " «4D 0.667:1.333 2/3♩ 3/2»\n", + " «4E 1.333:2 2/3♩ 3/2»\n", " )\n", " Node(1/1, \n", - " «2.000:4.000 2/1♩ rest»\n", + " «rest 2:4 2♩»\n", " )\n", ") at 1\n", - "[maelzel.scoring:node.py:550:_splitUnnecessaryNodes:DEBUG] Did not split node Node(1/1, \n", + "[maelzel.scoring:node.py:707:_splitUnnecessaryNodes:DEBUG] Did not split node Node(1/1, \n", " Node(3/2, \n", - " «0.000:0.667 2/3♩ 3/2 4C#»\n", - " «0.667:1.333 2/3♩ 3/2 4D»\n", - " «1.333:2.000 2/3♩ 3/2 4E»\n", + " «4C# 0:0.667 2/3♩ 3/2»\n", + " «4D 0.667:1.333 2/3♩ 3/2»\n", + " «4E 1.333:2 2/3♩ 3/2»\n", " )\n", " Node(1/1, \n", - " «2.000:4.000 2/1♩ rest»\n", + " «rest 2:4 2♩»\n", " )\n", ") at 3\n", - "[maelzel.scoring:renderlily.py:1082:write:DEBUG] Rendering lilypond '/tmp/tmpodbznotd.ly' to '/tmp/tmpodbznotd.png'\n", - "[maelzel.scoring:renderlily.py:1095:write:DEBUG] Found crop file /tmp/tmpodbznotd.cropped.png, using that as output\n" + "[maelzel.scoring:renderlily.py:1141:write:DEBUG] Rendering lilypond '/home/em/.cache/tmp45dg4xdg/5xhwsnt7.ly' to '/home/em/.cache/tmp45dg4xdg/5xhwsnt7.png'\n", + "[maelzel.scoring:renderlily.py:1154:write:DEBUG] Found crop file /home/em/.cache/tmp45dg4xdg/5xhwsnt7.cropped.png, using that as output\n" ] }, { "data": { "text/html": [ - "Voice([4C#:0.667♩, 4D:0.667♩, 4E:0.667♩], dur=2, offset=0)
\n", + "Voice([4C#:0.667♩, 4D:0.667♩, 4E:0.667♩], dur=2)
\n", " " + " src=\"data:image/png;base64,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\"/>" ], "text/plain": [ - "Voice([4C#:0.667♩, 4D:0.667♩, 4E:0.667♩], offset=0)" + "Voice([4C#:0.667♩, 4D:0.667♩, 4E:0.667♩])" ] }, "execution_count": 3, @@ -194,7 +184,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "[maelzel.scoring:quant.py:1410:quantizeMeasure:DEBUG] Measure (4, 4) is not filled (events=[«0.000:0.667 2/3♩ 4C#», «0.667:1.333 2/3♩ 4D», «1.333:1.556 2/9♩ 4E», «1.556:1.778 2/9♩ 4F», «1.778:2.000 2/9♩ 4G»]). Filling gaps with silences\n" + "[maelzel.scoring:quant.py:1364:quantizeMeasure:DEBUG] Measure 4/4 is not filled (events=[«4C# 0:0.667 2/3♩», «4D 0.667:1.333 2/3♩», «4E 1.333:1.556 2/9♩», «4F 1.556:1.778 2/9♩», «4G 1.778:2 2/9♩»]). Filling gaps with silences\n" ] }, { @@ -202,7 +192,7 @@ "output_type": "stream", "text": [ "Beat: 0 - 1 (dur: 1)\n", - "Best 1 divisions: (quantized in 2.2ms)\n" + "Best 1 divisions: (quantized in 1.6ms)\n" ] }, { @@ -210,10 +200,10 @@ "text/html": [ "\n", "\n", - "\n", + "\n", "\n", "\n", - "\n", + "\n", "\n", "
error div snapped slots info
errordiv snapped slots info
0 (3,) [«0.000:0.667 2/3♩ 4C#», «0.667:1.000 1/3♩ 4D tiedNext»][0, 2] gridError=0, rhythmComplexity=0 (numNotesAcrossSubdivs=0, numTies=0), divPenalty=0 (0, divPenalty=0, cardinalityPenalty=0, numSubdivsPenalty=0, levelPenalty=0)
0(3,) [«4C# 0:0.667 2/3♩», «4D~ 0.667:1 1/3♩»][0, 2] gridError=0, rhythmComplexity=0 (numNotesAcrossSubdivs=0, numTies=0), divPenalty=0 (0, divPenalty=0, cardinalityPenalty=0, numSubdivsPenalty=0, levelPenalty=0)
" ], @@ -224,12 +214,21 @@ "metadata": {}, "output_type": "display_data" }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[maelzel.scoring:quant.py:951:quantizeBeatBinary:DEBUG] Skipping (8,), gridError=0.2678143330795103 * 1.0 > minError=0.2638627687823378\n", + "[maelzel.scoring:quant.py:968:quantizeBeatBinary:DEBUG] Skipping (3, 9), totalError=0.0021095023109728986 > minError=0.0017888543819998318\n", + "[maelzel.scoring:quant.py:942:quantizeBeatBinary:DEBUG] Skipping (8, 9), divPenalty=0.0412311 * 0.0447214 > minError=0.00178885\n" + ] + }, { "name": "stdout", "output_type": "stream", "text": [ "Beat: 1 - 2 (dur: 1)\n", - "Best 3 divisions: (quantized in 64.0ms)\n" + "Best 3 divisions: (quantized in 115.3ms)\n" ] }, { @@ -237,12 +236,12 @@ "text/html": [ "\n", "\n", - "\n", + "\n", "\n", "\n", - "\n", - "\n", - "\n", + "\n", + "\n", + "\n", "\n", "
error div snapped slots info
errordiv snapped slots info
0.001118 (1, 3, 3)[«0.000:0.333 1/3♩ 4D tiedPrev», «0.333:0.556 2/9♩ 4E», «0.556:0.778 2/9♩ 4F», «0.778:1.000 2/9♩ 4G»][0, 1, 3, 5]gridError=0, rhythmComplexity=0.112 (numNotesAcrossSubdivs=1, numTies=0), divPenalty=0 (0, divPenalty=0, cardinalityPenalty=0, numSubdivsPenalty=0, levelPenalty=0)
0.0017889(9,) [«0.000:0.333 1/3♩ 4D tiedPrev», «0.333:0.556 2/9♩ 4E», «0.556:0.778 2/9♩ 4F», «0.778:1.000 2/9♩ 4G»][0, 3, 5, 7]gridError=0, rhythmComplexity=0 (numNotesAcrossSubdivs=0, numTies=0), divPenalty=0.04 (8e-05, divPenalty=0.04, cardinalityPenalty=0, numSubdivsPenalty=0, levelPenalty=0)
0.21813 (6,) [«0.000:0.333 1/3♩ 4D tiedPrev», «0.333:0.500 1/6♩ 4E», «0.500:0.833 1/3♩ 4F», «0.833:1.000 1/6♩ 4G»][0, 2, 3, 5]gridError=0.218, rhythmComplexity=0 (numNotesAcrossSubdivs=0, numTies=0), divPenalty=0.02 (4e-05, divPenalty=0.02, cardinalityPenalty=0, numSubdivsPenalty=0, levelPenalty=0)
0.0011(1, 3, 3)[«~4D 0:0.333 1/3♩», «4E 0.333:0.556 2/9♩», «4F 0.556:0.778 2/9♩», «4G 0.778:1 2/9♩»][0, 1, 3, 5]gridError=0, rhythmComplexity=0.112 (numNotesAcrossSubdivs=1, numTies=0), divPenalty=0 (0, divPenalty=0, cardinalityPenalty=0, numSubdivsPenalty=0, levelPenalty=0)
0.0018(9,) [«~4D 0:0.333 1/3♩», «4E 0.333:0.556 2/9♩», «4F 0.556:0.778 2/9♩», «4G 0.778:1 2/9♩»][0, 3, 5, 7]gridError=0, rhythmComplexity=0 (numNotesAcrossSubdivs=0, numTies=0), divPenalty=0.04 (8e-05, divPenalty=0.04, cardinalityPenalty=0, numSubdivsPenalty=0, levelPenalty=0)
0.2639(6,) [«~4D 0:0.333 1/3♩», «4E 0.333:0.5 1/6♩», «4F 0.5:0.833 1/3♩», «4G 0.833:1 1/6♩»] [0, 2, 3, 5]gridError=0.264, rhythmComplexity=0 (numNotesAcrossSubdivs=0, numTies=0), divPenalty=0.02 (4e-05, divPenalty=0.02, cardinalityPenalty=0, numSubdivsPenalty=0, levelPenalty=0)
" ], @@ -257,112 +256,98 @@ "name": "stderr", "output_type": "stream", "text": [ - "[maelzel.scoring:quant.py:1668:_mergeSiblings:DEBUG] Nodes can merge: \n", + "[maelzel.scoring:quant.py:1677:_mergeSiblings:DEBUG] Nodes can merge: \n", " Node(3/2, \n", - " «1.333:1.556 2/9♩ 3/2,3/2 4E»\n", - " «1.556:1.667 1/9♩ 3/2,3/2 4F tiedNext»\n", + " «4E 1.333:1.556 2/9♩ 3/2,3/2»\n", + " «4F~ 1.556:1.667 1/9♩ 3/2,3/2»\n", ")\n", " Node(3/2, \n", - " «1.667:1.778 1/9♩ 3/2,3/2 4F tiedPrev»\n", - " «1.778:2.000 2/9♩ 3/2,3/2 4G»\n", + " «~4F 1.667:1.778 1/9♩ 3/2,3/2»\n", + " «4G 1.778:2 2/9♩ 3/2,3/2»\n", ")\n", - "[maelzel.scoring:quant.py:1671:_mergeSiblings:DEBUG] ---- Merged node:\n", + "[maelzel.scoring:quant.py:1680:_mergeSiblings:DEBUG] ---- Merged node:\n", " Node(3/2, \n", - " «1.333:1.556 2/9♩ 3/2,3/2 4E»\n", - " «1.556:1.778 2/9♩ 3/2,3/2 4F»\n", - " «1.778:2.000 2/9♩ 3/2,3/2 4G»\n", + " «4E 1.333:1.556 2/9♩ 3/2,3/2»\n", + " «4F 1.556:1.778 2/9♩ 3/2,3/2»\n", + " «4G 1.778:2 2/9♩ 3/2,3/2»\n", ")\n", - "[maelzel.scoring:quant.py:1668:_mergeSiblings:DEBUG] Nodes can merge: \n", + "[maelzel.scoring:quant.py:1677:_mergeSiblings:DEBUG] Nodes can merge: \n", " Node(3/2, \n", - " «0.000:0.667 2/3♩ 3/2 4C#»\n", - " «0.667:1.000 1/3♩ 3/2 4D tiedNext»\n", + " «4C# 0:0.667 2/3♩ 3/2»\n", + " «4D~ 0.667:1 1/3♩ 3/2»\n", ")\n", " Node(3/2, \n", - " «1.000:1.333 1/3♩ 3/2 4D tiedPrev»\n", + " «~4D 1:1.333 1/3♩ 3/2»\n", " Node(3/2, \n", - " «1.333:1.556 2/9♩ 3/2,3/2 4E»\n", - " «1.556:1.778 2/9♩ 3/2,3/2 4F»\n", - " «1.778:2.000 2/9♩ 3/2,3/2 4G»\n", + " «4E 1.333:1.556 2/9♩ 3/2,3/2»\n", + " «4F 1.556:1.778 2/9♩ 3/2,3/2»\n", + " «4G 1.778:2 2/9♩ 3/2,3/2»\n", " )\n", ")\n", - "[maelzel.scoring:quant.py:1671:_mergeSiblings:DEBUG] ---- Merged node:\n", + "[maelzel.scoring:quant.py:1680:_mergeSiblings:DEBUG] ---- Merged node:\n", " Node(3/2, \n", - " «0.000:0.667 2/3♩ 3/2 4C#»\n", - " «0.667:1.333 2/3♩ 3/2 4D»\n", + " «4C# 0:0.667 2/3♩ 3/2»\n", + " «4D 0.667:1.333 2/3♩ 3/2»\n", " Node(3/2, \n", - " «1.333:1.556 2/9♩ 3/2,3/2 4E»\n", - " «1.556:1.778 2/9♩ 3/2,3/2 4F»\n", - " «1.778:2.000 2/9♩ 3/2,3/2 4G»\n", + " «4E 1.333:1.556 2/9♩ 3/2,3/2»\n", + " «4F 1.556:1.778 2/9♩ 3/2,3/2»\n", + " «4G 1.778:2 2/9♩ 3/2,3/2»\n", " )\n", ")\n", - "[maelzel.scoring:quant.py:1673:_mergeSiblings:DEBUG] Nodes cannot merge: \n", - "Node(3/2, \n", - " «0.000:0.667 2/3♩ 3/2 4C#»\n", - " «0.667:1.333 2/3♩ 3/2 4D»\n", - " Node(3/2, \n", - " «1.333:1.556 2/9♩ 3/2,3/2 4E»\n", - " «1.556:1.778 2/9♩ 3/2,3/2 4F»\n", - " «1.778:2.000 2/9♩ 3/2,3/2 4G»\n", - " )\n", - ")\n", - "Node(1/1, \n", - " «2.000:3.000 1/1♩ rest»\n", - ")\n", - "----> not same durRatio\n", - "[maelzel.scoring:quant.py:1668:_mergeSiblings:DEBUG] Nodes can merge: \n", + "[maelzel.scoring:quant.py:1677:_mergeSiblings:DEBUG] Nodes can merge: \n", " Node(1/1, \n", - " «2.000:3.000 1/1♩ rest»\n", + " «rest 2:3 1♩»\n", ")\n", " Node(1/1, \n", - " «3.000:4.000 1/1♩ rest»\n", + " «rest 3:4 1♩»\n", ")\n", - "[maelzel.scoring:quant.py:1671:_mergeSiblings:DEBUG] ---- Merged node:\n", + "[maelzel.scoring:quant.py:1680:_mergeSiblings:DEBUG] ---- Merged node:\n", " Node(1/1, \n", - " «2.000:4.000 2/1♩ rest»\n", + " «rest 2:4 2♩»\n", ")\n", - "[maelzel.scoring:node.py:550:_splitUnnecessaryNodes:DEBUG] Did not split node Node(1/1, \n", + "[maelzel.scoring:node.py:707:_splitUnnecessaryNodes:DEBUG] Did not split node Node(1/1, \n", " Node(3/2, \n", - " «0.000:0.667 2/3♩ 3/2 4C#»\n", - " «0.667:1.333 2/3♩ 3/2 4D»\n", + " «4C# 0:0.667 2/3♩ 3/2»\n", + " «4D 0.667:1.333 2/3♩ 3/2»\n", " Node(3/2, \n", - " «1.333:1.556 2/9♩ 3/2,3/2 4E»\n", - " «1.556:1.778 2/9♩ 3/2,3/2 4F»\n", - " «1.778:2.000 2/9♩ 3/2,3/2 4G»\n", + " «4E 1.333:1.556 2/9♩ 3/2,3/2»\n", + " «4F 1.556:1.778 2/9♩ 3/2,3/2»\n", + " «4G 1.778:2 2/9♩ 3/2,3/2»\n", " )\n", " )\n", " Node(1/1, \n", - " «2.000:4.000 2/1♩ rest»\n", + " «rest 2:4 2♩»\n", " )\n", ") at 1\n", - "[maelzel.scoring:node.py:550:_splitUnnecessaryNodes:DEBUG] Did not split node Node(1/1, \n", + "[maelzel.scoring:node.py:707:_splitUnnecessaryNodes:DEBUG] Did not split node Node(1/1, \n", " Node(3/2, \n", - " «0.000:0.667 2/3♩ 3/2 4C#»\n", - " «0.667:1.333 2/3♩ 3/2 4D»\n", + " «4C# 0:0.667 2/3♩ 3/2»\n", + " «4D 0.667:1.333 2/3♩ 3/2»\n", " Node(3/2, \n", - " «1.333:1.556 2/9♩ 3/2,3/2 4E»\n", - " «1.556:1.778 2/9♩ 3/2,3/2 4F»\n", - " «1.778:2.000 2/9♩ 3/2,3/2 4G»\n", + " «4E 1.333:1.556 2/9♩ 3/2,3/2»\n", + " «4F 1.556:1.778 2/9♩ 3/2,3/2»\n", + " «4G 1.778:2 2/9♩ 3/2,3/2»\n", " )\n", " )\n", " Node(1/1, \n", - " «2.000:4.000 2/1♩ rest»\n", + " «rest 2:4 2♩»\n", " )\n", ") at 3\n", - "[maelzel.scoring:renderlily.py:1082:write:DEBUG] Rendering lilypond '/tmp/tmp406337gv.ly' to '/tmp/tmp406337gv.png'\n", - "[maelzel.scoring:renderlily.py:1095:write:DEBUG] Found crop file /tmp/tmp406337gv.cropped.png, using that as output\n" + "[maelzel.scoring:renderlily.py:1141:write:DEBUG] Rendering lilypond '/home/em/.cache/tmp45dg4xdg/o0jm3o_f.ly' to '/home/em/.cache/tmp45dg4xdg/o0jm3o_f.png'\n", + "[maelzel.scoring:renderlily.py:1154:write:DEBUG] Found crop file /home/em/.cache/tmp45dg4xdg/o0jm3o_f.cropped.png, using that as output\n" ] }, { "data": { "text/html": [ - "Voice([4C#:0.667♩, 4D:0.667♩, 4E:0.222♩, 4F:0.222♩, 4G:0.222♩], dur=2, offset=0)
\n", + "Voice([4C#:0.667♩, 4D:0.667♩, 4E:0.222♩, 4F:0.222♩, 4G:0.222♩], dur=2)
\n", " " + " src=\"data:image/png;base64,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\"/>" ], "text/plain": [ - "Voice([4C#:0.667♩, 4D:0.667♩, 4E:0.222♩, 4F:0.222♩, 4G:0.222♩], offset=0)" + "Voice([4C#:0.667♩, 4D:0.667♩, 4E:0.222♩, 4F:0.222♩, 4G:0.222♩])" ] }, "execution_count": 4, @@ -392,7 +377,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "[maelzel.scoring:quant.py:1410:quantizeMeasure:DEBUG] Measure (4, 4) is not filled (events=[«0.000:0.667 2/3♩ 4C#», «0.667:1.000 1/3♩ 4D», «1.000:1.333 1/3♩ 4D#», «1.333:1.556 2/9♩ 4E», «1.556:1.778 2/9♩ 4F», «1.778:2.000 2/9♩ 4G»]). Filling gaps with silences\n" + "[maelzel.scoring:quant.py:1364:quantizeMeasure:DEBUG] Measure 4/4 is not filled (events=[«4C# 0:0.667 2/3♩», «4D 0.667:1 1/3♩», «4D# 1:1.333 1/3♩», «4E 1.333:1.556 2/9♩», «4F 1.556:1.778 2/9♩», «4G 1.778:2 2/9♩»]). Filling gaps with silences\n" ] }, { @@ -400,7 +385,7 @@ "output_type": "stream", "text": [ "Beat: 0 - 1 (dur: 1)\n", - "Best 1 divisions: (quantized in 2.5ms)\n" + "Best 1 divisions: (quantized in 2.2ms)\n" ] }, { @@ -408,10 +393,10 @@ "text/html": [ "\n", "\n", - "\n", + "\n", "\n", "\n", - "\n", + "\n", "\n", "
error div snapped slots info
errordiv snapped slots info
0 (3,) [«0.000:0.667 2/3♩ 4C#», «0.667:1.000 1/3♩ 4D»][0, 2] gridError=0, rhythmComplexity=0 (numNotesAcrossSubdivs=0, numTies=0), divPenalty=0 (0, divPenalty=0, cardinalityPenalty=0, numSubdivsPenalty=0, levelPenalty=0)
0(3,) [«4C# 0:0.667 2/3♩», «4D 0.667:1 1/3♩»][0, 2] gridError=0, rhythmComplexity=0 (numNotesAcrossSubdivs=0, numTies=0), divPenalty=0 (0, divPenalty=0, cardinalityPenalty=0, numSubdivsPenalty=0, levelPenalty=0)
" ], @@ -422,12 +407,21 @@ "metadata": {}, "output_type": "display_data" }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[maelzel.scoring:quant.py:951:quantizeBeatBinary:DEBUG] Skipping (8,), gridError=0.2678143330795103 * 1.0 > minError=0.2638627687823378\n", + "[maelzel.scoring:quant.py:968:quantizeBeatBinary:DEBUG] Skipping (3, 9), totalError=0.0021095023109728986 > minError=0.0017888543819998318\n", + "[maelzel.scoring:quant.py:942:quantizeBeatBinary:DEBUG] Skipping (8, 9), divPenalty=0.0412311 * 0.0447214 > minError=0.00178885\n" + ] + }, { "name": "stdout", "output_type": "stream", "text": [ "Beat: 1 - 2 (dur: 1)\n", - "Best 3 divisions: (quantized in 43.1ms)\n" + "Best 3 divisions: (quantized in 104.7ms)\n" ] }, { @@ -435,12 +429,12 @@ "text/html": [ "\n", "\n", - "\n", + "\n", "\n", "\n", - "\n", - "\n", - "\n", + "\n", + "\n", + "\n", "\n", "
error div snapped slots info
errordiv snapped slots info
0.001118 (1, 3, 3)[«0.000:0.333 1/3♩ 4D#», «0.333:0.556 2/9♩ 4E», «0.556:0.778 2/9♩ 4F», «0.778:1.000 2/9♩ 4G»][0, 1, 3, 5]gridError=0, rhythmComplexity=0.112 (numNotesAcrossSubdivs=1, numTies=0), divPenalty=0 (0, divPenalty=0, cardinalityPenalty=0, numSubdivsPenalty=0, levelPenalty=0)
0.0017889(9,) [«0.000:0.333 1/3♩ 4D#», «0.333:0.556 2/9♩ 4E», «0.556:0.778 2/9♩ 4F», «0.778:1.000 2/9♩ 4G»][0, 3, 5, 7]gridError=0, rhythmComplexity=0 (numNotesAcrossSubdivs=0, numTies=0), divPenalty=0.04 (8e-05, divPenalty=0.04, cardinalityPenalty=0, numSubdivsPenalty=0, levelPenalty=0)
0.21813 (6,) [«0.000:0.333 1/3♩ 4D#», «0.333:0.500 1/6♩ 4E», «0.500:0.833 1/3♩ 4F», «0.833:1.000 1/6♩ 4G»][0, 2, 3, 5]gridError=0.218, rhythmComplexity=0 (numNotesAcrossSubdivs=0, numTies=0), divPenalty=0.02 (4e-05, divPenalty=0.02, cardinalityPenalty=0, numSubdivsPenalty=0, levelPenalty=0)
0.0011(1, 3, 3)[«4D# 0:0.333 1/3♩», «4E 0.333:0.556 2/9♩», «4F 0.556:0.778 2/9♩», «4G 0.778:1 2/9♩»][0, 1, 3, 5]gridError=0, rhythmComplexity=0.112 (numNotesAcrossSubdivs=1, numTies=0), divPenalty=0 (0, divPenalty=0, cardinalityPenalty=0, numSubdivsPenalty=0, levelPenalty=0)
0.0018(9,) [«4D# 0:0.333 1/3♩», «4E 0.333:0.556 2/9♩», «4F 0.556:0.778 2/9♩», «4G 0.778:1 2/9♩»][0, 3, 5, 7]gridError=0, rhythmComplexity=0 (numNotesAcrossSubdivs=0, numTies=0), divPenalty=0.04 (8e-05, divPenalty=0.04, cardinalityPenalty=0, numSubdivsPenalty=0, levelPenalty=0)
0.2639(6,) [«4D# 0:0.333 1/3♩», «4E 0.333:0.5 1/6♩», «4F 0.5:0.833 1/3♩», «4G 0.833:1 1/6♩»] [0, 2, 3, 5]gridError=0.264, rhythmComplexity=0 (numNotesAcrossSubdivs=0, numTies=0), divPenalty=0.02 (4e-05, divPenalty=0.02, cardinalityPenalty=0, numSubdivsPenalty=0, levelPenalty=0)
" ], @@ -455,83 +449,70 @@ "name": "stderr", "output_type": "stream", "text": [ - "[maelzel.scoring:quant.py:1668:_mergeSiblings:DEBUG] Nodes can merge: \n", + "[maelzel.scoring:quant.py:1677:_mergeSiblings:DEBUG] Nodes can merge: \n", " Node(3/2, \n", - " «1.333:1.556 2/9♩ 3/2,3/2 4E»\n", - " «1.556:1.667 1/9♩ 3/2,3/2 4F tiedNext»\n", + " «4E 1.333:1.556 2/9♩ 3/2,3/2»\n", + " «4F~ 1.556:1.667 1/9♩ 3/2,3/2»\n", ")\n", " Node(3/2, \n", - " «1.667:1.778 1/9♩ 3/2,3/2 4F tiedPrev»\n", - " «1.778:2.000 2/9♩ 3/2,3/2 4G»\n", + " «~4F 1.667:1.778 1/9♩ 3/2,3/2»\n", + " «4G 1.778:2 2/9♩ 3/2,3/2»\n", ")\n", - "[maelzel.scoring:quant.py:1671:_mergeSiblings:DEBUG] ---- Merged node:\n", + "[maelzel.scoring:quant.py:1680:_mergeSiblings:DEBUG] ---- Merged node:\n", " Node(3/2, \n", - " «1.333:1.556 2/9♩ 3/2,3/2 4E»\n", - " «1.556:1.778 2/9♩ 3/2,3/2 4F»\n", - " «1.778:2.000 2/9♩ 3/2,3/2 4G»\n", + " «4E 1.333:1.556 2/9♩ 3/2,3/2»\n", + " «4F 1.556:1.778 2/9♩ 3/2,3/2»\n", + " «4G 1.778:2 2/9♩ 3/2,3/2»\n", ")\n", - "[maelzel.scoring:quant.py:1673:_mergeSiblings:DEBUG] Nodes cannot merge: \n", + "[maelzel.scoring:quant.py:1683:_mergeSiblings:DEBUG] Nodes cannot merge: \n", "Node(3/2, \n", - " «0.000:0.667 2/3♩ 3/2 4C#»\n", - " «0.667:1.000 1/3♩ 3/2 4D»\n", + " «4C# 0:0.667 2/3♩ 3/2»\n", + " «4D 0.667:1 1/3♩ 3/2»\n", ")\n", "Node(3/2, \n", - " «1.000:1.333 1/3♩ 3/2 4D#»\n", + " «4D# 1:1.333 1/3♩ 3/2»\n", " Node(3/2, \n", - " «1.333:1.556 2/9♩ 3/2,3/2 4E»\n", - " «1.556:1.778 2/9♩ 3/2,3/2 4F»\n", - " «1.778:2.000 2/9♩ 3/2,3/2 4G»\n", + " «4E 1.333:1.556 2/9♩ 3/2,3/2»\n", + " «4F 1.556:1.778 2/9♩ 3/2,3/2»\n", + " «4G 1.778:2 2/9♩ 3/2,3/2»\n", " )\n", ")\n", "----> no need to extend node over beat\n", - "[maelzel.scoring:quant.py:1673:_mergeSiblings:DEBUG] Nodes cannot merge: \n", - "Node(3/2, \n", - " «1.000:1.333 1/3♩ 3/2 4D#»\n", - " Node(3/2, \n", - " «1.333:1.556 2/9♩ 3/2,3/2 4E»\n", - " «1.556:1.778 2/9♩ 3/2,3/2 4F»\n", - " «1.778:2.000 2/9♩ 3/2,3/2 4G»\n", - " )\n", - ")\n", - "Node(1/1, \n", - " «2.000:3.000 1/1♩ rest»\n", - ")\n", - "----> not same durRatio\n", - "[maelzel.scoring:quant.py:1668:_mergeSiblings:DEBUG] Nodes can merge: \n", + "[maelzel.scoring:quant.py:1677:_mergeSiblings:DEBUG] Nodes can merge: \n", " Node(1/1, \n", - " «2.000:3.000 1/1♩ rest»\n", + " «rest 2:3 1♩»\n", ")\n", " Node(1/1, \n", - " «3.000:4.000 1/1♩ rest»\n", + " «rest 3:4 1♩»\n", ")\n", - "[maelzel.scoring:quant.py:1671:_mergeSiblings:DEBUG] ---- Merged node:\n", + "[maelzel.scoring:quant.py:1680:_mergeSiblings:DEBUG] ---- Merged node:\n", " Node(1/1, \n", - " «2.000:4.000 2/1♩ rest»\n", + " «rest 2:4 2♩»\n", ")\n", - "[maelzel.scoring:node.py:550:_splitUnnecessaryNodes:DEBUG] Did not split node Node(1/1, \n", + "[maelzel.scoring:node.py:707:_splitUnnecessaryNodes:DEBUG] Did not split node Node(1/1, \n", " Node(3/2, \n", - " «0.000:0.667 2/3♩ 3/2 4C#»\n", - " «0.667:1.000 1/3♩ 3/2 4D»\n", + " «4C# 0:0.667 2/3♩ 3/2»\n", + " «4D 0.667:1 1/3♩ 3/2»\n", " )\n", " Node(3/2, \n", - " «1.000:1.333 1/3♩ 3/2 4D#»\n", + " «4D# 1:1.333 1/3♩ 3/2»\n", " Node(3/2, \n", - " «1.333:1.556 2/9♩ 3/2,3/2 4E»\n", - " «1.556:1.778 2/9♩ 3/2,3/2 4F»\n", - " «1.778:2.000 2/9♩ 3/2,3/2 4G»\n", + " «4E 1.333:1.556 2/9♩ 3/2,3/2»\n", + " «4F 1.556:1.778 2/9♩ 3/2,3/2»\n", + " «4G 1.778:2 2/9♩ 3/2,3/2»\n", " )\n", " )\n", " Node(1/1, \n", - " «2.000:4.000 2/1♩ rest»\n", + " «rest 2:4 2♩»\n", " )\n", ") at 3\n", - "[maelzel.scoring:renderlily.py:1082:write:DEBUG] Rendering lilypond '/tmp/tmpqemvzc98.ly' to '/tmp/tmpqemvzc98.png'\n", - "[maelzel.scoring:renderlily.py:1095:write:DEBUG] Found crop file /tmp/tmpqemvzc98.cropped.png, using that as output\n" + "[maelzel.scoring:renderlily.py:1141:write:DEBUG] Rendering lilypond '/home/em/.cache/tmp45dg4xdg/m0wn1fyd.ly' to '/home/em/.cache/tmp45dg4xdg/m0wn1fyd.png'\n", + "[maelzel.scoring:renderlily.py:1154:write:DEBUG] Found crop file /home/em/.cache/tmp45dg4xdg/m0wn1fyd.cropped.png, using that as output\n" ] }, { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "" ] @@ -559,7 +540,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 6, "id": "c68e65f2-7566-4f14-88f4-6fe36f97c6d3", "metadata": {}, "outputs": [ @@ -567,7 +548,8 @@ "name": "stderr", "output_type": "stream", "text": [ - "[maelzel.scoring:quant.py:1410:quantizeMeasure:DEBUG] Measure (4, 4) is not filled (events=[«0.000:0.333 1/3♩ 4C+20», «0.333:0.400 1/15♩ 4Eb<», «0.400:0.467 1/15♩ 4D», «0.467:0.667 1/5♩ 4F+», «0.667:1.000 1/3♩ 4G»]). Filling gaps with silences\n" + "[maelzel.scoring:quant.py:1364:quantizeMeasure:DEBUG] Measure 4/4 is not filled (events=[«4C+20 0:0.333 1/3♩», «4Eb< 0.333:0.4 1/15♩», «4D 0.4:0.467 1/15♩», «4F+ 0.467:0.667 1/5♩», «4G 0.667:1 1/3♩»]). Filling gaps with silences\n", + "[maelzel.scoring:quant.py:942:quantizeBeatBinary:DEBUG] Skipping (9, 15), divPenalty=0.206398 * 0.0447214 > minError=0.00909945\n" ] }, { @@ -575,7 +557,7 @@ "output_type": "stream", "text": [ "Beat: 0 - 1 (dur: 1)\n", - "Best 3 divisions: (quantized in 10.5ms)\n" + "Best 4 divisions: (quantized in 92.1ms)\n" ] }, { @@ -583,12 +565,13 @@ "text/html": [ "\n", "\n", - "\n", + "\n", "\n", "\n", - "\n", - "\n", - "\n", + "\n", + "\n", + "\n", + "\n", "\n", "
error div snapped slots info
errordiv snapped slots info
0.0097365(15,)[«0.000:0.333 1/3♩ 4C+20», «0.333:0.400 1/15♩ 4Eb<», «0.400:0.467 1/15♩ 4D», «0.467:0.667 1/5♩ 4F+», «0.667:1.000 1/3♩ 4G»] [0, 5, 6, 7, 10]gridError=0, rhythmComplexity=0.358 (numNotesAcrossSubdivs=0, numTies=2), divPenalty=0.202 (0.000405, divPenalty=0.2, cardinalityPenalty=0.1, numSubdivsPenalty=0, levelPenalty=0)
0.11052 (9,) [«0.000:0.333 1/3♩ 4C+20», «0.333:0.444 1/9♩ 4Eb<», «0.444:grace 4D properties={'.snappedGracenote': True, 'originalDuration': Fraction(1, 15)}», «0.444:0.667 2/9♩ 4F+», «0.667:1.000 1/3♩ 4G»][0, 3, 4, 4, 6] gridError=0.111, rhythmComplexity=0 (numNotesAcrossSubdivs=0, numTies=0), divPenalty=0.04 (8e-05, divPenalty=0.04, cardinalityPenalty=0, numSubdivsPenalty=0, levelPenalty=0)
0.18981 (6,) [«0.000:0.333 1/3♩ 4C+20», «0.333:grace 4Eb< properties={'.snappedGracenote': True, 'originalDuration': Fraction(1, 15)}», «0.333:0.500 1/6♩ 4D», «0.500:0.667 1/6♩ 4F+», «0.667:1.000 1/3♩ 4G»][0, 2, 2, 3, 4] gridError=0.19, rhythmComplexity=0 (numNotesAcrossSubdivs=0, numTies=0), divPenalty=0.02 (4e-05, divPenalty=0.02, cardinalityPenalty=0, numSubdivsPenalty=0, levelPenalty=0)
0.0091(15, 3)[«4C+20 0:0.333 1/3♩», «4Eb< 0.333:0.4 1/15♩», «4D 0.4:0.467 1/15♩», «4F+ 0.467:0.667 1/5♩», «4G 0.667:1 1/3♩»] [0, 10, 12, 14, 16]gridError=0, rhythmComplexity=0.0894 (numNotesAcrossSubdivs=1, numTies=0), divPenalty=0.202 (0.000405, divPenalty=0.2, cardinalityPenalty=0.1, numSubdivsPenalty=0, levelPenalty=0)
0.0097(15,) [«4C+20 0:0.333 1/3♩», «4Eb< 0.333:0.4 1/15♩», «4D 0.4:0.467 1/15♩», «4F+ 0.467:0.667 1/5♩», «4G 0.667:1 1/3♩»] [0, 5, 6, 7, 10] gridError=0, rhythmComplexity=0.358 (numNotesAcrossSubdivs=0, numTies=2), divPenalty=0.202 (0.000405, divPenalty=0.2, cardinalityPenalty=0.1, numSubdivsPenalty=0, levelPenalty=0)
0.1456(9,) [«4C+20 0:0.333 1/3♩», «4Eb< 0.333:0.444 1/9♩», «4D 0.444:grace properties={'.snappedGracenote': True, '.originalDuration': Fraction(1, 15)}», «4F+ 0.444:0.667 2/9♩», «4G 0.667:1 1/3♩»][0, 3, 4, 4, 6] gridError=0.146, rhythmComplexity=0 (numNotesAcrossSubdivs=0, numTies=0), divPenalty=0.04 (8e-05, divPenalty=0.04, cardinalityPenalty=0, numSubdivsPenalty=0, levelPenalty=0)
0.2336(6,) [«4C+20 0:0.333 1/3♩», «4Eb< 0.333:grace properties={'.snappedGracenote': True, '.originalDuration': Fraction(1, 15)}», «4D 0.333:0.5 1/6♩», «4F+ 0.5:0.667 1/6♩», «4G 0.667:1 1/3♩»] [0, 2, 2, 3, 4] gridError=0.234, rhythmComplexity=0 (numNotesAcrossSubdivs=0, numTies=0), divPenalty=0.02 (4e-05, divPenalty=0.02, cardinalityPenalty=0, numSubdivsPenalty=0, levelPenalty=0)
" ], @@ -603,56 +586,62 @@ "name": "stderr", "output_type": "stream", "text": [ - "[maelzel.scoring:quant.py:1673:_mergeSiblings:DEBUG] Nodes cannot merge: \n", - "Node(15/8, \n", - " «0.000:0.267 4/15♩ 15/8 4C+20 tiedNext»\n", - " «0.267:0.333 1/15♩ 15/8 4C+20 tiedPrev»\n", - " «0.333:0.400 1/15♩ 15/8 4Eb<»\n", - " «0.400:0.467 1/15♩ 15/8 4D»\n", - " «0.467:0.667 1/5♩ 15/8 4F+»\n", - " «0.667:0.933 4/15♩ 15/8 4G tiedNext»\n", - " «0.933:1.000 1/15♩ 15/8 4G tiedPrev»\n", + "[maelzel.scoring:quant.py:1683:_mergeSiblings:DEBUG] Nodes cannot merge: \n", + "Node(1/1, \n", + " Node(15/8, \n", + " «4C+20~ 0:0.267 4/15♩ 15/8»\n", + " «~4C+20 0.267:0.333 1/15♩ 15/8»\n", + " «4Eb< 0.333:0.4 1/15♩ 15/8»\n", + " «4D 0.4:0.467 1/15♩ 15/8»\n", + " «4F+~ 0.467:0.5 1/30♩ 15/8»\n", + " )\n", + " Node(3/2, \n", + " «~4F+ 0.5:0.667 1/6♩ 3/2»\n", + " «4G 0.667:1 1/3♩ 3/2»\n", + " )\n", ")\n", "Node(1/1, \n", - " «1.000:2.000 1/1♩ rest»\n", + " «rest 1:2 1♩»\n", ")\n", - "----> not same durRatio\n", - "[maelzel.scoring:quant.py:1668:_mergeSiblings:DEBUG] Nodes can merge: \n", + "----> no need to extend node over beat\n", + "[maelzel.scoring:quant.py:1677:_mergeSiblings:DEBUG] Nodes can merge: \n", " Node(1/1, \n", - " «1.000:2.000 1/1♩ rest»\n", + " «rest 1:2 1♩»\n", ")\n", " Node(1/1, \n", - " «2.000:3.000 1/1♩ rest»\n", + " «rest 2:3 1♩»\n", ")\n", - "[maelzel.scoring:quant.py:1671:_mergeSiblings:DEBUG] ---- Merged node:\n", + "[maelzel.scoring:quant.py:1680:_mergeSiblings:DEBUG] ---- Merged node:\n", " Node(1/1, \n", - " «1.000:3.000 2/1♩ rest»\n", + " «rest 1:3 2♩»\n", ")\n", - "[maelzel.scoring:quant.py:1668:_mergeSiblings:DEBUG] Nodes can merge: \n", + "[maelzel.scoring:quant.py:1677:_mergeSiblings:DEBUG] Nodes can merge: \n", " Node(1/1, \n", - " «1.000:3.000 2/1♩ rest»\n", + " «rest 1:3 2♩»\n", ")\n", " Node(1/1, \n", - " «3.000:4.000 1/1♩ rest»\n", + " «rest 3:4 1♩»\n", ")\n", - "[maelzel.scoring:quant.py:1671:_mergeSiblings:DEBUG] ---- Merged node:\n", + "[maelzel.scoring:quant.py:1680:_mergeSiblings:DEBUG] ---- Merged node:\n", " Node(1/1, \n", - " «1.000:4.000 3/1♩ rest»\n", + " «rest 1:4 3♩»\n", ")\n", - "[maelzel.scoring:rendermusicxml.py:740:_renderNode:DEBUG] Starting tuplet (15, 8) at «0.000:0.267 4/15♩ 15/8 4C+20 tiedNext attachments=[Clef(kind=treble)] properties={'clef': 'treble'}»\n", - "[maelzel.scoring:rendermusicxml.py:1104:callMuseScore:DEBUG] Rendering musicxml via MuseScore. Args: ['/home/em/.local/bin/musescore', '-o', '/tmp/tmpt4j8u7z5.png', '--force', '--image-resolution', '200', '--trim-image', '20', '/tmp/tmp7ibpvb0u.musicxml']\n" + "[maelzel.scoring:node.py:805:_splitNotationAtBoundary:DEBUG] Found a syncopation but the callback was negative, so «rest 1:4 3♩» will not be split\n", + "[maelzel.scoring:rendermusicxml.py:759:_renderNode:DEBUG] Starting tuplet (15, 8) at «4C+20~ 0:0.267 4/15♩ 15/8 attachments=[Clef(kind=treble)] properties={'clef': 'treble'}»\n", + "[maelzel.scoring:rendermusicxml.py:759:_renderNode:DEBUG] Starting tuplet (3, 2) at «~4F+ 0.5:0.667 1/6♩ 3/2»\n", + "[maelzel.scoring:rendermusicxml.py:1143:callMuseScore:DEBUG] Rendering musicxml via MuseScore. Args: ['/home/em/.local/bin/musescore', '-o', '/home/em/.cache/tmp45dg4xdg/3vxyyphx.png', '--force', '--image-resolution', '200', '--trim-image', '20', '/home/em/.cache/tmp45dg4xdg/ouaw18hr.musicxml']\n" ] }, { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "" ] }, "metadata": { "image/png": { - "width": 821.4000000000001 + "width": 283.20000000000005 } }, "output_type": "display_data" @@ -671,16 +660,35 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 7, "id": "b2e387ba-bbc2-4efa-8257-b28cb2efc39e", "metadata": { "tags": [] }, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + "\n", + "\n", + "--Csound version 6.19 (double samples) Jan 13 2024\n", + "[commit: c53556fbbb69d14554a4a4bd91efa441a1701d70]\n", + "\u001b[mlibsndfile-1.2.0\n", + "\u001b[msr = 44100.0,\u001b[m kr = 689.062,\u001b[m ksmps = 64\n", + "\u001b[m0dBFS level = 1.0,\u001b[m A4 tuning = 442.0\n", + "\u001b[maudio buffered in 256 sample-frame blocks\n", + "\u001b[mreading 2048-byte blks of shorts from adc:Built-in Audio Pro: (RAW)\n", + "writing 512 sample blks of 64-bit floats to dac:Built-in Audio Pro:\n", + "SECTION 1:\n", + "\u001b[m" + ] + }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "f53d612986c2463c8c18afc84b0e8e60", + "model_id": "37a67495052c45de98d43858e735c32b", "version_major": 2, "version_minor": 0 }, @@ -694,7 +702,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "010f747699b74c6191319dac2e831514", + "model_id": "b5f664ad69bd4623905466cb4b392b9a", "version_major": 2, "version_minor": 0 }, @@ -708,20 +716,20 @@ { "data": { "text/html": [ - "SynthGroup - start: 0.050, dur: 1.000, synths: 5\n", - "

instr: preset:saw - 5 synths

\n", - "
p1startdur45:idataidx_6:inumbps7:ibplen8:igain9:ichan10:ipos11:ifadein12:ifadeout13:ipchintrp_14:ifadekind15:ktransp16:klag17:kcutoffratio18:kfilterq19202122...
502.0012 𝍪0.0500.3330192311-10.020.020100.103060.20.51518...
502.0013 𝍪0.3830.0670192311-10.020.020100.103062.750.51518...
502.0014 𝍪0.4500.0670192311-10.020.020100.1030620.51518...
502.0015 𝍪0.5170.2000192311-10.020.020100.103065.50.51518...
...
" + "SynthGroup(synths=5)\n", + "

Instr: preset:saw - 5 synths

\n", + "
p1startdurp4kposkgainidataidx_inumbpsibplenichanifadeinifadeoutipchintrp_ifadekindktranspklagkcutoffratiokfilterq1920212223...
501.0002 𝍪0.0290.33300.51192310.020.020100.103060.20.515180.33333...
501.0003 𝍪0.3620.06700.51192310.020.020100.103062.750.515180.066667...
501.0004 𝍪0.4290.06700.51192310.020.020100.1030620.515180.066667...
501.0005 𝍪0.4960.20000.51192310.020.020100.103065.50.515180.2...
...
" ], "text/plain": [ "SynthGroup(n=5)\n", - " Synth(𝍪 preset:saw:502.0012, p4=0 idataidx_:5=19 inumbps:6=2 ibplen:7=3 igain:8=1 ichan:9=1 ipos:10=-1 ifadein:11=0.02 ifadeout:12=0.02 ipchintrp_:13=0 ifadekind:14=1 ktransp:15=0 klag:16=0.1 kcutoffratio:17=0 kfilterq:18=3 p19=0 p20=60.2 p21=0.515178 p22=0.333333 ...)\n", - " Synth(𝍪 preset:saw:502.0013, p4=0 idataidx_:5=19 inumbps:6=2 ibplen:7=3 igain:8=1 ichan:9=1 ipos:10=-1 ifadein:11=0.02 ifadeout:12=0.02 ipchintrp_:13=0 ifadekind:14=1 ktransp:15=0 klag:16=0.1 kcutoffratio:17=0 kfilterq:18=3 p19=0 p20=62.75 p21=0.515178 p22=0.0666667 ...)\n", - " Synth(𝍪 preset:saw:502.0014, p4=0 idataidx_:5=19 inumbps:6=2 ibplen:7=3 igain:8=1 ichan:9=1 ipos:10=-1 ifadein:11=0.02 ifadeout:12=0.02 ipchintrp_:13=0 ifadekind:14=1 ktransp:15=0 klag:16=0.1 kcutoffratio:17=0 kfilterq:18=3 p19=0 p20=62 p21=0.515178 p22=0.0666667 ...)\n", - " Synth(𝍪 preset:saw:502.0015, p4=0 idataidx_:5=19 inumbps:6=2 ibplen:7=3 igain:8=1 ichan:9=1 ipos:10=-1 ifadein:11=0.02 ifadeout:12=0.02 ipchintrp_:13=0 ifadekind:14=1 ktransp:15=0 klag:16=0.1 kcutoffratio:17=0 kfilterq:18=3 p19=0 p20=65.5 p21=0.515178 p22=0.2 ...)\n", - " Synth(𝍪 preset:saw:502.0016, p4=0 idataidx_:5=19 inumbps:6=2 ibplen:7=3 igain:8=1 ichan:9=1 ipos:10=-1 ifadein:11=0.02 ifadeout:12=0.02 ipchintrp_:13=0 ifadekind:14=1 ktransp:15=0 klag:16=0.1 kcutoffratio:17=0 kfilterq:18=3 p19=0 p20=67 p21=0.515178 p22=0.333333 ...)" + " Synth(𝍪 preset:saw=501.0002 start=1.034 dur=0.333 p4=0.5 kpos=1 kgain=19 idataidx_=2 inumbps=3 ibplen=1 ichan=0.02 ifadein=0.02 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 klag=0 kcutoffratio=3 kfilterq=0 p19=60.2 p20=0.515178 p21=0.333333 p22=60.2 …)\n", + " Synth(𝍪 preset:saw=501.0003 start=1.367 dur=0.067 p4=0.5 kpos=1 kgain=19 idataidx_=2 inumbps=3 ibplen=1 ichan=0.02 ifadein=0.02 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 klag=0 kcutoffratio=3 kfilterq=0 p19=62.75 p20=0.515178 p21=0.0666667 p22=62.75 …)\n", + " Synth(𝍪 preset:saw=501.0004 start=1.434 dur=0.067 p4=0.5 kpos=1 kgain=19 idataidx_=2 inumbps=3 ibplen=1 ichan=0.02 ifadein=0.02 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 klag=0 kcutoffratio=3 kfilterq=0 p19=62 p20=0.515178 p21=0.0666667 p22=62 …)\n", + " Synth(𝍪 preset:saw=501.0005 start=1.501 dur=0.200 p4=0.5 kpos=1 kgain=19 idataidx_=2 inumbps=3 ibplen=1 ichan=0.02 ifadein=0.02 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 klag=0 kcutoffratio=3 kfilterq=0 p19=65.5 p20=0.515178 p21=0.2 p22=65.5 …)\n", + " Synth(𝍪 preset:saw=501.0006 start=1.701 dur=0.333 p4=0.5 kpos=1 kgain=19 idataidx_=2 inumbps=3 ibplen=1 ichan=0.02 ifadein=0.02 ifadeout=0 ipchintrp_=1 ifadekind=0 ktransp=0.1 klag=0 kcutoffratio=3 kfilterq=0 p19=67 p20=0.515178 p21=0.333333 p22=67 …)" ] }, - "execution_count": 14, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -729,14 +737,6 @@ "source": [ "v.play(instr='saw')" ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "2888ec6b-7f2a-4bd7-a2d0-0208a7735710", - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { @@ -755,7 +755,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.15" + "version": "3.11.6" } }, "nbformat": 4, diff --git a/notebooks/test/test-offline.ipynb b/notebooks/test/test-offline.ipynb index 6ae92b4..a243581 100644 --- a/notebooks/test/test-offline.ipynb +++ b/notebooks/test/test-offline.ipynb @@ -22,15 +22,17 @@ "text": [ "\n", "\n", - "--Csound version 6.19 (double samples) Oct 30 2023\n", - "[commit: 79e5d31bea441e5289073319ab2b1e42d01814b9]\n", + "\n", + "--Csound version 6.19 (double samples) Jan 13 2024\n", + "[commit: c53556fbbb69d14554a4a4bd91efa441a1701d70]\n", "\u001b[mlibsndfile-1.2.0\n", - "\u001b[msr = 48000.0,\u001b[m kr = 750.000,\u001b[m ksmps = 64\n", - "\u001b[m0dBFS level = 1.0,\u001b[m A4 tuning = 442.0\n", - "\u001b[maudio buffered in 512 sample-frame blocks\n", - "\u001b[mreading 4096-byte blks of shorts from adc:Built-in Audio Pro: (RAW)\n", - "writing 1024 sample blks of 64-bit floats to dac:Built-in Audio Pro:\n", - "SECTION 1:\n" + "\u001b[msr = 44100.0,\u001b[m kr = 689.062,\u001b[m ksmps = 64\n", + "\u001b[m0dBFS level = 1.0,\u001b[m A4 tuning = 440.0\n", + "\u001b[maudio buffered in 256 sample-frame blocks\n", + "\u001b[mreading 2048-byte blks of shorts from adc:Built-in Audio Pro: (RAW)\n", + "writing 512 sample blks of 64-bit floats to dac:Built-in Audio Pro:\n", + "SECTION 1:\n", + "\u001b[m" ] } ], @@ -49,8 +51,7 @@ "data": { "text/html": [ "Instr sine
\n", - "    iamp:p5=0.1
\n", - "    Controls: kfreq = 1000.0\n", + "    iamp:p5=0.1, kfreq:p6=1000
\n", "
\n", "
a0 = oscili:a(iamp, lag:k(kfreq, 0.1))\n",
        "a0 *= cossegr:a(0, 0.01, 1, 0.1, 0)\n",
@@ -59,7 +60,7 @@
        ""
       ],
       "text/plain": [
-       "Instr(sine, iamp:5=0.1, tabargs={'kfreq': 1000.0})"
+       "Instr(sine, iamp:5=0.1, kfreq:6=1000)"
       ]
      },
      "execution_count": 3,
@@ -78,14 +79,14 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 14,
+   "execution_count": 4,
    "id": "30562f9e-2a6b-4407-a883-dc060bf4084e",
    "metadata": {},
    "outputs": [
     {
      "data": {
       "application/vnd.jupyter.widget-view+json": {
-       "model_id": "930f8d59aca94a3691acd06c6c9330be",
+       "model_id": "66e6f882fe2d448991a344a0a5a71777",
        "version_major": 2,
        "version_minor": 0
       },
@@ -99,7 +100,7 @@
     {
      "data": {
       "application/vnd.jupyter.widget-view+json": {
-       "model_id": "1f234499e276482184f122fdf0dc6c7c",
+       "model_id": "00c16ee711734df2851a0e434e345a0f",
        "version_major": 2,
        "version_minor": 0
       },
@@ -113,13 +114,13 @@
     {
      "data": {
       "text/html": [
-       "

Synth(▶ sine:501.0008, 5:iamp=0.2)

" + "

Synth(▶ sine:501.0002, 5:iamp=0.2 6:kfreq=442)

" ], "text/plain": [ - "Synth(▶ sine=501.0008 start=3146.327 dur=4.000 |kfreq=442| p4=9930 iamp=0.2)" + "Synth(▶ sine=501.0002 start=1.897 dur=4.000 p4=0.2 iamp=442)" ] }, - "execution_count": 14, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -140,7 +141,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "UnifiedCSD: /tmp/tmphqwdlv0v.csd\n", + "UnifiedCSD: /tmp/tmpxaej3c_c.csd\n", "instr _releaseDynargsToken uses instrument number 1\n", "instr _stop uses instrument number 2\n", "instr _setControl uses instrument number 3\n", @@ -149,19 +150,22 @@ "instr _automatePargViaPargs uses instrument number 6\n", "instr _pwrite uses instrument number 7\n", "instr _chnset uses instrument number 8\n", - "Elapsed time at end of orchestra compile: real: 0.017s, CPU: 0.017s\n", + "PSET: isname=\"_initDynamicControls\", pmax=5\n", + "WARNING: \u001b[mi[fixme] pset args != pmax\u001b[m\n", + "\u001b[m\n", + "Elapsed time at end of orchestra compile: real: 0.013s, CPU: 0.013s\n", "\u001b[msorting score ...\n", "\t... done\n", - "Elapsed time at end of score sort: real: 0.018s, CPU: 0.017s\n", - "\u001b[m--Csound version 6.19 (double samples) Oct 30 2023\n", - "[commit: 79e5d31bea441e5289073319ab2b1e42d01814b9]\n", - "\u001b[mlibsndfile-1.2.0\n", + "Elapsed time at end of score sort: real: 0.013s, CPU: 0.013s\n", + "\u001b[m--Csound version 6.19 (double samples) Jan 13 2024\n", + "[commit: c53556fbbb69d14554a4a4bd91efa441a1701d70]\n", + "\u001b[mlibsndfile-1.2.2\n", "\u001b[mgraphics suppressed, ascii substituted\n", "sr = 44100.0,\u001b[m kr = 689.062,\u001b[m ksmps = 64\n", "\u001b[m0dBFS level = 1.0,\u001b[m A4 tuning = 442.0\n", "\u001b[mStrsets[20]: 'linear'\n", "ftable 101:\n", - "ftable 101:\t16000 points, scalemax 0.000\n", + "ftable 101:\t100000 points, scalemax 0.000\n", "ftable 102:\n", "ftable 102:\t1000 points, scalemax 0.000\n", "ftable 103:\n", @@ -174,34 +178,30 @@ "ftable 106:\t10000 points, scalemax 0.000\n", "orch now loaded\n", "\u001b[maudio buffered in 256 sample-frame blocks\n", - "\u001b[mwriting 2048-byte blks of floats to /home/em/tmp/sine.wav (WAV)\n", + "\u001b[mwriting 2048-byte blks of floats to /home/em/dev/python/maelzel/notebooks/test/tmp/sine.wav (WAV)\n", "SECTION 1:\n", "\u001b[mftable 1:\n", - "ftable 1:\t16000 points, scalemax 0.000\n", - "new alloc for instr _initDynamicControls:\n", - "\u001b[mWARNING: \u001b[minstr _initDynamicControls uses 5 p-fields but is given 6\u001b[m\n", - "\u001b[mnew alloc for instr 50:\n", + "ftable 1:\t100000 points, scalemax 0.000\n", + "new alloc for instr 50:\n", "\u001b[mnew alloc for instr 2449:\n", "\u001b[mB 0.000 .. 2.000 T 2.000 TT 2.000 M: 0.20000 0.00000\n", - "new alloc for instr _setControl:\n", + "new alloc for instr _pwrite:\n", "\u001b[mB 2.000 .. 3.000 T 3.000 TT 3.000 M: 0.20000 0.00000\n", - "new alloc for instr _automateControlViaPargs:\n", - "\u001b[mWARNING: \u001b[minstr _automateControlViaPargs uses 8 p-fields but is given 18\u001b[m\n", - "\u001b[m rtevent:\t T 4.100 TT 4.100 M: 0.20000 0.00000\n", - "new alloc for instr _releaseDynargsToken:\n", - "\u001b[mB 3.000 .. 4.250 T 4.251 TT 4.251 M: 0.00000 0.00000\n", + "new alloc for instr _automatePargViaPargs:\n", + "\u001b[mWARNING: \u001b[minstr _automatePargViaPargs uses 12 p-fields but is given 18\u001b[m\n", + "\u001b[mB 3.000 .. 4.250 T 4.251 TT 4.251 M: 0.20000 0.00000\n", "Score finished in csoundPerform().\n", "inactive allocs returned to freespace\n", "end of score.\t\t overall amps:\u001b[m 0.20000 0.00000\n", "0 errors in performance\n", - "\u001b[mElapsed time at end of performance: real: 0.042s, CPU: 0.040s\n", - "\u001b[m512 2048 sample blks of floats written to /home/em/tmp/sine.wav (WAV)\n" + "\u001b[mElapsed time at end of performance: real: 0.055s, CPU: 0.032s\n", + "\u001b[m512 2048 sample blks of floats written to /home/em/dev/python/maelzel/notebooks/test/tmp/sine.wav (WAV)\n" ] }, { "data": { "text/html": [ - "RenderJob(outfile='/home/em/tmp/sine.wav' (not found), sr=44100, encoding='')
\n", + "RenderJob(outfile='/home/em/dev/python/maelzel/notebooks/test/tmp/sine.wav' (not found), sr=44100, encoding='')
\n", " )" + "RenderJob(outfile='/home/em/dev/python/maelzel/notebooks/test/tmp/sine.wav', samplerate=44100, encoding='', starttime=0.0, endtime=4.0, process=)" ] }, "execution_count": 6, @@ -226,13 +226,12 @@ "event = r.sched('sine', 0, 4, kfreq=442, iamp=0.2)\n", "event.set(kfreq=800, delay=2)\n", "event.automate(\"kfreq\", (0, 1000, 0.1, 500, 0.2, 1000, 0.3, 500, 0.4, 1000), delay=3, overtake=True)\n", - "r.writeCsd('~/tmp/sine.csd')\n", - "r.render('~/tmp/sine.wav', tail=0.25)" + "r.render('tmp/sine.wav', tail=0.25)" ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 7, "id": "a56a6041-2170-49fe-a9d0-e4338b285211", "metadata": {}, "outputs": [ @@ -240,7 +239,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "UnifiedCSD: /tmp/tmpp_vr9_m6.csd\n", + "UnifiedCSD: /tmp/tmp37f71f3v.csd\n", "instr _releaseDynargsToken uses instrument number 1\n", "instr _stop uses instrument number 2\n", "instr _setControl uses instrument number 3\n", @@ -249,19 +248,22 @@ "instr _automatePargViaPargs uses instrument number 6\n", "instr _pwrite uses instrument number 7\n", "instr _chnset uses instrument number 8\n", - "Elapsed time at end of orchestra compile: real: 0.016s, CPU: 0.016s\n", + "PSET: isname=\"_initDynamicControls\", pmax=5\n", + "WARNING: \u001b[mi[fixme] pset args != pmax\u001b[m\n", + "\u001b[m\n", + "Elapsed time at end of orchestra compile: real: 0.014s, CPU: 0.014s\n", "\u001b[msorting score ...\n", "\t... done\n", - "Elapsed time at end of score sort: real: 0.017s, CPU: 0.017s\n", - "\u001b[m--Csound version 6.19 (double samples) Oct 30 2023\n", - "[commit: 79e5d31bea441e5289073319ab2b1e42d01814b9]\n", - "\u001b[mlibsndfile-1.2.0\n", + "Elapsed time at end of score sort: real: 0.014s, CPU: 0.014s\n", + "\u001b[m--Csound version 6.19 (double samples) Jan 13 2024\n", + "[commit: c53556fbbb69d14554a4a4bd91efa441a1701d70]\n", + "\u001b[mlibsndfile-1.2.2\n", "\u001b[mgraphics suppressed, ascii substituted\n", - "sr = 48000.0,\u001b[m kr = 750.000,\u001b[m ksmps = 64\n", + "sr = 44100.0,\u001b[m kr = 689.062,\u001b[m ksmps = 64\n", "\u001b[m0dBFS level = 1.0,\u001b[m A4 tuning = 442.0\n", "\u001b[mStrsets[20]: 'linear'\n", "ftable 101:\n", - "ftable 101:\t16000 points, scalemax 0.000\n", + "ftable 101:\t100000 points, scalemax 0.000\n", "ftable 102:\n", "ftable 102:\t1000 points, scalemax 0.000\n", "ftable 103:\n", @@ -274,69 +276,47 @@ "ftable 106:\t10000 points, scalemax 0.000\n", "orch now loaded\n", "\u001b[maudio buffered in 256 sample-frame blocks\n", - "\u001b[mwriting 2048-byte blks of floats to /tmp/tmps8ca4_0s.wav (WAV)\n", + "\u001b[mwriting 2048-byte blks of floats to /tmp/tmp8c4h7u_p.wav (WAV)\n", "SECTION 1:\n", "\u001b[mftable 1:\n", - "ftable 1:\t16000 points, scalemax 0.000\n", - "new alloc for instr _initDynamicControls:\n", - "\u001b[mWARNING: \u001b[minstr _initDynamicControls uses 5 p-fields but is given 6\u001b[m\n", - "\u001b[mnew alloc for instr 50:\n", + "ftable 1:\t100000 points, scalemax 0.000\n", + "new alloc for instr 50:\n", "\u001b[mnew alloc for instr 2449:\n", "\u001b[mB 0.000 .. 2.000 T 2.000 TT 2.000 M: 0.20000 0.00000\n", - "new alloc for instr _setControl:\n", + "new alloc for instr _pwrite:\n", "\u001b[mB 2.000 .. 3.000 T 3.000 TT 3.000 M: 0.20000 0.00000\n", - "new alloc for instr _automateControlViaPargs:\n", - "\u001b[mWARNING: \u001b[minstr _automateControlViaPargs uses 8 p-fields but is given 18\u001b[m\n", - "\u001b[m rtevent:\t T 4.100 TT 4.100 M: 0.20000 0.00000\n", - "new alloc for instr _releaseDynargsToken:\n", - "\u001b[mB 3.000 .. 4.250 T 4.251 TT 4.251 M: 0.00000 0.00000\n", + "new alloc for instr _automatePargViaPargs:\n", + "\u001b[mWARNING: \u001b[minstr _automatePargViaPargs uses 12 p-fields but is given 18\u001b[m\n", + "\u001b[mB 3.000 .. 4.250 T 4.251 TT 4.251 M: 0.20000 0.00000\n", "Score finished in csoundPerform().\n", "inactive allocs returned to freespace\n", "end of score.\t\t overall amps:\u001b[m 0.20000 0.00000\n", "0 errors in performance\n", - "\u001b[mElapsed time at end of performance: real: 0.039s, CPU: 0.039s\n", - "\u001b[m512 2048 sample blks of floats written to /tmp/tmps8ca4_0s.wav (WAV)\n" + "\u001b[mElapsed time at end of performance: real: 0.034s, CPU: 0.034s\n", + "\u001b[m512 2048 sample blks of floats written to /tmp/tmp8c4h7u_p.wav (WAV)\n" ] }, { "data": { "text/html": [ - "Renderer(sr=48000, renderedJobs=[RenderJob(outfile='/tmp/tmps8ca4_0s.wav', samplerate=48000, encoding='', starttime=0.0, endtime=4.0, process=)])
Soundfile: '/tmp/tmps8ca4_0s.wav', duration: 4.25, sr: 48000, numchannels: 2)
\n", + "Renderer(sr=44100, renderedJobs=[RenderJob(outfile='/tmp/tmp8c4h7u_p.wav', samplerate=44100, encoding='', starttime=0.0, endtime=4.0, process=)])
Soundfile: '/tmp/tmp8c4h7u_p.wav', duration: 4.25, sr: 44100, numchannels: 2)
\n", "
\n", + " src=\"data:image/png;base64,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cw2qzzyD0WGuwegw12B0mGswOsy1E8uRXhRbrHIOAAAAAAAAAGpAGQwAAAAAAABQh+quDG5ubs7dd9+d5ubmWkeBumauwegw12B0mGtQfeYZjA5zDUaHuQajw1yD0WGu1bdCpVKp1DoEAAAAAAAAAMdX3V0ZDAAAAAAAAIAyGAAAAAAAAKAuKYMBAAAAAAAA6pAyGAAAAAAAAKAOKYMBAAAAAAAA6tAJWQbfd999mTZtWlpaWjJr1qysXLly2PHf/OY3c95556WlpSXvfOc7873vfW+UksKJbSRz7cEHH0yhUBhya2lpGcW0cOJ56qmn8pu/+ZuZOnVqCoVCHnvssTdcZ/ny5XnXu96V5ubmnHPOOXnwwQernhNOdCOda8uXLz/onFYoFNLV1TU6geEEtWjRolxyySWZMGFCTj/99Fx77bV5+eWX33A979fgyB3NPPNeDUbuK1/5Si688MK0tramtbU1s2fPzt/8zd8Mu47zGYzcSOeacxocu3vuuSeFQiF33HHHsOOc1+rLCVcGP/LII5k/f37uvvvurF69OhdddFHmzp2bTZs2HXL8j370o9xwww2ZN29efvzjH+faa6/NtddemxdeeGGUk8OJZaRzLUlaW1vz6quvDt5+8YtfjGJiOPH09PTkoosuyn333XdE43/+85/nmmuuyfvf//6sWbMmd9xxR373d3833//+96ucFE5sI51r+7z88stDzmunn356lRJCffjhD3+YT3ziE/n7v//7PPHEE+nv788HP/jB9PT0HHYd79dgZI5mniXeq8FInXXWWbnnnnuyatWqPPfcc/n1X//1/PZv/3ZefPHFQ453PoOjM9K5ljinwbF49tln89WvfjUXXnjhsOOc1+pPoVKpVGodYiRmzZqVSy65JEuWLEmSlMvldHZ25vbbb8+CBQsOGn/dddelp6cnjz/++OCyyy67LNOnT8/9998/arnhRDPSufbggw/mjjvuyNatW0c5KdSHQqGQRx99NNdee+1hx3zmM5/Jd7/73SF/eF1//fXZunVrli5dOgop4cR3JHNt+fLlef/735/XX389EydOHLVsUG9ee+21nH766fnhD3+Y9773vYcc4/0aHJsjmWfeq8HxMXny5PzhH/5h5s2bd9DvnM/g+BlurjmnwdHbvn173vWud+U//If/kH/7b/9tpk+fnnvvvfeQY53X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\"/>
\n", " \n", " " ], "text/plain": [ - "" + "" ] }, - "execution_count": 4, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\u001b[m *** rtjack: connection to JACK server was lost, reconnecting...\u001b[m *** rtjack: could not connect to JACK server\u001b[mend of score.\t\t overall amps:\u001b[m 0.00000 0.00000\n", - "\t overall samples out of range:\u001b[m 0\u001b[m 0\u001b[m\n", - "0 errors in performance\n", - "\u001b[m296346 1024 sample blks of 64-bit floats written to dac:Built-in Audio Pro:\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Exiting python, closing all active engines\n", - "... stopping engine0\n" - ] } ], "source": [ @@ -372,7 +352,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.4" + "version": "3.11.6" } }, "nbformat": 4, diff --git a/notebooks/test/test-postsymbols.ipynb b/notebooks/test/test-postsymbols.ipynb index 8d95ab0..c434054 100644 --- a/notebooks/test/test-postsymbols.ipynb +++ b/notebooks/test/test-postsymbols.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": 3, "id": "e6112d6c-7d04-4466-9f20-bf437c5b4a4f", "metadata": {}, "outputs": [ @@ -12,14 +12,14 @@ "Chain([5B:0.375♩, 5A#:0.375♩, 6D:0.75♩, 5G#:0.188♩, 5A:0.188♩, 5B:0.188♩, 6C#:0.188♩, 5A#:0.188♩, 6C:0.188♩, 6D:0.188♩, …], dur=4)
\n", " " + "width:689px\"\n", + " src=\"data:image/png;base64,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\"/>" ], "text/plain": [ "Chain([5B:0.375♩, 5A#:0.375♩, 6D:0.75♩, 5G#:0.188♩, 5A:0.188♩, 5B:0.188♩, 6C#:0.188♩, 5A#:0.188♩, 6C:0.188♩, 6D:0.188♩, …])" ] }, - "execution_count": 1, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -79,7 +79,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.4" + "version": "3.11.6" } }, "nbformat": 4, diff --git a/notebooks/test/test-sample-f0.ipynb b/notebooks/test/test-sample-f0.ipynb index 1b5feee..6278598 100644 --- a/notebooks/test/test-sample-f0.ipynb +++ b/notebooks/test/test-sample-f0.ipynb @@ -2,13 +2,14 @@ "cells": [ { "cell_type": "code", - "execution_count": 8, + "execution_count": 1, "id": "667a533d-41b8-4008-ac71-311db1438bb0", "metadata": {}, "outputs": [], "source": [ "from maelzel.snd.audiosample import Sample, logger\n", "import matplotlib.pyplot as plt\n", + "from maelzel.transcribe import mono\n", "logger.setLevel(\"DEBUG\")" ] }, @@ -24,8 +25,8 @@ "Sample(duration=10.7, sr=44100, numchannels=1)
\n", "
\n", + "width:2390.0\"\n", + " src=\"data:image/png;base64,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8NVTdbChXRcdV6pmt5HRwNwmMDfHrv11bZGB97EleWpo82pUkdEBMbcUxODS5vXrQL2R0SJeoVBIa8obIu2GEQU5euq6M/Vff12SrmIi7MXvnaPV++tVNrpQY8MTge3egLYcblKT26/tlc26/vwpRkBweJD79jc2dbnGsPwcNbl9mjK6UM999xydf+/cLu9/7pQJ+uWVx2nSiAJtOdykq/7yoSQjSHr5ry9VQY5DN7+2QdurWlSS59SfvnKKKhrdOtjQrqtOHCebzaa31x+S027XlSeOUyhkZHGcMrowklUyWZsONWpfbZsunlaacPsDibnk/vnaVd2qa8+erH8uL890cZAGZ5WN0Iq99Xruu2fr/ve26+JppXrg/e36+NSRuvqk8RpVlKuqJrfGDzdWdI0Kr0Azt9kcUWgMNrscdtlsimRnNTOyxbu9LIYOj9/oqzyzaI8eX7i7y3udswH15oKjR2vRzhp9bIKRGcg6GInBw6ynrjpxnJrcPp02eYSOG1esy04Yq7wch1btq9cpk4ZFAqGmjC5Um9fITO0LhDRxeD7bKAwSu6tbVJKfoz+8s1V5OQ49t3RfpouENDi6tCiSrdEMjBldlKsfXXiUSvKckWDfulafPtxRrXyXQx/uqJFkbJv+x9nb0la2Gy46SledOF4bDjbqkmmlKg0vqAaS1Xl8vLrZo1X76rSjskX3v789wyXDUBLJntkp2Gn2/31CP3hulS46rlQXHjdGowpzNWF4nuZvq9alx49VVbNbb60/rO9eMEUleU7N316tC442didw+wI6UN8urz+o48YVRzLiAaa15Q2aOqZQJVk6xxcKhfTupgr98PnVmS4KBrBvn1emZxfv1brfXB4ZM8vLcajNa8yxBcK7HuXlOOivDjBZsxWgJJ1zzjk6++yz9fDDD0uSgsGgjjjiCN14442aPn16t/OvueYatbW16a233oocO++883TyySdrxowZvd4vkT/8UPHwnB16cfl+Lbn5EknSVx9fouV76jJcqsHh41NHauLwAv179YG4zj936ih97tQJuvm1Db2ee9kJY/X+5u7bX0pd0yibXvzeOTrv6NFxlQMDT1WTW2ffTWDVUGB9vt/+3wv0t4/26t+rD+gvXztVnz91YgZLh8HO7Qto2m2zJUlPfutMXXbCWO2padW/Vx2IbA2H5J04sURN7X69eeP5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ZcuM9957z7jzzjvpr4dlIj6xasSIEcaSJUs8nw8fPmwUFxcbt9xyi8/17777biM7O9s4cOCAZ9nll19u1NTUeD6feOKJxuzZs9ts19DQYJx11lkhjh6IbGa0r9Z69epFYhXimtltzDAM49ChQ0Z6errx29/+NnSBA1EgHO3LMAxjyJAhxlVXXRWaoIEoYlYbO3TokDFq1CjjN7/5jXH66aeTWIW4ZUYbe/DBB43MzEzTYgaihRnt61e/+pVRWVlpfP/99+YFDkSJcDyL3X777UZ6erqxb9++0AUORAEz2teSJUuMSZMmtdlu2bJlxujRo0McPRD5zGhjRUVFxi9/+cs22x177LHGvHnzQhw9ENkCbV+tddRHeNlllxn9+/dvs+ykk04ypk+f3u14gUBF9FSA33//vd58801NmTLFs8xut2vKlClau3atJGnBggWaMGGC5/u1a9dq3LhxSkxM9CybPn26Nm/erK+++sqzTut9utdx7xOIB2a1LwDNwtXG9u/fr4MHDyonJ8ecEwEiUDjal2EYeuGFF7R582aNGzfOvJMBIpCZbeyGG25Qfn6+Fi5caP6JABHKzDa2b98+9erVS6WlpZo7d642bNhg/gkBEcSs9vXkk0+qsbFRS5YsUUFBgQYMGKCbb75Zhw8fDs+JAREiXH0d999/v04++WSlpqaacyJABDKrfY0aNUpvvvmmZzqmrVu36plnntGsWbPCcFZA5DCrjR04cKDdFOzJycl65ZVXTDwbILIE0778QU4HIonT6gA688UXX+jw4cMqKChos7ygoECbNm2SJBUVFampqcnz3Y4dO1RRUdFuffd32dnZ2rFjh8997tixw4zTACKSWe0LQLNwtbHLL79cxcXF7W4ugVhmZvvavXu3SkpKdODAATkcDt19992aOnWqmacDRByz2tgrr7yi+++/X+vXrzf3BIAIZ1Ybq6mp0QMPPKCBAwdq9+7duu222zRq1Cht2LBBPXv2NPmsgMhgVvvaunWrXnzxRc2bN0/PPPOMPvjgA5177rk6ePCgrr32WpPPCogc4ejrWLdund59913df//9ZpwCELHMal+nnHKKvvjiC40ZM0aGYejQoUM6++yzdcUVV5h8RkBkMauNTZ8+XT/72c80btw4VVVV6YUXXtATTzxBAj7iSjDtyx8d5XTs2bNH3377rZKTk7sXOBCAiE6s8sctt9xidQhAzKJ9AebqbhtbtWqVVq9erZdeeqndqBgg3gXbvtLT07V+/Xrt27dPL7zwgpYtW6bKysqAR9MAsS7QNrZ3717Nnz9f9913n3Jzc02KCogdwfwea2xsVGNjo+fzqFGjVFtbq3vuuUcrV64MZXhAVAumfTU1NSk/P1/33nuvHA6Hhg0bpk8++UQ/+clPSKwCvHS3r+P+++9XXV2dRowYEaKIgNgRTPt66aWXdPPNN+vuu+9WQ0ODPvjgA11wwQVauXKlrr76ahOiBKJXMG3s5z//uRYtWqS+ffvKZrOpqqpKZ5xxhh544AETIgSiF++cEe0iOrEqNzdXDodDn3/+eZvln3/+uQoLC31uU1hY6HN993edrdPRPoFYZFb7AtDM7DZ22223adWqVXr++ec1cODAEEYORD4z25fdbld1dbUkafDgwdq4caNuueUWEqsQV8xoY1u2bNH27ds1Z84cz/fuUWpOp1ObN29WVVVVKE8DiFjhehZLSEjQkCFD9MEHH4QgaiA6mNW+ioqKlJCQIIfD4VmntrZWO3bs0Pfff99mehgglpn9O+ybb77R6tWrdcMNN4QwaiA6mNW+rr76as2fP19nnnmmJKmurk7ffPONFi9erCuvvFJ2uz3UpwJEJLPaWF5env7yl7/ou+++05dffqni4mItX75clZWVJpwFEJmCaV/+6KgNZmRkUK0KYRfRd0yJiYkaNmyYXnjhBc+ypqYmvfDCC21GYbbW2Niol19+WQcPHvQse+6551RTU+MpK9zY2Nhmn+51OtonEIvMal8AmpnZxm699VatXLlSa9asUX19vXknAUSocP4Oa2pq0oEDB0IXPBAFzGhjffv21TvvvKP169d7fn7wgx9o4sSJWr9+vUpLS00/LyBShOv32OHDh/XOO++oqKgotCcARDCz2tfo0aP1wQcftJm64t///reKiopIqkJcMft32J/+9CcdOHBAp556qjknAEQws9rX/v372yVPuROFDcMI9WkAEcvs32FJSUkqKSnRoUOH9Pjjj2vu3LnmnAgQgYJpX/4gpwMRxYhwq1evNlwul/HQQw8Z7733nrF48WIjKyvL2LFjh2EYhrF8+XJj/vz5nvW//vpro6CgwJg/f77x7rvvGqtXrzZSUlKMe+65x7POq6++ajidTuO2224zNm7caFx77bVGQkKC8c4774T9/AArmdG+Dhw4YLz99tvG22+/bRQVFRmXXHKJ8fbbbxvvv/9+2M8PsJoZbWzVqlVGYmKi8dhjjxmfffaZ52fv3r1hPz/ASma0r5tvvtl49tlnjS1bthjvvfeecdtttxlOp9O47777wn5+gNXMaGPeTj/9dGPu3LlmnwoQkcxoY9dff73xt7/9zdiyZYvx5ptvGieffLKRlJRkbNiwIeznB1jJjPb14YcfGunp6cbSpUuNzZs3G0899ZSRn59v3HjjjWE/P8BqZt4njhkzxjjppJPCdi5ApDGjfV177bVGenq68eijjxpbt241nn32WaOqqso48cQTw35+gNXMaGP/+Mc/jMcff9zYsmWL8fLLLxuTJk0yKioqjK+++ircpwdYKtD2ZRiGsWHDBuPtt9825syZY0yYMMHzftlt69atRkpKinHppZcaGzduNO666y7D4XAYa9asCeepAYZhGEbEJ1YZhmHceeedRllZmZGYmGiMGDHC+Mc//uH57vTTTzfGjx/fZv1//vOfxpgxYwyXy2WUlJQYq1atarfPP/7xj0afPn2MxMREo3///sbTTz9t9mkAESnU7Wvbtm2GpHY/3vsB4kWo21ivXr18trFrr702DGcDRJZQt68rr7zSqK6uNpKSkozs7GyjsbHRWL16dThOBYhIZjyHtUZiFeJdqNvYhRde6NlfQUGBMWvWLOOtt94Kx6kAEceM32Gvvfaa0dDQYLhcLqOystK46aabjEOHDpl9KkBEMqONbdq0yZBkPPvss2aHD0S0ULevgwcPGtddd51RVVVlJCUlGaWlpca5555L0gfiVqjb2EsvvWTU1tYaLpfL6NGjhzF//nzjk08+CcepABEn0PbV0fuu1v7+978bgwcPNhITE43KykrjwQcfDMOZAO3ZDINanwAAAAAAAAAAAAAAAADQmr3rVQAAAAAAAAAAAAAAAAAgvpBYBQAAAAAAAAAAAAAAAABeSKwCAAAAAAAAAAAAAAAAAC8kVgEAAAAAAAAAAAAAAACAFxKrAAAAAAAAAAAAAAAAAMALiVUAAAAAAAAAAAAAAAAA4IXEKgAAAAAAAAAAAAAAAADwQmIVAAAAAAAAAAAAAAAAAHghsQoAAAAAAAAAAAAAAAAAvJBYBQAAAAAAAAAAAAAAAABeSKwCAAAAAAAAAAAAAAAAAC8kVgEAAAAAAAAAAAAAAACAl/8PeTTHgph0a5IAAAAASUVORK5CYII=\"/>
\n", "