History

Merge branch 'feature/note2freq'

Paul Brossier committed 8 years ago

Commit 7be77bb2 parents 7af37df 476cb412 files · +36 −3Browse files

Showing the changes to python (2 of 2 files). Show all

Unified · Split

2 files
  1. python/lib/aubio/midiconv.py +25 −2
  2. python/tests/test_note2midi.py +11 −1
python/lib/aubio/midiconv.py+25−2
@@ -1,10 +1,10 @@
11 # -*- coding: utf-8 -*-
22 """ utilities to convert midi note number to and from note names """
33
4−__all__ = ['note2midi', 'midi2note', 'freq2note']
4+__all__ = ['note2midi', 'midi2note', 'freq2note', 'note2freq']
55
66 import sys
7−from ._aubio import freqtomidi
7+from ._aubio import freqtomidi, miditofreq
88
99 py3 = sys.version_info[0] == 3
1010 if py3:
@@ -75,3 +75,26 @@ def freq2note(freq): · 64 unmodified lines
7575 " convert frequency in Hz to nearest note name, e.g. [0, 22050.] -> [C-1, G9] "
7676 nearest_note = int(freqtomidi(freq) + .5)
7777 return midi2note(nearest_note)
78+
79+def note2freq(note):
80+ """Convert note name to corresponding frequency, in Hz.
81+
82+ Parameters
83+ ----------
84+ note : str
85+ input note name
86+
87+ Returns
88+ -------
89+ freq : float [0, 23000[
90+ frequency, in Hz
91+
92+ Example
93+ -------
94+ >>> aubio.note2freq('A4')
95+ 440
96+ >>> aubio.note2freq('A3')
97+ 220.1
98+ """
99+ midi = note2midi(note)
100+ return miditofreq(midi)
python/tests/test_note2midi.py+11−1
@@ -3,7 +3,7 @@ · 2 unmodified lines
33
44 from __future__ import unicode_literals
55
6−from aubio import note2midi, freq2note
6+from aubio import note2midi, freq2note, note2freq
77 from nose2.tools import params
88 import unittest
99
@@ -119,6 +119,16 @@ class freq2note_simple_test(unittest.TestCase): · 109 unmodified lines
119119 " make sure freq2note(439) == A4 "
120120 self.assertEqual("A4", freq2note(439))
121121
122+class note2freq_simple_test(unittest.TestCase):
123+
124+ def test_note2freq(self):
125+ " make sure note2freq('A3') == 220"
126+ self.assertEqual(220, note2freq("A3"))
127+
128+ def test_note2freq_under(self):
129+ " make sure note2freq(A4) == 440"
130+ self.assertEqual(440, note2freq("A4"))
131+
122132 if __name__ == '__main__':
123133 import nose2
124134 nose2.main()

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t