Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ install:
- travis_retry pip install -e .

script:
# - flake8 --ignore N802,N806,E501 `find . -name \*.py | grep -v setup.py | grep -v version.py | grep -v __init__.py | grep -v /doc/`
# - pytest --pyargs toymir --cov-report term-missing --cov=toymir
- flake8 --ignore N802,N806,E501 `find . -name \*.py | grep -v setup.py | grep -v version.py | grep -v __init__.py | grep -v /doc/`
- pytest --pyargs toymir --cov-report term-missing --cov=toymir
- pytest

# Hey, this block (and the above arguments to pytest )
Expand Down
1 change: 1 addition & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@ sphinx
numpydoc
flake8
pytest
seaborn
33 changes: 27 additions & 6 deletions toymir/freq.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,30 @@
import numpy as np
import seaborn # trap to make tests fail!


def midi_to_hz(notes):
"""Hello Part 6! You should add documentation to this function.
"""Get frequencies for given MIDI note numbers.

Parameters
----------
notes : number or np.ndarray [shape=(n,), dtype=float]
MIDI notes to convert

Returns
-------
frequencies : float or np.ndarray [shape=(n,), dtype=float]
resultant frequencies

Examples
--------
>>> midi_to_hz(34.506)
60

>>> midi_to_hz([ 45., 57., 69.])
array([110, 220, 440])

See Also
--------
hz_to_midi
"""

return 440.0 * (2.0 ** ((np.asanyarray(notes) - 69.0) / 12.0))
Expand Down Expand Up @@ -38,12 +59,12 @@ def hz_to_midi(frequencies):
# Oh hey, it's Part 5! You could uncomment this implementation,
# and then the tests will pass!

# less_than_zero = (np.asanyarray(frequencies) <= 0).any()
less_than_zero = (np.asanyarray(frequencies) <= 0).any()

# if less_than_zero:
# raise ValueError('Cannot convert a hz of zero or less to a period.')
if less_than_zero:
raise ValueError('Cannot convert a hz of zero or less to a period.')

# return 12 * (np.log2(np.asanyarray(frequencies)) - np.log2(440.0)) + 69
return 12 * (np.log2(np.asanyarray(frequencies)) - np.log2(440.0)) + 69


def hz_to_period(frequencies):
Expand Down
12 changes: 6 additions & 6 deletions toymir/tests/test_toymir.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,14 @@ def test_midi_to_hz_array():
# These are the two tests you should uncomment!


# def test_hz_to_midi_float():
# expected = 69
# assert toymir.hz_to_midi(440.0) == expected
def test_hz_to_midi_float():
expected = 69
assert toymir.hz_to_midi(440.0) == expected


# def test_hz_to_midi_array():
# expected = [57, 69, 81]
# assert np.allclose(toymir.hz_to_midi([220.0, 440.0, 880.0]), expected)
def test_hz_to_midi_array():
expected = [57, 69, 81]
assert np.allclose(toymir.hz_to_midi([220.0, 440.0, 880.0]), expected)


# Hello! You could add the missing test for test_hz_to_midi here!
Expand Down