37 lines
1.2 KiB
Python
37 lines
1.2 KiB
Python
from smnp.function.model import CombinedFunction, Function
|
|
from smnp.function.signature import signature
|
|
from smnp.note.model import Note
|
|
from smnp.type.model import Type
|
|
from smnp.type.signature.matcher.type import ofType
|
|
|
|
_signature1 = signature(ofType(Type.INTEGER))
|
|
def _function1(env, upper):
|
|
return Type.list(list(range(upper.value + 1)))
|
|
|
|
|
|
_signature2 = signature(ofType(Type.INTEGER), ofType(Type.INTEGER))
|
|
def _function2(env, lower, upper):
|
|
return Type.list(list(range(lower.value, upper.value + 1)))
|
|
|
|
|
|
_signature3 = signature(ofType(Type.INTEGER), ofType(Type.INTEGER), ofType(Type.INTEGER))
|
|
def _function3(env, lower, upper, step):
|
|
return Type.list(list(range(lower.value, upper.value + 1, step.value)))
|
|
|
|
|
|
_signature4 = signature(ofType(Type.NOTE), ofType(Type.NOTE))
|
|
def _function4(env, lower, upper):
|
|
return Type.list([Type.note(n) for n in Note.range(lower.value, upper.value)])
|
|
|
|
|
|
# TODO
|
|
# signature5 = range(note lower, note upper, integer step) OR step = "diatonic" | "chromatic" | "augmented" | "diminish"
|
|
|
|
function = CombinedFunction(
|
|
'range',
|
|
Function(_signature1, _function1),
|
|
Function(_signature2, _function2),
|
|
Function(_signature3, _function3),
|
|
Function(_signature4, _function4),
|
|
)
|