#!/usr/bin/env python3 # # gen-freq-table - calculate and print the frequency table for use in beep(1) man page # Copyright (C) 2018-2019 Hans Ulrich Niedermann # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. import math n_list = range(-9, 3+1) octave_list = range(3, 6+1) freqs = [ [ (440*(2**(i-4))*math.exp(math.log(2)*n/12)) for i in octave_list ] for n in n_list ] notes = [ "C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B", "C" ] print("""\ .TS center box; Cb | Cb s s s Cb | Cb Cb Cb Cb - | - - - - C | N N N N. note octave """, end="") print("name\t", end="") for octave in octave_list: print("%d\t" % octave, end="") print() for (note, freqline) in zip(notes,freqs): print("%s\t" % note, end="") for f in freqline: print("%d\t" % int(round(f)), end="") print() print("""\ .TE """, end="")