def map(value): return Value( Type.MAP, value, { "size": Type.integer(len(value)), "keys": Type.list([k for k, v in value.items()]), "values": Type.list([v for k, v in value.items()]) })
def note(value): return Value( Type.NOTE, value, { "pitch": Type.string(str(value.note)), "octave": Type.integer(value.octave), "duration": Type.integer(value.duration), "dot": Type.bool(value.dot) })
def void(): return Value(Type.VOID, None)
def type(value): return Value(Type.TYPE, value, {})
def sound(value): return Value(Type.SOUND, value, { "file": Type.string(value.file), "fs": Type.integer(value.fs) })
def bool(value): return Value(Type.BOOL, value, {})
def list(value): return Value(Type.LIST, value, {"size": Type.integer(len(value))})
def string(value): return Value(Type.STRING, value, {"length": Type.integer(len(value))})
def float(value): return Value(Type.FLOAT, value, {})
def integer(value): return Value(Type.INTEGER, value, {})