def render_inlays(self, frets=12, verbose=1): if not verbose: return dots = (3, 5, 7, 9, 12, 15, 17, 19, 21, 24, 27, 29, 31, 33, 36) inlay_row = Row( FString( '', size=self.string_n_size + _NOTE_WIDTH + _FRET_WIDTH, align='l', # pad='*', ), ) f = 1 while frets: inlay_row.append( FString( '' if verbose == 1 and f not in dots else INLAYS[f - 1], size=_NOTE_WIDTH + _FRET_WIDTH, align='r' if verbose == 2 else 'c', # high verbose needs more space fg='cyan', fx=['faint' if f not in dots else ''], )) f += 1 frets -= 1 echo(inlay_row)
def render_binding(self, side, frets=12): ''' https://en.wikipedia.org/wiki/Box-drawing_character ''' normal = {'upper': '═', 'lower': '═'} twelve = {'upper': '╦', 'lower': '╩'} joints = {'upper': '╤', 'lower': '╧'} capo = {'upper': '╔', 'lower': '╚'} final = {'upper': '╕', 'lower': '╛'} fine = {'upper': '╗', 'lower': '╝'} total_fret_width = _NOTE_WIDTH + _FRET_WIDTH render = ' ' * (_NOTE_WIDTH + self.string_n_size) render += capo[side] for f in range(1, frets * total_fret_width + 1): # final fret if f == frets * total_fret_width: if f % (total_fret_width * 12) == 0: render += fine[side] else: render += final[side] # 12th, 24th elif f % (total_fret_width * 12) == 0: render += twelve[side] # fret bar joints elif f % total_fret_width == 0: render += joints[side] # normal bind else: render += normal[side] echo(render)
def print_mode(mode): clr = 'blue' mode = '{} {}'.format( str(mode.root)[:-1], mode.name(), ) echo(mode, clr)
def testInvalidRoots(self): echo('\nInvalid {}s'.format(self.major_key.__name__), 'underline') for note in self.major_key.invalid_root_notes(): echo( '{}{} invalid {}'.format(note.chr, note.repr_alt, self.major_key.__name__), 'red', 'faint')
def render_string(self, s, mode, frets=12, verbose=1): string_n = FString(s, fg='cyan', fx=['faint' if verbose < 1 else ''], size=self.STRING_NUMBER_SIZE) string = self.strings[s - 1] string.mode = mode string.frets = frets string.verbose = verbose echo(string_n + string)
def render_string(self, s, mode, frets=12, verbose=1, show_degrees=False): string_n = FString( s, fg='cyan', fx=['faint' if verbose < 1 else ''], size=self.string_n_size, ) string = self.strings[s - 1] string.mode = mode string.frets = frets string.verbose = verbose string.show_degrees = show_degrees echo(string_n + string)
def testValidRoots(self): for Scale in [self.major_key, self.minor_key]: echo('\nValid {}s'.format(Scale.__name__), 'underline') for note in Scale.valid_root_notes(): line = Row() key = Scale(*note) for d in key.spell(note_count=len(key.intervals) + 16, yield_all=False): line.append( FString( d, size=5, fg='blue' if not (d.oct % 2) else 'white', )) line.echo()
def search_ug(query): echo('Searching Pages: ', mode='raw') results = [] for p in range(1, 11): # DO NOT FOLLOW RE-DIRECTS... data = get_page_data(query, page=p) if not data: break data = data['store']['page']['data'] if not len(data['results']): break echo('{}, '.format(p), mode='raw') results.extend(data['results']) echo('done!') return results
def dbg(t='Waiting...', c='magenta'): echo(f'** {t} **', c) input()
def retro(*args, **kwargs): return echo(*args, **kwargs, mode='retro')
def dbg(t='Waiting...', c='magenta'): echo('** {} **'.format(t), c) input()
def print_instrument(instrument, tuning): clr = 'yellow' echo(instrument.title(), clr, 'underline', mode='raw') echo(': ', clr, mode='raw') echo('{} tuning'.format(tuning), clr)