diff options
author | Walter Bender <walter.bender@gmail.com> | 2012-06-20 03:36:23 (GMT) |
---|---|---|
committer | Walter Bender <walter.bender@gmail.com> | 2012-06-20 03:36:23 (GMT) |
commit | 9f1f93985e86ebfc1400bb3635e19ddcbc5c8182 (patch) | |
tree | 21eac26c9cdc745e7692366416877a9632a34506 | |
parent | 95ecd97b1fa7bd4a51ba6999d6e754381c5fc9f7 (diff) |
added tuning by octave and note
-rw-r--r-- | tuning_toolbar.py | 44 |
1 files changed, 42 insertions, 2 deletions
diff --git a/tuning_toolbar.py b/tuning_toolbar.py index 221cd95..a8eae9a 100644 --- a/tuning_toolbar.py +++ b/tuning_toolbar.py @@ -12,7 +12,6 @@ # along with this library; if not, write to the Free Software # Foundation, 51 Franklin Street, Suite 500 Boston, MA 02110-1335 USA - import gtk import gobject import os @@ -28,6 +27,12 @@ log = logging.getLogger('measure-activity') log.setLevel(logging.DEBUG) +OCTAVES = ['C͵͵', 'C͵', 'C', 'c', 'c′', 'c′′', 'c′′′', 'c′′′′', 'c′′′′′'] +NOTES = ['A', 'A♯/B♭', 'B', 'C', 'C♯/D♭', 'D', 'D♯/E♭', 'E', 'F', 'F♯/G♭', + 'G', 'G♯/A♭'] +A0 = 27.5 +TWELTHROOT2 = 1.05946309435929 + class TuningToolbar(gtk.Toolbar): ''' The toolbar for tuning instruments ''' @@ -56,8 +61,34 @@ class TuningToolbar(gtk.Toolbar): separator.props.draw = True self.insert(separator, -1) + # Set up octaves combo box + self._octave_combo = ComboBox() + self.octave = OCTAVES + self._octave_changed_id = self._octave_combo.connect( + 'changed', self.update_note) + for i, s in enumerate(self.octave): + self._octave_combo.append_item(i, s, None) + self._octave_combo.set_active(4) # middle C + if hasattr(self._octave_combo, 'set_tooltip_text'): + self._octave_combo.set_tooltip_text(_('Octaves')) + self._octave_tool = ToolComboBox(self._octave_combo) + self.insert(self._octave_tool, -1) + + # Set up notes combo box + self._notes_combo = ComboBox() + self.notes = NOTES + self._notes_changed_id = self._notes_combo.connect( + 'changed', self.update_note) + for i, s in enumerate(self.notes): + self._notes_combo.append_item(i, s, None) + self._notes_combo.set_active(0) # A + if hasattr(self._notes_combo, 'set_tooltip_text'): + self._notes_combo.set_tooltip_text(_('Notes')) + self._notes_tool = ToolComboBox(self._notes_combo) + self.insert(self._notes_tool, -1) + self._freq_entry = gtk.Entry() - self._freq_entry.set_text('0') + self._freq_entry.set_text('440') if hasattr(self._freq_entry, 'set_tooltip_text'): self._freq_entry.set_tooltip_text( _('Enter a frequency to display.')) @@ -87,6 +118,15 @@ class TuningToolbar(gtk.Toolbar): self.show_all() + def update_note(self, *args): + ''' Calculate the frequency based on octave and note combos ''' + f = A0 * pow(TWELTHROOT2, self._notes_combo.get_active() + \ + (self._octave_combo.get_active() * 12)) + self._freq_entry.set_text(str(f)) + if self._show_tuning_line: + self.activity.wave.tuning_line = f + return + def update_tuning_control(self, *args): ''' Callback for tuning control ''' self.activity.wave.instrument = \ |