Files
smnp-py/smnp/environment/function/interval.py
2019-07-04 02:19:15 +02:00

27 lines
942 B
Python

from smnp.environment.function.tools import returnElementOrList
from smnp.note.interval import intervalToString
from smnp.note.model import Note
def interval(args, env):
if len(args) > 0 and isinstance(args[0], list):
return intervalList(args[0])
return intervalList(args)
def intervalList(list):
r = [intervalToString(x) for x in semitonesList(list)]
return returnElementOrList(r)
def semitonesList(list):
for x in list:
if not isinstance(x, Note) and not isinstance(x, int):
pass # invalid arguments
withoutPauses = tuple(filter(lambda x: isinstance(x, Note), list))
r = [Note.checkInterval(withoutPauses[i-1], withoutPauses[i]) for i, _ in enumerate(withoutPauses) if i != 0]
return r
def semitones(args, env):
if len(args) > 0 and isinstance(args[0], list):
return returnElementOrList(semitonesList(args[0]))
return returnElementOrList(semitonesList(args))