Change root package
This commit is contained in:
@@ -8,7 +8,7 @@ subprojects {
|
||||
mavenCentral()
|
||||
}
|
||||
|
||||
group 'io.bartek'
|
||||
group 'com.bartlomiejpluta'
|
||||
version '1.0-SNAPSHOT'
|
||||
|
||||
sourceCompatibility = 1.8
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package io.smnp.ext.collection
|
||||
package com.bartlomiejpluta.smnp.ext.collection
|
||||
|
||||
import io.smnp.ext.provider.LanguageModuleProvider
|
||||
import com.bartlomiejpluta.smnp.ext.provider.LanguageModuleProvider
|
||||
import org.pf4j.Extension
|
||||
|
||||
@Extension
|
||||
@@ -0,0 +1,10 @@
|
||||
package com.bartlomiejpluta.smnp.ext.debug
|
||||
|
||||
import com.bartlomiejpluta.smnp.ext.debug.function.StackTraceFuction
|
||||
import com.bartlomiejpluta.smnp.ext.provider.NativeModuleProvider
|
||||
import org.pf4j.Extension
|
||||
|
||||
@Extension
|
||||
class DebugModule : NativeModuleProvider("smnp.lang.debug") {
|
||||
override fun functions() = listOf(StackTraceFuction())
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.bartlomiejpluta.smnp.ext.debug.function
|
||||
|
||||
import com.bartlomiejpluta.smnp.callable.function.Function
|
||||
import com.bartlomiejpluta.smnp.callable.function.FunctionDefinitionTool
|
||||
import com.bartlomiejpluta.smnp.callable.signature.Signature
|
||||
import com.bartlomiejpluta.smnp.type.enumeration.DataType.BOOL
|
||||
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.ofType
|
||||
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.optional
|
||||
import com.bartlomiejpluta.smnp.type.model.Value
|
||||
|
||||
class StackTraceFuction : Function("stacktrace") {
|
||||
override fun define(new: FunctionDefinitionTool) {
|
||||
new function Signature.simple(optional(ofType(BOOL))) body { env, args ->
|
||||
env.printCallStack(args.getOrNull(0)?.value as Boolean? ?: false)
|
||||
Value.void()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
package io.smnp.ext.debug
|
||||
|
||||
import io.smnp.ext.provider.NativeModuleProvider
|
||||
import io.smnp.ext.debug.function.StackTraceFuction
|
||||
import org.pf4j.Extension
|
||||
|
||||
@Extension
|
||||
class DebugModule : NativeModuleProvider("smnp.lang.debug") {
|
||||
override fun functions() = listOf(StackTraceFuction())
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
package io.smnp.ext.debug.function
|
||||
|
||||
import io.smnp.callable.function.Function
|
||||
import io.smnp.callable.function.FunctionDefinitionTool
|
||||
import io.smnp.callable.signature.Signature
|
||||
import io.smnp.type.enumeration.DataType.BOOL
|
||||
import io.smnp.type.matcher.Matcher.Companion.ofType
|
||||
import io.smnp.type.matcher.Matcher.Companion.optional
|
||||
import io.smnp.type.model.Value
|
||||
|
||||
class StackTraceFuction : Function("stacktrace") {
|
||||
override fun define(new: FunctionDefinitionTool) {
|
||||
new function Signature.simple(optional(ofType(BOOL))) body { env, args ->
|
||||
env.printCallStack(args.getOrNull(0)?.value as Boolean? ?: false)
|
||||
Value.void()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package com.bartlomiejpluta.smnp.ext.dsp
|
||||
|
||||
import com.bartlomiejpluta.smnp.ext.dsp.function.FftFunction
|
||||
import com.bartlomiejpluta.smnp.ext.dsp.function.PlotFunction
|
||||
import com.bartlomiejpluta.smnp.ext.provider.NativeModuleProvider
|
||||
import org.pf4j.Extension
|
||||
|
||||
@Extension
|
||||
class DspModule : NativeModuleProvider("smnp.dsp") {
|
||||
override fun functions() = listOf(PlotFunction(), FftFunction())
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package com.bartlomiejpluta.smnp.ext.dsp.function
|
||||
|
||||
import com.bartlomiejpluta.smnp.callable.function.Function
|
||||
import com.bartlomiejpluta.smnp.callable.function.FunctionDefinitionTool
|
||||
import com.bartlomiejpluta.smnp.callable.signature.Signature.Companion.simple
|
||||
import com.bartlomiejpluta.smnp.ext.dsp.lib.fft.FourierTransform.fft
|
||||
import com.bartlomiejpluta.smnp.type.enumeration.DataType.FLOAT
|
||||
import com.bartlomiejpluta.smnp.type.enumeration.DataType.INT
|
||||
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.listOf
|
||||
import com.bartlomiejpluta.smnp.type.model.Value
|
||||
|
||||
class FftFunction : Function("fft") {
|
||||
override fun define(new: FunctionDefinitionTool) {
|
||||
new function simple(listOf(INT, FLOAT)) body { _, (signal) ->
|
||||
val x = (signal.unwrap() as List<Number>).map { it.toDouble() }
|
||||
Value.list(fft(x).map { Value.float(it.mod.toFloat()) })
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,16 +1,16 @@
|
||||
package io.smnp.ext.dsp.function
|
||||
package com.bartlomiejpluta.smnp.ext.dsp.function
|
||||
|
||||
import io.smnp.callable.function.Function
|
||||
import io.smnp.callable.function.FunctionDefinitionTool
|
||||
import io.smnp.callable.signature.Signature.Companion.vararg
|
||||
import io.smnp.error.CustomException
|
||||
import io.smnp.type.enumeration.DataType.*
|
||||
import io.smnp.type.matcher.Matcher.Companion.anyType
|
||||
import io.smnp.type.matcher.Matcher.Companion.listOf
|
||||
import io.smnp.type.matcher.Matcher.Companion.mapOfMatchers
|
||||
import io.smnp.type.matcher.Matcher.Companion.ofType
|
||||
import io.smnp.type.model.Value
|
||||
import io.smnp.util.config.ConfigMapSchema
|
||||
import com.bartlomiejpluta.smnp.callable.function.Function
|
||||
import com.bartlomiejpluta.smnp.callable.function.FunctionDefinitionTool
|
||||
import com.bartlomiejpluta.smnp.callable.signature.Signature.Companion.vararg
|
||||
import com.bartlomiejpluta.smnp.error.CustomException
|
||||
import com.bartlomiejpluta.smnp.type.enumeration.DataType.*
|
||||
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.anyType
|
||||
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.listOf
|
||||
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.mapOfMatchers
|
||||
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.ofType
|
||||
import com.bartlomiejpluta.smnp.type.model.Value
|
||||
import com.bartlomiejpluta.smnp.util.config.ConfigMapSchema
|
||||
import org.knowm.xchart.BitmapEncoder
|
||||
import org.knowm.xchart.BitmapEncoder.BitmapFormat
|
||||
import org.knowm.xchart.SwingWrapper
|
||||
@@ -1,4 +1,4 @@
|
||||
package io.smnp.ext.dsp.lib.complex
|
||||
package com.bartlomiejpluta.smnp.ext.dsp.lib.complex
|
||||
|
||||
import kotlin.math.atan2
|
||||
import kotlin.math.pow
|
||||
@@ -1,6 +1,6 @@
|
||||
package io.smnp.ext.dsp.lib.fft
|
||||
package com.bartlomiejpluta.smnp.ext.dsp.lib.fft
|
||||
|
||||
import io.smnp.ext.dsp.lib.complex.Complex
|
||||
import com.bartlomiejpluta.smnp.ext.dsp.lib.complex.Complex
|
||||
import kotlin.math.abs
|
||||
import kotlin.math.ceil
|
||||
import kotlin.math.log
|
||||
@@ -1,11 +0,0 @@
|
||||
package io.smnp.ext.dsp
|
||||
|
||||
import io.smnp.ext.dsp.function.FftFunction
|
||||
import io.smnp.ext.dsp.function.PlotFunction
|
||||
import io.smnp.ext.provider.NativeModuleProvider
|
||||
import org.pf4j.Extension
|
||||
|
||||
@Extension
|
||||
class DspModule : NativeModuleProvider("smnp.dsp") {
|
||||
override fun functions() = listOf(PlotFunction(), FftFunction())
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
package io.smnp.ext.dsp.function
|
||||
|
||||
import io.smnp.callable.function.Function
|
||||
import io.smnp.callable.function.FunctionDefinitionTool
|
||||
import io.smnp.callable.signature.Signature.Companion.simple
|
||||
import io.smnp.ext.dsp.lib.fft.FourierTransform.fft
|
||||
import io.smnp.type.enumeration.DataType.FLOAT
|
||||
import io.smnp.type.enumeration.DataType.INT
|
||||
import io.smnp.type.matcher.Matcher.Companion.listOf
|
||||
import io.smnp.type.model.Value
|
||||
|
||||
class FftFunction : Function("fft") {
|
||||
override fun define(new: FunctionDefinitionTool) {
|
||||
new function simple(listOf(INT, FLOAT)) body { _, (signal) ->
|
||||
val x = (signal.unwrap() as List<Number>).map { it.toDouble() }
|
||||
Value.list(fft(x).map { Value.float(it.mod.toFloat()) })
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package com.bartlomiejpluta.smnp.ext.io
|
||||
|
||||
import com.bartlomiejpluta.smnp.ext.io.function.PrintlnFunction
|
||||
import com.bartlomiejpluta.smnp.ext.io.function.ReadFunction
|
||||
import com.bartlomiejpluta.smnp.ext.provider.NativeModuleProvider
|
||||
import org.pf4j.Extension
|
||||
|
||||
@Extension
|
||||
class IoModule : NativeModuleProvider("smnp.io") {
|
||||
override fun functions() = listOf(PrintlnFunction(), ReadFunction())
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.bartlomiejpluta.smnp.ext.io.function
|
||||
|
||||
import com.bartlomiejpluta.smnp.callable.function.Function
|
||||
import com.bartlomiejpluta.smnp.callable.function.FunctionDefinitionTool
|
||||
import com.bartlomiejpluta.smnp.callable.signature.Signature.Companion.vararg
|
||||
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.anyType
|
||||
import com.bartlomiejpluta.smnp.type.model.Value
|
||||
|
||||
class PrintlnFunction : Function("println") {
|
||||
override fun define(new: FunctionDefinitionTool) {
|
||||
new function vararg(anyType()) body { _, (vararg) ->
|
||||
println((vararg.value as List<Value>).joinToString("") { it.stringify() })
|
||||
Value.void()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.bartlomiejpluta.smnp.ext.io.function
|
||||
|
||||
import com.bartlomiejpluta.smnp.callable.function.Function
|
||||
import com.bartlomiejpluta.smnp.callable.function.FunctionDefinitionTool
|
||||
import com.bartlomiejpluta.smnp.callable.signature.Signature.Companion.simple
|
||||
import com.bartlomiejpluta.smnp.type.enumeration.DataType.STRING
|
||||
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.ofType
|
||||
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.optional
|
||||
import com.bartlomiejpluta.smnp.type.model.Value
|
||||
|
||||
class ReadFunction : Function("read") {
|
||||
override fun define(new: FunctionDefinitionTool) {
|
||||
new function simple(optional(ofType(STRING))) body { _, arguments ->
|
||||
arguments.getOrNull(0)?.let { print(it.value) }
|
||||
Value.string(readLine() ?: "")
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
package io.smnp.ext.io
|
||||
|
||||
import io.smnp.ext.provider.NativeModuleProvider
|
||||
import io.smnp.ext.io.function.PrintlnFunction
|
||||
import io.smnp.ext.io.function.ReadFunction
|
||||
import org.pf4j.Extension
|
||||
|
||||
@Extension
|
||||
class IoModule : NativeModuleProvider("smnp.io") {
|
||||
override fun functions() = listOf(PrintlnFunction(), ReadFunction())
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
package io.smnp.ext.io.function
|
||||
|
||||
import io.smnp.callable.function.Function
|
||||
import io.smnp.callable.function.FunctionDefinitionTool
|
||||
import io.smnp.callable.signature.Signature.Companion.vararg
|
||||
import io.smnp.type.matcher.Matcher.Companion.anyType
|
||||
import io.smnp.type.model.Value
|
||||
|
||||
class PrintlnFunction : Function("println") {
|
||||
override fun define(new: FunctionDefinitionTool) {
|
||||
new function vararg(anyType()) body { _, (vararg) ->
|
||||
println((vararg.value as List<Value>).joinToString("") { it.stringify() })
|
||||
Value.void()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
package io.smnp.ext.io.function
|
||||
|
||||
import io.smnp.callable.function.Function
|
||||
import io.smnp.callable.function.FunctionDefinitionTool
|
||||
import io.smnp.callable.signature.Signature.Companion.simple
|
||||
import io.smnp.type.enumeration.DataType.STRING
|
||||
import io.smnp.type.matcher.Matcher.Companion.ofType
|
||||
import io.smnp.type.matcher.Matcher.Companion.optional
|
||||
import io.smnp.type.model.Value
|
||||
|
||||
class ReadFunction : Function("read") {
|
||||
override fun define(new: FunctionDefinitionTool) {
|
||||
new function simple(optional(ofType(STRING))) body { _, arguments ->
|
||||
arguments.getOrNull(0)?.let { print(it.value) }
|
||||
Value.string(readLine() ?: "")
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.bartlomiejpluta.smnp.ext.lang
|
||||
|
||||
import com.bartlomiejpluta.smnp.ext.lang.constructor.IntConstructor
|
||||
import com.bartlomiejpluta.smnp.ext.lang.constructor.NoteConstructor
|
||||
import com.bartlomiejpluta.smnp.ext.lang.function.TypeOfFunction
|
||||
import com.bartlomiejpluta.smnp.ext.lang.method.CharAtMethod
|
||||
import com.bartlomiejpluta.smnp.ext.lang.method.ListAccessMethod
|
||||
import com.bartlomiejpluta.smnp.ext.lang.method.MapAccessMethod
|
||||
import com.bartlomiejpluta.smnp.ext.lang.method.StringifyMethod
|
||||
import com.bartlomiejpluta.smnp.ext.provider.NativeModuleProvider
|
||||
import org.pf4j.Extension
|
||||
|
||||
@Extension
|
||||
class LangModule : NativeModuleProvider("smnp.lang") {
|
||||
override fun functions() = listOf(IntConstructor(), NoteConstructor(), TypeOfFunction())
|
||||
override fun methods() = listOf(ListAccessMethod(), MapAccessMethod(), CharAtMethod(), StringifyMethod())
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package com.bartlomiejpluta.smnp.ext.lang.constructor
|
||||
|
||||
import com.bartlomiejpluta.smnp.callable.function.Function
|
||||
import com.bartlomiejpluta.smnp.callable.function.FunctionDefinitionTool
|
||||
import com.bartlomiejpluta.smnp.callable.signature.Signature.Companion.simple
|
||||
import com.bartlomiejpluta.smnp.type.enumeration.DataType.FLOAT
|
||||
import com.bartlomiejpluta.smnp.type.enumeration.DataType.INT
|
||||
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.ofType
|
||||
import com.bartlomiejpluta.smnp.type.model.Value
|
||||
|
||||
class IntConstructor : Function("Int") {
|
||||
override fun define(new: FunctionDefinitionTool) {
|
||||
new function simple(ofType(INT)) body { _, (int) ->
|
||||
int
|
||||
}
|
||||
|
||||
new function simple(ofType(FLOAT)) body { _, (float) ->
|
||||
Value.int((float.value as Float).toInt())
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,14 +1,14 @@
|
||||
package io.smnp.ext.lang.constructor
|
||||
package com.bartlomiejpluta.smnp.ext.lang.constructor
|
||||
|
||||
import io.smnp.callable.function.Function
|
||||
import io.smnp.callable.function.FunctionDefinitionTool
|
||||
import io.smnp.callable.signature.Signature.Companion.simple
|
||||
import io.smnp.data.entity.Note
|
||||
import io.smnp.data.enumeration.Pitch
|
||||
import io.smnp.math.Fraction
|
||||
import io.smnp.type.enumeration.DataType.*
|
||||
import io.smnp.type.matcher.Matcher.Companion.ofType
|
||||
import io.smnp.type.model.Value
|
||||
import com.bartlomiejpluta.smnp.callable.function.Function
|
||||
import com.bartlomiejpluta.smnp.callable.function.FunctionDefinitionTool
|
||||
import com.bartlomiejpluta.smnp.callable.signature.Signature.Companion.simple
|
||||
import com.bartlomiejpluta.smnp.data.entity.Note
|
||||
import com.bartlomiejpluta.smnp.data.enumeration.Pitch
|
||||
import com.bartlomiejpluta.smnp.math.Fraction
|
||||
import com.bartlomiejpluta.smnp.type.enumeration.DataType.*
|
||||
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.ofType
|
||||
import com.bartlomiejpluta.smnp.type.model.Value
|
||||
|
||||
class NoteConstructor : Function("Note") {
|
||||
override fun define(new: FunctionDefinitionTool) {
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.bartlomiejpluta.smnp.ext.lang.function
|
||||
|
||||
import com.bartlomiejpluta.smnp.callable.function.Function
|
||||
import com.bartlomiejpluta.smnp.callable.function.FunctionDefinitionTool
|
||||
import com.bartlomiejpluta.smnp.callable.signature.Signature.Companion.simple
|
||||
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.anyType
|
||||
import com.bartlomiejpluta.smnp.type.model.Value
|
||||
|
||||
class TypeOfFunction : Function("typeOf") {
|
||||
override fun define(new: FunctionDefinitionTool) {
|
||||
new function simple(anyType()) body { _, (obj) ->
|
||||
Value.string(obj.typeName)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.bartlomiejpluta.smnp.ext.lang.method
|
||||
|
||||
import com.bartlomiejpluta.smnp.callable.method.Method
|
||||
import com.bartlomiejpluta.smnp.callable.method.MethodDefinitionTool
|
||||
import com.bartlomiejpluta.smnp.callable.signature.Signature.Companion.simple
|
||||
import com.bartlomiejpluta.smnp.error.EvaluationException
|
||||
import com.bartlomiejpluta.smnp.type.enumeration.DataType.INT
|
||||
import com.bartlomiejpluta.smnp.type.enumeration.DataType.STRING
|
||||
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.ofType
|
||||
import com.bartlomiejpluta.smnp.type.model.Value
|
||||
|
||||
class CharAtMethod : Method(ofType(STRING),"charAt") {
|
||||
override fun define(new: MethodDefinitionTool) {
|
||||
new method simple(ofType(INT)) body { _, obj, (index) ->
|
||||
Value.string((obj.value as String).getOrNull(index.value as Int)?.toString() ?: throw EvaluationException("Index '${index.value}' runs out of string bounds"))
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.bartlomiejpluta.smnp.ext.lang.method
|
||||
|
||||
import com.bartlomiejpluta.smnp.callable.method.Method
|
||||
import com.bartlomiejpluta.smnp.callable.method.MethodDefinitionTool
|
||||
import com.bartlomiejpluta.smnp.callable.signature.Signature.Companion.simple
|
||||
import com.bartlomiejpluta.smnp.error.EvaluationException
|
||||
import com.bartlomiejpluta.smnp.type.enumeration.DataType.INT
|
||||
import com.bartlomiejpluta.smnp.type.enumeration.DataType.LIST
|
||||
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.ofType
|
||||
import com.bartlomiejpluta.smnp.type.model.Value
|
||||
|
||||
class ListAccessMethod : Method(ofType(LIST), "get") {
|
||||
override fun define(new: MethodDefinitionTool) {
|
||||
new method simple(ofType(INT)) body { _, value, (index) ->
|
||||
val list = value.value as List<Value>
|
||||
val i = index.value as Int
|
||||
|
||||
if(i >= list.size) {
|
||||
throw EvaluationException("Index '$i' runs out of array bounds")
|
||||
}
|
||||
|
||||
list[i]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package com.bartlomiejpluta.smnp.ext.lang.method
|
||||
|
||||
import com.bartlomiejpluta.smnp.callable.method.Method
|
||||
import com.bartlomiejpluta.smnp.callable.method.MethodDefinitionTool
|
||||
import com.bartlomiejpluta.smnp.callable.signature.Signature.Companion.simple
|
||||
import com.bartlomiejpluta.smnp.error.EvaluationException
|
||||
import com.bartlomiejpluta.smnp.type.enumeration.DataType.MAP
|
||||
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.anyType
|
||||
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.ofType
|
||||
import com.bartlomiejpluta.smnp.type.model.Value
|
||||
|
||||
class MapAccessMethod : Method(ofType(MAP), "get") {
|
||||
override fun define(new: MethodDefinitionTool) {
|
||||
new method simple(anyType()) body { _, obj, (key) ->
|
||||
val map = (obj.value as Map<Value, Value>)
|
||||
map[key] ?: throw EvaluationException("Key '${key.value}' not found")
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.bartlomiejpluta.smnp.ext.lang.method
|
||||
|
||||
import com.bartlomiejpluta.smnp.callable.method.Method
|
||||
import com.bartlomiejpluta.smnp.callable.method.MethodDefinitionTool
|
||||
import com.bartlomiejpluta.smnp.callable.signature.Signature.Companion.simple
|
||||
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.anyType
|
||||
import com.bartlomiejpluta.smnp.type.model.Value
|
||||
|
||||
class StringifyMethod : Method(anyType(), "toString") {
|
||||
override fun define(new: MethodDefinitionTool) {
|
||||
new method simple() body { _, obj, _ ->
|
||||
Value.string(obj.stringify())
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
package io.smnp.ext.lang
|
||||
|
||||
import io.smnp.ext.provider.NativeModuleProvider
|
||||
import io.smnp.ext.lang.constructor.IntConstructor
|
||||
import io.smnp.ext.lang.constructor.NoteConstructor
|
||||
import io.smnp.ext.lang.function.TypeOfFunction
|
||||
import io.smnp.ext.lang.method.CharAtMethod
|
||||
import io.smnp.ext.lang.method.ListAccessMethod
|
||||
import io.smnp.ext.lang.method.MapAccessMethod
|
||||
import io.smnp.ext.lang.method.StringifyMethod
|
||||
import org.pf4j.Extension
|
||||
|
||||
@Extension
|
||||
class LangModule : NativeModuleProvider("smnp.lang") {
|
||||
override fun functions() = listOf(IntConstructor(), NoteConstructor(), TypeOfFunction())
|
||||
override fun methods() = listOf(ListAccessMethod(), MapAccessMethod(), CharAtMethod(), StringifyMethod())
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
package io.smnp.ext.lang.constructor
|
||||
|
||||
import io.smnp.callable.function.Function
|
||||
import io.smnp.callable.function.FunctionDefinitionTool
|
||||
import io.smnp.callable.signature.Signature.Companion.simple
|
||||
import io.smnp.type.enumeration.DataType.FLOAT
|
||||
import io.smnp.type.enumeration.DataType.INT
|
||||
import io.smnp.type.matcher.Matcher.Companion.ofType
|
||||
import io.smnp.type.model.Value
|
||||
|
||||
class IntConstructor : Function("Int") {
|
||||
override fun define(new: FunctionDefinitionTool) {
|
||||
new function simple(ofType(INT)) body { _, (int) ->
|
||||
int
|
||||
}
|
||||
|
||||
new function simple(ofType(FLOAT)) body { _, (float) ->
|
||||
Value.int((float.value as Float).toInt())
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
package io.smnp.ext.lang.function
|
||||
|
||||
import io.smnp.callable.function.Function
|
||||
import io.smnp.callable.function.FunctionDefinitionTool
|
||||
import io.smnp.callable.signature.Signature.Companion.simple
|
||||
import io.smnp.type.matcher.Matcher.Companion.anyType
|
||||
import io.smnp.type.model.Value
|
||||
|
||||
class TypeOfFunction : Function("typeOf") {
|
||||
override fun define(new: FunctionDefinitionTool) {
|
||||
new function simple(anyType()) body { _, (obj) ->
|
||||
Value.string(obj.typeName)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
package io.smnp.ext.lang.method
|
||||
|
||||
import io.smnp.callable.method.Method
|
||||
import io.smnp.callable.method.MethodDefinitionTool
|
||||
import io.smnp.callable.signature.Signature.Companion.simple
|
||||
import io.smnp.error.EvaluationException
|
||||
import io.smnp.type.enumeration.DataType.INT
|
||||
import io.smnp.type.enumeration.DataType.STRING
|
||||
import io.smnp.type.matcher.Matcher.Companion.ofType
|
||||
import io.smnp.type.model.Value
|
||||
|
||||
class CharAtMethod : Method(ofType(STRING),"charAt") {
|
||||
override fun define(new: MethodDefinitionTool) {
|
||||
new method simple(ofType(INT)) body { _, obj, (index) ->
|
||||
Value.string((obj.value as String).getOrNull(index.value as Int)?.toString() ?: throw EvaluationException("Index '${index.value}' runs out of string bounds"))
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,25 +0,0 @@
|
||||
package io.smnp.ext.lang.method
|
||||
|
||||
import io.smnp.callable.method.Method
|
||||
import io.smnp.callable.method.MethodDefinitionTool
|
||||
import io.smnp.callable.signature.Signature.Companion.simple
|
||||
import io.smnp.error.EvaluationException
|
||||
import io.smnp.type.enumeration.DataType.INT
|
||||
import io.smnp.type.enumeration.DataType.LIST
|
||||
import io.smnp.type.matcher.Matcher.Companion.ofType
|
||||
import io.smnp.type.model.Value
|
||||
|
||||
class ListAccessMethod : Method(ofType(LIST), "get") {
|
||||
override fun define(new: MethodDefinitionTool) {
|
||||
new method simple(ofType(INT)) body { _, value, (index) ->
|
||||
val list = value.value as List<Value>
|
||||
val i = index.value as Int
|
||||
|
||||
if(i >= list.size) {
|
||||
throw EvaluationException("Index '$i' runs out of array bounds")
|
||||
}
|
||||
|
||||
list[i]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
package io.smnp.ext.lang.method
|
||||
|
||||
import io.smnp.callable.method.Method
|
||||
import io.smnp.callable.method.MethodDefinitionTool
|
||||
import io.smnp.callable.signature.Signature.Companion.simple
|
||||
import io.smnp.error.EvaluationException
|
||||
import io.smnp.type.enumeration.DataType.MAP
|
||||
import io.smnp.type.matcher.Matcher.Companion.anyType
|
||||
import io.smnp.type.matcher.Matcher.Companion.ofType
|
||||
import io.smnp.type.model.Value
|
||||
|
||||
class MapAccessMethod : Method(ofType(MAP), "get") {
|
||||
override fun define(new: MethodDefinitionTool) {
|
||||
new method simple(anyType()) body { _, obj, (key) ->
|
||||
val map = (obj.value as Map<Value, Value>)
|
||||
map[key] ?: throw EvaluationException("Key '${key.value}' not found")
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
package io.smnp.ext.lang.method
|
||||
|
||||
import io.smnp.callable.method.Method
|
||||
import io.smnp.callable.method.MethodDefinitionTool
|
||||
import io.smnp.callable.signature.Signature.Companion.simple
|
||||
import io.smnp.type.matcher.Matcher.Companion.anyType
|
||||
import io.smnp.type.model.Value
|
||||
|
||||
class StringifyMethod : Method(anyType(), "toString") {
|
||||
override fun define(new: MethodDefinitionTool) {
|
||||
new method simple() body { _, obj, _ ->
|
||||
Value.string(obj.stringify())
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
package io.smnp.ext.math
|
||||
package com.bartlomiejpluta.smnp.ext.math
|
||||
|
||||
import io.smnp.ext.math.function.ModuloFunction
|
||||
import io.smnp.ext.math.function.RandomFunction
|
||||
import io.smnp.ext.provider.HybridModuleProvider
|
||||
import com.bartlomiejpluta.smnp.ext.math.function.ModuloFunction
|
||||
import com.bartlomiejpluta.smnp.ext.math.function.RandomFunction
|
||||
import com.bartlomiejpluta.smnp.ext.provider.HybridModuleProvider
|
||||
import org.pf4j.Extension
|
||||
|
||||
@Extension
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.bartlomiejpluta.smnp.ext.math.function
|
||||
|
||||
import com.bartlomiejpluta.smnp.callable.function.Function
|
||||
import com.bartlomiejpluta.smnp.callable.function.FunctionDefinitionTool
|
||||
import com.bartlomiejpluta.smnp.callable.signature.Signature.Companion.simple
|
||||
import com.bartlomiejpluta.smnp.type.enumeration.DataType.INT
|
||||
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.ofType
|
||||
import com.bartlomiejpluta.smnp.type.model.Value
|
||||
|
||||
class ModuloFunction : Function("mod") {
|
||||
override fun define(new: FunctionDefinitionTool) {
|
||||
new function simple(ofType(INT), ofType(INT)) body { _, (a, b) ->
|
||||
Value.int(a.value as Int % b.value as Int)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.bartlomiejpluta.smnp.ext.math.function
|
||||
|
||||
import com.bartlomiejpluta.smnp.callable.function.Function
|
||||
import com.bartlomiejpluta.smnp.callable.function.FunctionDefinitionTool
|
||||
import com.bartlomiejpluta.smnp.callable.signature.Signature.Companion.simple
|
||||
import com.bartlomiejpluta.smnp.type.model.Value
|
||||
import kotlin.random.Random
|
||||
|
||||
class RandomFunction : Function("random") {
|
||||
override fun define(new: FunctionDefinitionTool) {
|
||||
new function simple() body { _, _ ->
|
||||
Value.float(Random.nextFloat())
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
package io.smnp.ext.math.function
|
||||
|
||||
import io.smnp.callable.function.Function
|
||||
import io.smnp.callable.function.FunctionDefinitionTool
|
||||
import io.smnp.callable.signature.Signature.Companion.simple
|
||||
import io.smnp.type.enumeration.DataType.INT
|
||||
import io.smnp.type.matcher.Matcher.Companion.ofType
|
||||
import io.smnp.type.model.Value
|
||||
|
||||
class ModuloFunction : Function("mod") {
|
||||
override fun define(new: FunctionDefinitionTool) {
|
||||
new function simple(ofType(INT), ofType(INT)) body { _, (a, b) ->
|
||||
Value.int(a.value as Int % b.value as Int)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
package io.smnp.ext.math.function
|
||||
|
||||
import io.smnp.callable.function.Function
|
||||
import io.smnp.callable.function.FunctionDefinitionTool
|
||||
import io.smnp.callable.signature.Signature.Companion.simple
|
||||
import io.smnp.type.model.Value
|
||||
import kotlin.random.Random
|
||||
|
||||
class RandomFunction : Function("random") {
|
||||
override fun define(new: FunctionDefinitionTool) {
|
||||
new function simple() body { _, _ ->
|
||||
Value.float(Random.nextFloat())
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package com.bartlomiejpluta.smnp.ext.mic
|
||||
|
||||
import com.bartlomiejpluta.smnp.ext.mic.function.MicLevelFunction
|
||||
import com.bartlomiejpluta.smnp.ext.mic.function.WaitFunction
|
||||
import com.bartlomiejpluta.smnp.ext.provider.NativeModuleProvider
|
||||
import org.pf4j.Extension
|
||||
|
||||
@Extension
|
||||
class MicrophoneModule : NativeModuleProvider("smnp.audio.mic") {
|
||||
override fun functions() = listOf(WaitFunction(), MicLevelFunction())
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.bartlomiejpluta.smnp.ext.mic.function
|
||||
|
||||
import com.bartlomiejpluta.smnp.callable.function.Function
|
||||
import com.bartlomiejpluta.smnp.callable.function.FunctionDefinitionTool
|
||||
import com.bartlomiejpluta.smnp.callable.signature.Signature.Companion.simple
|
||||
import com.bartlomiejpluta.smnp.ext.mic.lib.loop.TestMicrophoneLevelLoop
|
||||
import com.bartlomiejpluta.smnp.type.model.Value
|
||||
|
||||
class MicLevelFunction : Function("micLevel") {
|
||||
override fun define(new: FunctionDefinitionTool) {
|
||||
new function simple() body { _, _ ->
|
||||
val printer = TestMicrophoneLevelLoop()
|
||||
printer.run()
|
||||
Value.void()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package com.bartlomiejpluta.smnp.ext.mic.function
|
||||
|
||||
import com.bartlomiejpluta.smnp.callable.function.Function
|
||||
import com.bartlomiejpluta.smnp.callable.function.FunctionDefinitionTool
|
||||
import com.bartlomiejpluta.smnp.callable.signature.Signature.Companion.simple
|
||||
import com.bartlomiejpluta.smnp.ext.mic.lib.loop.SoundListenerLoop
|
||||
import com.bartlomiejpluta.smnp.type.enumeration.DataType.INT
|
||||
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.ofType
|
||||
import com.bartlomiejpluta.smnp.type.model.Value
|
||||
|
||||
class WaitFunction : Function("wait") {
|
||||
override fun define(new: FunctionDefinitionTool) {
|
||||
new function simple(ofType(INT), ofType(INT)) body { _, (inThreshold, outThreshold) ->
|
||||
val loop = SoundListenerLoop(
|
||||
inThreshold.value as Int,
|
||||
outThreshold.value as Int
|
||||
)
|
||||
loop.run()
|
||||
Value.void()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
package io.smnp.ext.mic.lib.loop
|
||||
package com.bartlomiejpluta.smnp.ext.mic.lib.loop
|
||||
|
||||
import io.smnp.error.CustomException
|
||||
import com.bartlomiejpluta.smnp.error.CustomException
|
||||
import javax.sound.sampled.AudioFormat
|
||||
import javax.sound.sampled.AudioSystem
|
||||
import javax.sound.sampled.DataLine
|
||||
@@ -1,4 +1,4 @@
|
||||
package io.smnp.ext.mic.lib.loop
|
||||
package com.bartlomiejpluta.smnp.ext.mic.lib.loop
|
||||
|
||||
class SoundListenerLoop(private val inThreshold: Int, private val outThreshold: Int) : MicrophoneLevelLoop() {
|
||||
private var noiseReached = false
|
||||
@@ -1,4 +1,4 @@
|
||||
package io.smnp.ext.mic.lib.loop
|
||||
package com.bartlomiejpluta.smnp.ext.mic.lib.loop
|
||||
|
||||
import kotlin.math.min
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
package io.smnp.ext.mic
|
||||
|
||||
import io.smnp.ext.provider.NativeModuleProvider
|
||||
import io.smnp.ext.mic.function.MicLevelFunction
|
||||
import io.smnp.ext.mic.function.WaitFunction
|
||||
import org.pf4j.Extension
|
||||
|
||||
@Extension
|
||||
class MicrophoneModule : NativeModuleProvider("smnp.audio.mic") {
|
||||
override fun functions() = listOf(WaitFunction(), MicLevelFunction())
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
package io.smnp.ext.mic.function
|
||||
|
||||
import io.smnp.callable.function.Function
|
||||
import io.smnp.callable.function.FunctionDefinitionTool
|
||||
import io.smnp.callable.signature.Signature.Companion.simple
|
||||
import io.smnp.ext.mic.lib.loop.TestMicrophoneLevelLoop
|
||||
import io.smnp.type.model.Value
|
||||
|
||||
class MicLevelFunction : Function("micLevel") {
|
||||
override fun define(new: FunctionDefinitionTool) {
|
||||
new function simple() body { _, _ ->
|
||||
val printer = TestMicrophoneLevelLoop()
|
||||
printer.run()
|
||||
Value.void()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
package io.smnp.ext.mic.function
|
||||
|
||||
import io.smnp.callable.function.Function
|
||||
import io.smnp.callable.function.FunctionDefinitionTool
|
||||
import io.smnp.callable.signature.Signature.Companion.simple
|
||||
import io.smnp.ext.mic.lib.loop.SoundListenerLoop
|
||||
import io.smnp.type.enumeration.DataType.INT
|
||||
import io.smnp.type.matcher.Matcher.Companion.ofType
|
||||
import io.smnp.type.model.Value
|
||||
|
||||
class WaitFunction : Function("wait") {
|
||||
override fun define(new: FunctionDefinitionTool) {
|
||||
new function simple(ofType(INT), ofType(INT)) body { _, (inThreshold, outThreshold) ->
|
||||
val loop = SoundListenerLoop(
|
||||
inThreshold.value as Int,
|
||||
outThreshold.value as Int
|
||||
)
|
||||
loop.run()
|
||||
Value.void()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,10 @@
|
||||
package io.smnp.ext.midi
|
||||
package com.bartlomiejpluta.smnp.ext.midi
|
||||
|
||||
import io.smnp.environment.Environment
|
||||
import io.smnp.ext.midi.function.MidiFunction
|
||||
import io.smnp.ext.midi.function.MidiHelpFunction
|
||||
import io.smnp.ext.midi.lib.midi.Midi
|
||||
import io.smnp.ext.provider.HybridModuleProvider
|
||||
import com.bartlomiejpluta.smnp.environment.Environment
|
||||
import com.bartlomiejpluta.smnp.ext.midi.function.MidiFunction
|
||||
import com.bartlomiejpluta.smnp.ext.midi.function.MidiHelpFunction
|
||||
import com.bartlomiejpluta.smnp.ext.midi.lib.midi.Midi
|
||||
import com.bartlomiejpluta.smnp.ext.provider.HybridModuleProvider
|
||||
import org.pf4j.Extension
|
||||
|
||||
@Extension
|
||||
@@ -1,19 +1,19 @@
|
||||
package io.smnp.ext.midi.function
|
||||
package com.bartlomiejpluta.smnp.ext.midi.function
|
||||
|
||||
import io.smnp.callable.function.Function
|
||||
import io.smnp.callable.function.FunctionDefinitionTool
|
||||
import io.smnp.callable.signature.Signature.Companion.simple
|
||||
import io.smnp.callable.signature.Signature.Companion.vararg
|
||||
import io.smnp.error.CustomException
|
||||
import io.smnp.ext.midi.lib.midi.Midi
|
||||
import io.smnp.type.enumeration.DataType.*
|
||||
import io.smnp.type.matcher.Matcher.Companion.anyType
|
||||
import io.smnp.type.matcher.Matcher.Companion.listOf
|
||||
import io.smnp.type.matcher.Matcher.Companion.listOfMatchers
|
||||
import io.smnp.type.matcher.Matcher.Companion.mapOfMatchers
|
||||
import io.smnp.type.matcher.Matcher.Companion.ofType
|
||||
import io.smnp.type.model.Value
|
||||
import io.smnp.util.config.ConfigMapSchema
|
||||
import com.bartlomiejpluta.smnp.callable.function.Function
|
||||
import com.bartlomiejpluta.smnp.callable.function.FunctionDefinitionTool
|
||||
import com.bartlomiejpluta.smnp.callable.signature.Signature.Companion.simple
|
||||
import com.bartlomiejpluta.smnp.callable.signature.Signature.Companion.vararg
|
||||
import com.bartlomiejpluta.smnp.error.CustomException
|
||||
import com.bartlomiejpluta.smnp.ext.midi.lib.midi.Midi
|
||||
import com.bartlomiejpluta.smnp.type.enumeration.DataType.*
|
||||
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.anyType
|
||||
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.listOf
|
||||
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.listOfMatchers
|
||||
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.mapOfMatchers
|
||||
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.ofType
|
||||
import com.bartlomiejpluta.smnp.type.model.Value
|
||||
import com.bartlomiejpluta.smnp.util.config.ConfigMapSchema
|
||||
|
||||
|
||||
class MidiFunction : Function("midi") {
|
||||
@@ -1,18 +1,18 @@
|
||||
package io.smnp.ext.midi.function
|
||||
package com.bartlomiejpluta.smnp.ext.midi.function
|
||||
|
||||
import io.smnp.callable.function.Function
|
||||
import io.smnp.callable.function.FunctionDefinitionTool
|
||||
import io.smnp.callable.signature.Signature.Companion.simple
|
||||
import io.smnp.data.entity.Note
|
||||
import io.smnp.data.enumeration.Pitch
|
||||
import io.smnp.error.CustomException
|
||||
import io.smnp.ext.midi.lib.midi.Midi
|
||||
import io.smnp.math.Fraction
|
||||
import io.smnp.type.enumeration.DataType.*
|
||||
import io.smnp.type.matcher.Matcher.Companion.ofType
|
||||
import io.smnp.type.matcher.Matcher.Companion.optional
|
||||
import io.smnp.type.model.Value
|
||||
import io.smnp.util.config.ConfigMap
|
||||
import com.bartlomiejpluta.smnp.callable.function.Function
|
||||
import com.bartlomiejpluta.smnp.callable.function.FunctionDefinitionTool
|
||||
import com.bartlomiejpluta.smnp.callable.signature.Signature.Companion.simple
|
||||
import com.bartlomiejpluta.smnp.data.entity.Note
|
||||
import com.bartlomiejpluta.smnp.data.enumeration.Pitch
|
||||
import com.bartlomiejpluta.smnp.error.CustomException
|
||||
import com.bartlomiejpluta.smnp.ext.midi.lib.midi.Midi
|
||||
import com.bartlomiejpluta.smnp.math.Fraction
|
||||
import com.bartlomiejpluta.smnp.type.enumeration.DataType.*
|
||||
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.ofType
|
||||
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.optional
|
||||
import com.bartlomiejpluta.smnp.type.model.Value
|
||||
import com.bartlomiejpluta.smnp.util.config.ConfigMap
|
||||
|
||||
class MidiHelpFunction : Function("midiHelp") {
|
||||
override fun define(new: FunctionDefinitionTool) {
|
||||
@@ -1,6 +1,6 @@
|
||||
package io.smnp.ext.midi.lib.compiler
|
||||
package com.bartlomiejpluta.smnp.ext.midi.lib.compiler
|
||||
|
||||
import io.smnp.data.entity.Note
|
||||
import com.bartlomiejpluta.smnp.data.entity.Note
|
||||
import javax.sound.midi.Track
|
||||
|
||||
class DefaultSequenceCompiler : SequenceCompiler() {
|
||||
@@ -1,6 +1,6 @@
|
||||
package io.smnp.ext.midi.lib.compiler
|
||||
package com.bartlomiejpluta.smnp.ext.midi.lib.compiler
|
||||
|
||||
import io.smnp.data.entity.Note
|
||||
import com.bartlomiejpluta.smnp.data.entity.Note
|
||||
import javax.sound.midi.Track
|
||||
|
||||
class PpqSequenceCompiler : SequenceCompiler() {
|
||||
@@ -1,9 +1,9 @@
|
||||
package io.smnp.ext.midi.lib.compiler
|
||||
package com.bartlomiejpluta.smnp.ext.midi.lib.compiler
|
||||
|
||||
import io.smnp.data.entity.Note
|
||||
import io.smnp.error.CustomException
|
||||
import io.smnp.error.ShouldNeverReachThisLineException
|
||||
import io.smnp.util.config.ConfigMap
|
||||
import com.bartlomiejpluta.smnp.data.entity.Note
|
||||
import com.bartlomiejpluta.smnp.error.CustomException
|
||||
import com.bartlomiejpluta.smnp.error.ShouldNeverReachThisLineException
|
||||
import com.bartlomiejpluta.smnp.util.config.ConfigMap
|
||||
import javax.sound.midi.MidiEvent
|
||||
import javax.sound.midi.Sequence
|
||||
import javax.sound.midi.ShortMessage
|
||||
@@ -1,9 +1,9 @@
|
||||
package io.smnp.ext.midi.lib.midi
|
||||
package com.bartlomiejpluta.smnp.ext.midi.lib.midi
|
||||
|
||||
import io.smnp.ext.midi.lib.compiler.DefaultSequenceCompiler
|
||||
import io.smnp.ext.midi.lib.compiler.PpqSequenceCompiler
|
||||
import io.smnp.ext.midi.lib.compiler.SequenceCompiler
|
||||
import io.smnp.util.config.ConfigMap
|
||||
import com.bartlomiejpluta.smnp.ext.midi.lib.compiler.DefaultSequenceCompiler
|
||||
import com.bartlomiejpluta.smnp.ext.midi.lib.compiler.PpqSequenceCompiler
|
||||
import com.bartlomiejpluta.smnp.ext.midi.lib.compiler.SequenceCompiler
|
||||
import com.bartlomiejpluta.smnp.util.config.ConfigMap
|
||||
import java.io.File
|
||||
import javax.sound.midi.MidiSystem
|
||||
import javax.sound.midi.Sequence
|
||||
@@ -1,6 +1,6 @@
|
||||
package io.smnp.ext.musiccommand
|
||||
package com.bartlomiejpluta.smnp.ext.musiccommand
|
||||
|
||||
import io.smnp.ext.provider.LanguageModuleProvider
|
||||
import com.bartlomiejpluta.smnp.ext.provider.LanguageModuleProvider
|
||||
import org.pf4j.Extension
|
||||
|
||||
@Extension
|
||||
@@ -1,6 +1,6 @@
|
||||
package io.smnp.ext.musictool
|
||||
package com.bartlomiejpluta.smnp.ext.musictool
|
||||
|
||||
import io.smnp.ext.provider.LanguageModuleProvider
|
||||
import com.bartlomiejpluta.smnp.ext.provider.LanguageModuleProvider
|
||||
import org.pf4j.Extension
|
||||
|
||||
@Extension
|
||||
@@ -1,6 +1,6 @@
|
||||
package io.smnp.ext.music
|
||||
package com.bartlomiejpluta.smnp.ext.music
|
||||
|
||||
import io.smnp.ext.provider.LanguageModuleProvider
|
||||
import com.bartlomiejpluta.smnp.ext.provider.LanguageModuleProvider
|
||||
import org.pf4j.Extension
|
||||
|
||||
@Extension
|
||||
@@ -1,10 +1,10 @@
|
||||
package io.smnp.ext.synth
|
||||
package com.bartlomiejpluta.smnp.ext.synth
|
||||
|
||||
import io.smnp.environment.Environment
|
||||
import io.smnp.ext.provider.HybridModuleProvider
|
||||
import io.smnp.ext.synth.function.SynthFunction
|
||||
import io.smnp.ext.synth.function.WaveFunction
|
||||
import io.smnp.ext.synth.lib.synthesizer.Synthesizer
|
||||
import com.bartlomiejpluta.smnp.environment.Environment
|
||||
import com.bartlomiejpluta.smnp.ext.provider.HybridModuleProvider
|
||||
import com.bartlomiejpluta.smnp.ext.synth.function.SynthFunction
|
||||
import com.bartlomiejpluta.smnp.ext.synth.function.WaveFunction
|
||||
import com.bartlomiejpluta.smnp.ext.synth.lib.synthesizer.Synthesizer
|
||||
import org.pf4j.Extension
|
||||
|
||||
@Extension
|
||||
@@ -1,19 +1,19 @@
|
||||
package io.smnp.ext.synth.function
|
||||
package com.bartlomiejpluta.smnp.ext.synth.function
|
||||
|
||||
import io.smnp.callable.function.Function
|
||||
import io.smnp.callable.function.FunctionDefinitionTool
|
||||
import io.smnp.callable.signature.Signature
|
||||
import io.smnp.callable.signature.Signature.Companion.simple
|
||||
import io.smnp.ext.synth.lib.synthesizer.Synthesizer
|
||||
import io.smnp.ext.synth.lib.wave.Wave
|
||||
import io.smnp.ext.synth.lib.wave.WaveCompiler
|
||||
import io.smnp.type.enumeration.DataType.*
|
||||
import io.smnp.type.matcher.Matcher.Companion.anyType
|
||||
import io.smnp.type.matcher.Matcher.Companion.listOf
|
||||
import io.smnp.type.matcher.Matcher.Companion.listOfMatchers
|
||||
import io.smnp.type.matcher.Matcher.Companion.mapOfMatchers
|
||||
import io.smnp.type.matcher.Matcher.Companion.ofType
|
||||
import io.smnp.type.model.Value
|
||||
import com.bartlomiejpluta.smnp.callable.function.Function
|
||||
import com.bartlomiejpluta.smnp.callable.function.FunctionDefinitionTool
|
||||
import com.bartlomiejpluta.smnp.callable.signature.Signature
|
||||
import com.bartlomiejpluta.smnp.callable.signature.Signature.Companion.simple
|
||||
import com.bartlomiejpluta.smnp.ext.synth.lib.synthesizer.Synthesizer
|
||||
import com.bartlomiejpluta.smnp.ext.synth.lib.wave.Wave
|
||||
import com.bartlomiejpluta.smnp.ext.synth.lib.wave.WaveCompiler
|
||||
import com.bartlomiejpluta.smnp.type.enumeration.DataType.*
|
||||
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.anyType
|
||||
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.listOf
|
||||
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.listOfMatchers
|
||||
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.mapOfMatchers
|
||||
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.ofType
|
||||
import com.bartlomiejpluta.smnp.type.model.Value
|
||||
|
||||
class SynthFunction : Function("synth") {
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
package io.smnp.ext.synth.function
|
||||
package com.bartlomiejpluta.smnp.ext.synth.function
|
||||
|
||||
import io.smnp.callable.function.Function
|
||||
import io.smnp.callable.function.FunctionDefinitionTool
|
||||
import io.smnp.callable.signature.Signature
|
||||
import io.smnp.ext.synth.lib.synthesizer.Synthesizer
|
||||
import io.smnp.ext.synth.lib.wave.WaveCompiler
|
||||
import io.smnp.type.enumeration.DataType.*
|
||||
import io.smnp.type.matcher.Matcher.Companion.anyType
|
||||
import io.smnp.type.matcher.Matcher.Companion.listOfMatchers
|
||||
import io.smnp.type.matcher.Matcher.Companion.mapOfMatchers
|
||||
import io.smnp.type.matcher.Matcher.Companion.ofType
|
||||
import io.smnp.type.model.Value
|
||||
import com.bartlomiejpluta.smnp.callable.function.Function
|
||||
import com.bartlomiejpluta.smnp.callable.function.FunctionDefinitionTool
|
||||
import com.bartlomiejpluta.smnp.callable.signature.Signature
|
||||
import com.bartlomiejpluta.smnp.ext.synth.lib.synthesizer.Synthesizer
|
||||
import com.bartlomiejpluta.smnp.ext.synth.lib.wave.WaveCompiler
|
||||
import com.bartlomiejpluta.smnp.type.enumeration.DataType.*
|
||||
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.anyType
|
||||
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.listOfMatchers
|
||||
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.mapOfMatchers
|
||||
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.ofType
|
||||
import com.bartlomiejpluta.smnp.type.model.Value
|
||||
|
||||
class WaveFunction : Function("wave") {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package io.smnp.ext.synth.lib.envelope
|
||||
package com.bartlomiejpluta.smnp.ext.synth.lib.envelope
|
||||
|
||||
class AdsrEnvelope(private val p1: Double, private val p2: Double, private val p3: Double, private val s: Double) : Envelope() {
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
package io.smnp.ext.synth.lib.envelope
|
||||
package com.bartlomiejpluta.smnp.ext.synth.lib.envelope
|
||||
|
||||
import io.smnp.type.enumeration.DataType.FLOAT
|
||||
import io.smnp.type.matcher.Matcher.Companion.ofType
|
||||
import io.smnp.type.model.Value
|
||||
import io.smnp.util.config.ConfigMapSchema
|
||||
import com.bartlomiejpluta.smnp.type.enumeration.DataType.FLOAT
|
||||
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.ofType
|
||||
import com.bartlomiejpluta.smnp.type.model.Value
|
||||
import com.bartlomiejpluta.smnp.util.config.ConfigMapSchema
|
||||
|
||||
object AdsrEnvelopeFactory : EnvelopeFactory {
|
||||
private val schema = ConfigMapSchema()
|
||||
@@ -1,4 +1,4 @@
|
||||
package io.smnp.ext.synth.lib.envelope
|
||||
package com.bartlomiejpluta.smnp.ext.synth.lib.envelope
|
||||
|
||||
class ConstantEnvelope : Envelope() {
|
||||
override fun eval(x: Double, length: Int) = 1.0
|
||||
@@ -1,6 +1,6 @@
|
||||
package io.smnp.ext.synth.lib.envelope
|
||||
package com.bartlomiejpluta.smnp.ext.synth.lib.envelope
|
||||
|
||||
import io.smnp.type.model.Value
|
||||
import com.bartlomiejpluta.smnp.type.model.Value
|
||||
|
||||
object ConstantEnvelopeFactory : EnvelopeFactory {
|
||||
override fun createEnvelope(config: Value) = ConstantEnvelope()
|
||||
@@ -1,6 +1,6 @@
|
||||
package io.smnp.ext.synth.lib.envelope
|
||||
package com.bartlomiejpluta.smnp.ext.synth.lib.envelope
|
||||
|
||||
import io.smnp.ext.synth.lib.wave.Wave
|
||||
import com.bartlomiejpluta.smnp.ext.synth.lib.wave.Wave
|
||||
|
||||
abstract class Envelope {
|
||||
abstract fun eval(x: Double, length: Int): Double
|
||||
@@ -1,10 +1,10 @@
|
||||
package io.smnp.ext.synth.lib.envelope
|
||||
package com.bartlomiejpluta.smnp.ext.synth.lib.envelope
|
||||
|
||||
import io.smnp.error.CustomException
|
||||
import io.smnp.type.enumeration.DataType
|
||||
import io.smnp.type.matcher.Matcher
|
||||
import io.smnp.type.model.Value
|
||||
import io.smnp.util.config.ConfigMapSchema
|
||||
import com.bartlomiejpluta.smnp.error.CustomException
|
||||
import com.bartlomiejpluta.smnp.type.enumeration.DataType
|
||||
import com.bartlomiejpluta.smnp.type.matcher.Matcher
|
||||
import com.bartlomiejpluta.smnp.type.model.Value
|
||||
import com.bartlomiejpluta.smnp.util.config.ConfigMapSchema
|
||||
|
||||
interface EnvelopeFactory {
|
||||
fun createEnvelope(config: Value): Envelope
|
||||
@@ -1,8 +1,8 @@
|
||||
package io.smnp.ext.synth.lib.model
|
||||
package com.bartlomiejpluta.smnp.ext.synth.lib.model
|
||||
|
||||
import io.smnp.data.enumeration.Pitch
|
||||
import io.smnp.ext.synth.lib.envelope.EnvelopeFactory
|
||||
import io.smnp.util.config.ConfigMap
|
||||
import com.bartlomiejpluta.smnp.data.enumeration.Pitch
|
||||
import com.bartlomiejpluta.smnp.ext.synth.lib.envelope.EnvelopeFactory
|
||||
import com.bartlomiejpluta.smnp.util.config.ConfigMap
|
||||
import kotlin.math.pow
|
||||
|
||||
private val SEMITONE = 2.0.pow(1.0 / 12.0)
|
||||
@@ -1,6 +1,6 @@
|
||||
package io.smnp.ext.synth.lib.synthesizer
|
||||
package com.bartlomiejpluta.smnp.ext.synth.lib.synthesizer
|
||||
|
||||
import io.smnp.ext.synth.lib.wave.Wave
|
||||
import com.bartlomiejpluta.smnp.ext.synth.lib.wave.Wave
|
||||
import javax.sound.sampled.AudioFormat
|
||||
import javax.sound.sampled.AudioSystem
|
||||
import javax.sound.sampled.SourceDataLine
|
||||
@@ -1,4 +1,4 @@
|
||||
package io.smnp.ext.synth.lib.wave
|
||||
package com.bartlomiejpluta.smnp.ext.synth.lib.wave
|
||||
|
||||
import java.io.ByteArrayOutputStream
|
||||
import kotlin.math.roundToInt
|
||||
@@ -1,13 +1,13 @@
|
||||
package io.smnp.ext.synth.lib.wave
|
||||
package com.bartlomiejpluta.smnp.ext.synth.lib.wave
|
||||
|
||||
import io.smnp.data.entity.Note
|
||||
import io.smnp.error.CustomException
|
||||
import io.smnp.ext.synth.lib.model.CompilationParameters
|
||||
import io.smnp.math.Fraction
|
||||
import io.smnp.type.enumeration.DataType
|
||||
import io.smnp.type.matcher.Matcher
|
||||
import io.smnp.type.model.Value
|
||||
import io.smnp.util.config.ConfigMapSchema
|
||||
import com.bartlomiejpluta.smnp.data.entity.Note
|
||||
import com.bartlomiejpluta.smnp.error.CustomException
|
||||
import com.bartlomiejpluta.smnp.ext.synth.lib.model.CompilationParameters
|
||||
import com.bartlomiejpluta.smnp.math.Fraction
|
||||
import com.bartlomiejpluta.smnp.type.enumeration.DataType
|
||||
import com.bartlomiejpluta.smnp.type.matcher.Matcher
|
||||
import com.bartlomiejpluta.smnp.type.model.Value
|
||||
import com.bartlomiejpluta.smnp.util.config.ConfigMapSchema
|
||||
import kotlin.math.log
|
||||
import kotlin.math.pow
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
package com.bartlomiejpluta.smnp.ext.system
|
||||
|
||||
import com.bartlomiejpluta.smnp.ext.provider.NativeModuleProvider
|
||||
import com.bartlomiejpluta.smnp.ext.system.function.ExitFunction
|
||||
import com.bartlomiejpluta.smnp.ext.system.function.SleepFunction
|
||||
import org.pf4j.Extension
|
||||
|
||||
@Extension
|
||||
class SystemModule : NativeModuleProvider("smnp.system") {
|
||||
override fun functions() = listOf(ExitFunction(), SleepFunction())
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package com.bartlomiejpluta.smnp.ext.system.function
|
||||
|
||||
import com.bartlomiejpluta.smnp.callable.function.Function
|
||||
import com.bartlomiejpluta.smnp.callable.function.FunctionDefinitionTool
|
||||
import com.bartlomiejpluta.smnp.callable.signature.Signature.Companion.simple
|
||||
import com.bartlomiejpluta.smnp.type.enumeration.DataType.INT
|
||||
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.ofType
|
||||
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.optional
|
||||
import com.bartlomiejpluta.smnp.type.model.Value
|
||||
import kotlin.system.exitProcess
|
||||
|
||||
class ExitFunction : Function("exit") {
|
||||
override fun define(new: FunctionDefinitionTool) {
|
||||
new function simple(optional(ofType(INT))) body { _, arguments ->
|
||||
val exitCode = arguments.getOrNull(0) ?: Value.int(0)
|
||||
exitProcess(exitCode.value as Int)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.bartlomiejpluta.smnp.ext.system.function
|
||||
|
||||
import com.bartlomiejpluta.smnp.callable.function.Function
|
||||
import com.bartlomiejpluta.smnp.callable.function.FunctionDefinitionTool
|
||||
import com.bartlomiejpluta.smnp.callable.signature.Signature.Companion.simple
|
||||
import com.bartlomiejpluta.smnp.type.enumeration.DataType.INT
|
||||
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.ofType
|
||||
import com.bartlomiejpluta.smnp.type.model.Value
|
||||
|
||||
class SleepFunction : Function("sleep") {
|
||||
override fun define(new: FunctionDefinitionTool) {
|
||||
new function simple(ofType(INT)) body { _, (milli) ->
|
||||
Thread.sleep((milli.value as Int).toLong())
|
||||
Value.void()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
package io.smnp.ext.system
|
||||
|
||||
import io.smnp.ext.provider.NativeModuleProvider
|
||||
import io.smnp.ext.system.function.ExitFunction
|
||||
import io.smnp.ext.system.function.SleepFunction
|
||||
import org.pf4j.Extension
|
||||
|
||||
@Extension
|
||||
class SystemModule : NativeModuleProvider("smnp.system") {
|
||||
override fun functions() = listOf(ExitFunction(), SleepFunction())
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
package io.smnp.ext.system.function
|
||||
|
||||
import io.smnp.callable.function.Function
|
||||
import io.smnp.callable.function.FunctionDefinitionTool
|
||||
import io.smnp.callable.signature.Signature.Companion.simple
|
||||
import io.smnp.type.enumeration.DataType.INT
|
||||
import io.smnp.type.matcher.Matcher.Companion.ofType
|
||||
import io.smnp.type.matcher.Matcher.Companion.optional
|
||||
import io.smnp.type.model.Value
|
||||
import kotlin.system.exitProcess
|
||||
|
||||
class ExitFunction : Function("exit") {
|
||||
override fun define(new: FunctionDefinitionTool) {
|
||||
new function simple(optional(ofType(INT))) body { _, arguments ->
|
||||
val exitCode = arguments.getOrNull(0) ?: Value.int(0)
|
||||
exitProcess(exitCode.value as Int)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
package io.smnp.ext.system.function
|
||||
|
||||
import io.smnp.callable.function.Function
|
||||
import io.smnp.callable.function.FunctionDefinitionTool
|
||||
import io.smnp.callable.signature.Signature.Companion.simple
|
||||
import io.smnp.type.enumeration.DataType.INT
|
||||
import io.smnp.type.matcher.Matcher.Companion.ofType
|
||||
import io.smnp.type.model.Value
|
||||
|
||||
class SleepFunction : Function("sleep") {
|
||||
override fun define(new: FunctionDefinitionTool) {
|
||||
new function simple(ofType(INT)) body { _, (milli) ->
|
||||
Thread.sleep((milli.value as Int).toLong())
|
||||
Value.void()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
package io.smnp.ext.text
|
||||
package com.bartlomiejpluta.smnp.ext.text
|
||||
|
||||
import io.smnp.ext.provider.LanguageModuleProvider
|
||||
import com.bartlomiejpluta.smnp.ext.provider.LanguageModuleProvider
|
||||
import org.pf4j.Extension
|
||||
|
||||
@Extension
|
||||
Reference in New Issue
Block a user