Refactor/unify modules files structure
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
package io.smnp.ext
|
package io.smnp.ext.provider
|
||||||
|
|
||||||
import io.smnp.callable.function.Function
|
import io.smnp.callable.function.Function
|
||||||
import io.smnp.callable.method.Method
|
import io.smnp.callable.method.Method
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package io.smnp.ext
|
package io.smnp.ext.provider
|
||||||
|
|
||||||
import io.smnp.interpreter.LanguageModuleInterpreter
|
import io.smnp.interpreter.LanguageModuleInterpreter
|
||||||
import io.smnp.type.module.Module
|
import io.smnp.type.module.Module
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package io.smnp.ext
|
package io.smnp.ext.provider
|
||||||
|
|
||||||
import io.smnp.environment.Environment
|
import io.smnp.environment.Environment
|
||||||
import io.smnp.interpreter.LanguageModuleInterpreter
|
import io.smnp.interpreter.LanguageModuleInterpreter
|
||||||
@@ -1,7 +1,8 @@
|
|||||||
package io.smnp.ext
|
package io.smnp.ext.provider
|
||||||
|
|
||||||
import io.smnp.callable.function.Function
|
import io.smnp.callable.function.Function
|
||||||
import io.smnp.callable.method.Method
|
import io.smnp.callable.method.Method
|
||||||
|
import io.smnp.ext.provider.ModuleProvider
|
||||||
import io.smnp.interpreter.LanguageModuleInterpreter
|
import io.smnp.interpreter.LanguageModuleInterpreter
|
||||||
import io.smnp.type.module.Module
|
import io.smnp.type.module.Module
|
||||||
|
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
package io.smnp.ext
|
package io.smnp.ext.registry
|
||||||
|
|
||||||
import io.smnp.environment.Environment
|
import io.smnp.environment.Environment
|
||||||
|
import io.smnp.ext.provider.ModuleProvider
|
||||||
|
|
||||||
interface ModuleRegistry {
|
interface ModuleRegistry {
|
||||||
fun requestModuleProviderForPath(path: String): ModuleProvider?
|
fun requestModuleProviderForPath(path: String): ModuleProvider?
|
||||||
@@ -8,7 +8,7 @@ import io.smnp.environment.DefaultEnvironment
|
|||||||
import io.smnp.error.EnvironmentException
|
import io.smnp.error.EnvironmentException
|
||||||
import io.smnp.error.PositionException
|
import io.smnp.error.PositionException
|
||||||
import io.smnp.error.SmnpException
|
import io.smnp.error.SmnpException
|
||||||
import io.smnp.ext.DefaultModuleRegistry
|
import io.smnp.ext.registry.DefaultModuleRegistry
|
||||||
import io.smnp.interpreter.DefaultInterpreter
|
import io.smnp.interpreter.DefaultInterpreter
|
||||||
import io.smnp.preset.PresetProvider.providePresetCode
|
import io.smnp.preset.PresetProvider.providePresetCode
|
||||||
import io.smnp.type.model.Value
|
import io.smnp.type.model.Value
|
||||||
|
|||||||
@@ -5,9 +5,9 @@ import io.smnp.callable.method.Method
|
|||||||
import io.smnp.callable.signature.ActualSignatureFormatter.format
|
import io.smnp.callable.signature.ActualSignatureFormatter.format
|
||||||
import io.smnp.error.FunctionInvocationException
|
import io.smnp.error.FunctionInvocationException
|
||||||
import io.smnp.error.MethodInvocationException
|
import io.smnp.error.MethodInvocationException
|
||||||
import io.smnp.ext.DefaultModuleRegistry
|
import io.smnp.ext.registry.DefaultModuleRegistry
|
||||||
import io.smnp.ext.DefaultModuleRegistry.requestModuleProviderForPath
|
import io.smnp.ext.registry.DefaultModuleRegistry.requestModuleProviderForPath
|
||||||
import io.smnp.ext.ModuleProvider
|
import io.smnp.ext.provider.ModuleProvider
|
||||||
import io.smnp.interpreter.DefaultLanguageModuleInterpreter
|
import io.smnp.interpreter.DefaultLanguageModuleInterpreter
|
||||||
import io.smnp.runtime.model.CallStack
|
import io.smnp.runtime.model.CallStack
|
||||||
import io.smnp.type.model.Value
|
import io.smnp.type.model.Value
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
package io.smnp.ext
|
package io.smnp.ext.registry
|
||||||
|
|
||||||
import io.smnp.environment.Environment
|
import io.smnp.environment.Environment
|
||||||
import io.smnp.error.ModuleException
|
import io.smnp.error.ModuleException
|
||||||
|
import io.smnp.ext.provider.ModuleProvider
|
||||||
import org.pf4j.DefaultPluginManager
|
import org.pf4j.DefaultPluginManager
|
||||||
import java.nio.file.Paths
|
import java.nio.file.Paths
|
||||||
|
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
package io.smnp.ext
|
package io.smnp.ext.collection
|
||||||
|
|
||||||
|
import io.smnp.ext.provider.LanguageModuleProvider
|
||||||
import org.pf4j.Extension
|
import org.pf4j.Extension
|
||||||
|
|
||||||
@Extension
|
@Extension
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
package io.smnp.ext
|
package io.smnp.ext.debug
|
||||||
|
|
||||||
import io.smnp.ext.function.StackTraceFuction
|
import io.smnp.ext.provider.NativeModuleProvider
|
||||||
|
import io.smnp.ext.debug.function.StackTraceFuction
|
||||||
import org.pf4j.Extension
|
import org.pf4j.Extension
|
||||||
|
|
||||||
@Extension
|
@Extension
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package io.smnp.ext.function
|
package io.smnp.ext.debug.function
|
||||||
|
|
||||||
import io.smnp.callable.function.Function
|
import io.smnp.callable.function.Function
|
||||||
import io.smnp.callable.function.FunctionDefinitionTool
|
import io.smnp.callable.function.FunctionDefinitionTool
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
package io.smnp.ext.io
|
package io.smnp.ext.io
|
||||||
|
|
||||||
import io.smnp.ext.NativeModuleProvider
|
import io.smnp.ext.provider.NativeModuleProvider
|
||||||
import io.smnp.ext.io.function.PrintlnFunction
|
import io.smnp.ext.io.function.PrintlnFunction
|
||||||
import io.smnp.ext.io.function.ReadFunction
|
import io.smnp.ext.io.function.ReadFunction
|
||||||
import org.pf4j.Extension
|
import org.pf4j.Extension
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package io.smnp.ext.lang
|
package io.smnp.ext.lang
|
||||||
|
|
||||||
import io.smnp.ext.NativeModuleProvider
|
import io.smnp.ext.provider.NativeModuleProvider
|
||||||
import io.smnp.ext.lang.constructor.IntConstructor
|
import io.smnp.ext.lang.constructor.IntConstructor
|
||||||
import io.smnp.ext.lang.constructor.NoteConstructor
|
import io.smnp.ext.lang.constructor.NoteConstructor
|
||||||
import io.smnp.ext.lang.function.TypeOfFunction
|
import io.smnp.ext.lang.function.TypeOfFunction
|
||||||
|
|||||||
@@ -1,12 +0,0 @@
|
|||||||
package io.smnp.ext
|
|
||||||
|
|
||||||
import io.smnp.ext.function.ModuloFunction
|
|
||||||
import io.smnp.ext.function.RandomFunction
|
|
||||||
import io.smnp.ext.function.RangeFunction
|
|
||||||
import org.pf4j.Extension
|
|
||||||
|
|
||||||
@Extension
|
|
||||||
class MathModule : HybridModuleProvider("smnp.math") {
|
|
||||||
override fun functions() = listOf(ModuloFunction(), RangeFunction(), RandomFunction())
|
|
||||||
override fun dependencies() = listOf("smnp.lang", "smnp.collection")
|
|
||||||
}
|
|
||||||
16
modules/math/src/main/kotlin/io/smnp/ext/math/MathModule.kt
Normal file
16
modules/math/src/main/kotlin/io/smnp/ext/math/MathModule.kt
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
package io.smnp.ext.math
|
||||||
|
|
||||||
|
import io.smnp.ext.provider.HybridModuleProvider
|
||||||
|
import io.smnp.ext.math.function.ModuloFunction
|
||||||
|
import io.smnp.ext.math.function.RandomFunction
|
||||||
|
import io.smnp.ext.math.function.RangeFunction
|
||||||
|
import org.pf4j.Extension
|
||||||
|
|
||||||
|
@Extension
|
||||||
|
class MathModule : HybridModuleProvider("smnp.math") {
|
||||||
|
override fun functions() = listOf(
|
||||||
|
ModuloFunction(), RangeFunction(),
|
||||||
|
RandomFunction()
|
||||||
|
)
|
||||||
|
override fun dependencies() = listOf("smnp.lang", "smnp.collection")
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package io.smnp.ext.function
|
package io.smnp.ext.math.function
|
||||||
|
|
||||||
import io.smnp.callable.function.Function
|
import io.smnp.callable.function.Function
|
||||||
import io.smnp.callable.function.FunctionDefinitionTool
|
import io.smnp.callable.function.FunctionDefinitionTool
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package io.smnp.ext.function
|
package io.smnp.ext.math.function
|
||||||
|
|
||||||
import io.smnp.callable.function.Function
|
import io.smnp.callable.function.Function
|
||||||
import io.smnp.callable.function.FunctionDefinitionTool
|
import io.smnp.callable.function.FunctionDefinitionTool
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package io.smnp.ext.function
|
package io.smnp.ext.math.function
|
||||||
|
|
||||||
import io.smnp.callable.function.Function
|
import io.smnp.callable.function.Function
|
||||||
import io.smnp.callable.function.FunctionDefinitionTool
|
import io.smnp.callable.function.FunctionDefinitionTool
|
||||||
@@ -1,7 +1,8 @@
|
|||||||
package io.smnp.ext
|
package io.smnp.ext.mic
|
||||||
|
|
||||||
import io.smnp.ext.function.MicLevelFunction
|
import io.smnp.ext.provider.NativeModuleProvider
|
||||||
import io.smnp.ext.function.WaitFunction
|
import io.smnp.ext.mic.function.MicLevelFunction
|
||||||
|
import io.smnp.ext.mic.function.WaitFunction
|
||||||
import org.pf4j.Extension
|
import org.pf4j.Extension
|
||||||
|
|
||||||
@Extension
|
@Extension
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
package io.smnp.ext.function
|
package io.smnp.ext.mic.function
|
||||||
|
|
||||||
import io.smnp.callable.function.Function
|
import io.smnp.callable.function.Function
|
||||||
import io.smnp.callable.function.FunctionDefinitionTool
|
import io.smnp.callable.function.FunctionDefinitionTool
|
||||||
import io.smnp.callable.signature.Signature.Companion.simple
|
import io.smnp.callable.signature.Signature.Companion.simple
|
||||||
import io.smnp.ext.mic.TestMicrophoneLevelLoop
|
import io.smnp.ext.mic.lib.loop.TestMicrophoneLevelLoop
|
||||||
import io.smnp.type.model.Value
|
import io.smnp.type.model.Value
|
||||||
|
|
||||||
class MicLevelFunction : Function("micLevel") {
|
class MicLevelFunction : Function("micLevel") {
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
package io.smnp.ext.function
|
package io.smnp.ext.mic.function
|
||||||
|
|
||||||
import io.smnp.callable.function.Function
|
import io.smnp.callable.function.Function
|
||||||
import io.smnp.callable.function.FunctionDefinitionTool
|
import io.smnp.callable.function.FunctionDefinitionTool
|
||||||
import io.smnp.callable.signature.Signature.Companion.simple
|
import io.smnp.callable.signature.Signature.Companion.simple
|
||||||
import io.smnp.ext.mic.SoundListenerLoop
|
import io.smnp.ext.mic.lib.loop.SoundListenerLoop
|
||||||
import io.smnp.type.enumeration.DataType.INT
|
import io.smnp.type.enumeration.DataType.INT
|
||||||
import io.smnp.type.matcher.Matcher.Companion.ofType
|
import io.smnp.type.matcher.Matcher.Companion.ofType
|
||||||
import io.smnp.type.model.Value
|
import io.smnp.type.model.Value
|
||||||
@@ -11,7 +11,10 @@ import io.smnp.type.model.Value
|
|||||||
class WaitFunction : Function("wait") {
|
class WaitFunction : Function("wait") {
|
||||||
override fun define(new: FunctionDefinitionTool) {
|
override fun define(new: FunctionDefinitionTool) {
|
||||||
new function simple(ofType(INT), ofType(INT)) body { _, (inThreshold, outThreshold) ->
|
new function simple(ofType(INT), ofType(INT)) body { _, (inThreshold, outThreshold) ->
|
||||||
val loop = SoundListenerLoop(inThreshold.value as Int, outThreshold.value as Int)
|
val loop = SoundListenerLoop(
|
||||||
|
inThreshold.value as Int,
|
||||||
|
outThreshold.value as Int
|
||||||
|
)
|
||||||
loop.run()
|
loop.run()
|
||||||
Value.void()
|
Value.void()
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package io.smnp.ext.mic
|
package io.smnp.ext.mic.lib.loop
|
||||||
|
|
||||||
import io.smnp.error.CustomException
|
import io.smnp.error.CustomException
|
||||||
import javax.sound.sampled.AudioFormat
|
import javax.sound.sampled.AudioFormat
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package io.smnp.ext.mic
|
package io.smnp.ext.mic.lib.loop
|
||||||
|
|
||||||
class SoundListenerLoop(private val inThreshold: Int, private val outThreshold: Int) : MicrophoneLevelLoop() {
|
class SoundListenerLoop(private val inThreshold: Int, private val outThreshold: Int) : MicrophoneLevelLoop() {
|
||||||
private var noiseReached = false
|
private var noiseReached = false
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package io.smnp.ext.mic
|
package io.smnp.ext.mic.lib.loop
|
||||||
|
|
||||||
import kotlin.math.min
|
import kotlin.math.min
|
||||||
|
|
||||||
@@ -1,9 +1,10 @@
|
|||||||
package io.smnp.ext
|
package io.smnp.ext.midi
|
||||||
|
|
||||||
import io.smnp.environment.Environment
|
import io.smnp.environment.Environment
|
||||||
import io.smnp.ext.function.MidiFunction
|
import io.smnp.ext.provider.NativeModuleProvider
|
||||||
import io.smnp.ext.function.MidiHelpFunction
|
import io.smnp.ext.midi.function.MidiFunction
|
||||||
import io.smnp.ext.midi.Midi
|
import io.smnp.ext.midi.function.MidiHelpFunction
|
||||||
|
import io.smnp.ext.midi.lib.midi.Midi
|
||||||
import org.pf4j.Extension
|
import org.pf4j.Extension
|
||||||
|
|
||||||
@Extension
|
@Extension
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
package io.smnp.ext.function
|
package io.smnp.ext.midi.function
|
||||||
|
|
||||||
import io.smnp.callable.function.Function
|
import io.smnp.callable.function.Function
|
||||||
import io.smnp.callable.function.FunctionDefinitionTool
|
import io.smnp.callable.function.FunctionDefinitionTool
|
||||||
import io.smnp.callable.signature.Signature.Companion.simple
|
import io.smnp.callable.signature.Signature.Companion.simple
|
||||||
import io.smnp.callable.signature.Signature.Companion.vararg
|
import io.smnp.callable.signature.Signature.Companion.vararg
|
||||||
import io.smnp.error.CustomException
|
import io.smnp.error.CustomException
|
||||||
import io.smnp.ext.midi.Midi
|
import io.smnp.ext.midi.lib.midi.Midi
|
||||||
import io.smnp.type.enumeration.DataType.*
|
import io.smnp.type.enumeration.DataType.*
|
||||||
import io.smnp.type.matcher.Matcher.Companion.anyType
|
import io.smnp.type.matcher.Matcher.Companion.anyType
|
||||||
import io.smnp.type.matcher.Matcher.Companion.listOf
|
import io.smnp.type.matcher.Matcher.Companion.listOf
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package io.smnp.ext.function
|
package io.smnp.ext.midi.function
|
||||||
|
|
||||||
import io.smnp.callable.function.Function
|
import io.smnp.callable.function.Function
|
||||||
import io.smnp.callable.function.FunctionDefinitionTool
|
import io.smnp.callable.function.FunctionDefinitionTool
|
||||||
@@ -6,7 +6,7 @@ import io.smnp.callable.signature.Signature.Companion.simple
|
|||||||
import io.smnp.data.entity.Note
|
import io.smnp.data.entity.Note
|
||||||
import io.smnp.data.enumeration.Pitch
|
import io.smnp.data.enumeration.Pitch
|
||||||
import io.smnp.error.CustomException
|
import io.smnp.error.CustomException
|
||||||
import io.smnp.ext.midi.Midi
|
import io.smnp.ext.midi.lib.midi.Midi
|
||||||
import io.smnp.math.Fraction
|
import io.smnp.math.Fraction
|
||||||
import io.smnp.type.enumeration.DataType.*
|
import io.smnp.type.enumeration.DataType.*
|
||||||
import io.smnp.type.matcher.Matcher.Companion.ofType
|
import io.smnp.type.matcher.Matcher.Companion.ofType
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package io.smnp.ext.midi
|
package io.smnp.ext.midi.lib.compiler
|
||||||
|
|
||||||
import io.smnp.data.entity.Note
|
import io.smnp.data.entity.Note
|
||||||
import javax.sound.midi.Track
|
import javax.sound.midi.Track
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package io.smnp.ext.midi
|
package io.smnp.ext.midi.lib.compiler
|
||||||
|
|
||||||
import io.smnp.data.entity.Note
|
import io.smnp.data.entity.Note
|
||||||
import javax.sound.midi.Track
|
import javax.sound.midi.Track
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package io.smnp.ext.midi
|
package io.smnp.ext.midi.lib.compiler
|
||||||
|
|
||||||
import io.smnp.data.entity.Note
|
import io.smnp.data.entity.Note
|
||||||
import io.smnp.error.EvaluationException
|
import io.smnp.error.EvaluationException
|
||||||
@@ -91,7 +91,10 @@ abstract class SequenceCompiler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun allNotesOff(channel: Int, tick: Long): MidiEvent {
|
private fun allNotesOff(channel: Int, tick: Long): MidiEvent {
|
||||||
return event(Command.CONTROL_CHANGE, channel, Data1.ALL_NOTES_OFF, Data2.ZERO, tick)
|
return event(
|
||||||
|
Command.CONTROL_CHANGE, channel,
|
||||||
|
Data1.ALL_NOTES_OFF,
|
||||||
|
Data2.ZERO, tick)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun event(command: Int, channel: Int, data1: Int, data2: Int, tick: Long): MidiEvent {
|
private fun event(command: Int, channel: Int, data1: Int, data2: Int, tick: Long): MidiEvent {
|
||||||
@@ -1,5 +1,8 @@
|
|||||||
package io.smnp.ext.midi
|
package io.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 io.smnp.util.config.ConfigMap
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import javax.sound.midi.MidiSystem
|
import javax.sound.midi.MidiSystem
|
||||||
@@ -29,12 +32,17 @@ object Midi {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun with(config: ConfigMap): SequenceExecutor {
|
fun with(config: ConfigMap): SequenceExecutor {
|
||||||
return SequenceExecutor(sequencer, config)
|
return SequenceExecutor(
|
||||||
|
sequencer,
|
||||||
|
config
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
class SequenceExecutor(private val sequencer: Sequencer, private val config: ConfigMap) {
|
class SequenceExecutor(private val sequencer: Sequencer, private val config: ConfigMap) {
|
||||||
fun play(lines: List<List<Any>>) {
|
fun play(lines: List<List<Any>>) {
|
||||||
val sequence = Sequence(Sequence.PPQ, config.getUnwrappedOrDefault("ppq", DEFAULT_PPQ))
|
val sequence = Sequence(Sequence.PPQ, config.getUnwrappedOrDefault("ppq",
|
||||||
|
DEFAULT_PPQ
|
||||||
|
))
|
||||||
provideCompiler(config).compileLines(lines, sequence)
|
provideCompiler(config).compileLines(lines, sequence)
|
||||||
play(sequence)
|
play(sequence)
|
||||||
writeToFile(sequence)
|
writeToFile(sequence)
|
||||||
@@ -59,7 +67,9 @@ object Midi {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun play(channels: Map<Int, List<List<Any>>>) {
|
fun play(channels: Map<Int, List<List<Any>>>) {
|
||||||
val sequence = Sequence(Sequence.PPQ, config.getUnwrappedOrDefault("ppq", DEFAULT_PPQ))
|
val sequence = Sequence(Sequence.PPQ, config.getUnwrappedOrDefault("ppq",
|
||||||
|
DEFAULT_PPQ
|
||||||
|
))
|
||||||
provideCompiler(config).compileChannels(channels, sequence)
|
provideCompiler(config).compileChannels(channels, sequence)
|
||||||
play(sequence)
|
play(sequence)
|
||||||
writeToFile(sequence)
|
writeToFile(sequence)
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
package io.smnp.ext.musictools
|
package io.smnp.ext.musictools
|
||||||
|
|
||||||
import io.smnp.ext.LanguageModuleProvider
|
import io.smnp.ext.provider.LanguageModuleProvider
|
||||||
import org.pf4j.Extension
|
import org.pf4j.Extension
|
||||||
|
|
||||||
@Extension
|
@Extension
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package io.smnp.ext
|
package io.smnp.ext.music
|
||||||
|
|
||||||
|
import io.smnp.ext.provider.LanguageModuleProvider
|
||||||
import org.pf4j.Extension
|
import org.pf4j.Extension
|
||||||
|
|
||||||
@Extension
|
@Extension
|
||||||
@@ -1,9 +1,10 @@
|
|||||||
package io.smnp.ext
|
package io.smnp.ext.synth
|
||||||
|
|
||||||
import io.smnp.environment.Environment
|
import io.smnp.environment.Environment
|
||||||
import io.smnp.ext.function.SynthFunction
|
import io.smnp.ext.provider.HybridModuleProvider
|
||||||
import io.smnp.ext.function.WaveFunction
|
import io.smnp.ext.synth.function.SynthFunction
|
||||||
import io.smnp.ext.synth.Synthesizer
|
import io.smnp.ext.synth.function.WaveFunction
|
||||||
|
import io.smnp.ext.synth.lib.synthesizer.Synthesizer
|
||||||
import org.pf4j.Extension
|
import org.pf4j.Extension
|
||||||
|
|
||||||
@Extension
|
@Extension
|
||||||
@@ -1,12 +1,12 @@
|
|||||||
package io.smnp.ext.function
|
package io.smnp.ext.synth.function
|
||||||
|
|
||||||
import io.smnp.callable.function.Function
|
import io.smnp.callable.function.Function
|
||||||
import io.smnp.callable.function.FunctionDefinitionTool
|
import io.smnp.callable.function.FunctionDefinitionTool
|
||||||
import io.smnp.callable.signature.Signature
|
import io.smnp.callable.signature.Signature
|
||||||
import io.smnp.callable.signature.Signature.Companion.simple
|
import io.smnp.callable.signature.Signature.Companion.simple
|
||||||
import io.smnp.ext.synth.Synthesizer
|
import io.smnp.ext.synth.lib.synthesizer.Synthesizer
|
||||||
import io.smnp.ext.synth.Wave
|
import io.smnp.ext.synth.lib.wave.Wave
|
||||||
import io.smnp.ext.synth.WaveCompiler
|
import io.smnp.ext.synth.lib.wave.WaveCompiler
|
||||||
import io.smnp.type.enumeration.DataType
|
import io.smnp.type.enumeration.DataType
|
||||||
import io.smnp.type.enumeration.DataType.INT
|
import io.smnp.type.enumeration.DataType.INT
|
||||||
import io.smnp.type.matcher.Matcher
|
import io.smnp.type.matcher.Matcher
|
||||||
@@ -26,14 +26,20 @@ class SynthFunction : Function("synth") {
|
|||||||
listOf(DataType.NOTE, INT, DataType.STRING),
|
listOf(DataType.NOTE, INT, DataType.STRING),
|
||||||
Matcher.mapOfMatchers(Matcher.ofType(DataType.STRING), Matcher.anyType())
|
Matcher.mapOfMatchers(Matcher.ofType(DataType.STRING), Matcher.anyType())
|
||||||
) body { _, (config, vararg) ->
|
) body { _, (config, vararg) ->
|
||||||
val compiler = WaveCompiler(config, Synthesizer.SAMPLING_RATE)
|
val compiler = WaveCompiler(
|
||||||
|
config,
|
||||||
|
Synthesizer.SAMPLING_RATE
|
||||||
|
)
|
||||||
val wave = compiler.compileLines(vararg.unwrapCollections() as List<List<Value>>)
|
val wave = compiler.compileLines(vararg.unwrapCollections() as List<List<Value>>)
|
||||||
Synthesizer.synth(wave)
|
Synthesizer.synth(wave)
|
||||||
Value.void()
|
Value.void()
|
||||||
}
|
}
|
||||||
|
|
||||||
new function Signature.vararg(listOf(DataType.NOTE, INT, DataType.STRING)) body { _, (vararg) ->
|
new function Signature.vararg(listOf(DataType.NOTE, INT, DataType.STRING)) body { _, (vararg) ->
|
||||||
val compiler = WaveCompiler(Value.map(emptyMap()), Synthesizer.SAMPLING_RATE)
|
val compiler = WaveCompiler(
|
||||||
|
Value.map(emptyMap()),
|
||||||
|
Synthesizer.SAMPLING_RATE
|
||||||
|
)
|
||||||
val wave = compiler.compileLines(vararg.unwrapCollections() as List<List<Value>>)
|
val wave = compiler.compileLines(vararg.unwrapCollections() as List<List<Value>>)
|
||||||
Synthesizer.synth(wave)
|
Synthesizer.synth(wave)
|
||||||
Value.void()
|
Value.void()
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
package io.smnp.ext.function
|
package io.smnp.ext.synth.function
|
||||||
|
|
||||||
import io.smnp.callable.function.Function
|
import io.smnp.callable.function.Function
|
||||||
import io.smnp.callable.function.FunctionDefinitionTool
|
import io.smnp.callable.function.FunctionDefinitionTool
|
||||||
import io.smnp.callable.signature.Signature
|
import io.smnp.callable.signature.Signature
|
||||||
import io.smnp.ext.synth.Synthesizer
|
import io.smnp.ext.synth.lib.synthesizer.Synthesizer
|
||||||
import io.smnp.ext.synth.WaveCompiler
|
import io.smnp.ext.synth.lib.wave.WaveCompiler
|
||||||
import io.smnp.type.enumeration.DataType.*
|
import io.smnp.type.enumeration.DataType.*
|
||||||
import io.smnp.type.matcher.Matcher.Companion.anyType
|
import io.smnp.type.matcher.Matcher.Companion.anyType
|
||||||
import io.smnp.type.matcher.Matcher.Companion.listOf
|
import io.smnp.type.matcher.Matcher.Companion.listOf
|
||||||
@@ -27,7 +27,8 @@ class WaveFunction : Function("wave") {
|
|||||||
}
|
}
|
||||||
|
|
||||||
new function Signature.vararg(listOf(NOTE, INT, STRING)) body { _, (vararg) ->
|
new function Signature.vararg(listOf(NOTE, INT, STRING)) body { _, (vararg) ->
|
||||||
val compiler = WaveCompiler(Value.map(emptyMap()), Synthesizer.SAMPLING_RATE)
|
val compiler =
|
||||||
|
WaveCompiler(Value.map(emptyMap()), Synthesizer.SAMPLING_RATE)
|
||||||
|
|
||||||
val wave = compiler.compileLines(vararg.unwrapCollections() as List<List<Value>>)
|
val wave = compiler.compileLines(vararg.unwrapCollections() as List<List<Value>>)
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package io.smnp.ext.synth
|
package io.smnp.ext.synth.lib.envelope
|
||||||
|
|
||||||
class AdsrEnvelope(private val p1: Double, private val p2: Double, private val p3: Double, private val s: Double) : Envelope() {
|
class AdsrEnvelope(private val p1: Double, private val p2: Double, private val p3: Double, private val s: Double) : Envelope() {
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package io.smnp.ext.synth
|
package io.smnp.ext.synth.lib.envelope
|
||||||
|
|
||||||
import io.smnp.type.enumeration.DataType.FLOAT
|
import io.smnp.type.enumeration.DataType.FLOAT
|
||||||
import io.smnp.type.matcher.Matcher.Companion.ofType
|
import io.smnp.type.matcher.Matcher.Companion.ofType
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package io.smnp.ext.synth
|
package io.smnp.ext.synth.lib.envelope
|
||||||
|
|
||||||
class ConstantEnvelope : Envelope() {
|
class ConstantEnvelope : Envelope() {
|
||||||
override fun name() = "Constant"
|
override fun name() = "Constant"
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package io.smnp.ext.synth
|
package io.smnp.ext.synth.lib.envelope
|
||||||
|
|
||||||
import io.smnp.type.model.Value
|
import io.smnp.type.model.Value
|
||||||
|
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
package io.smnp.ext.synth
|
package io.smnp.ext.synth.lib.envelope
|
||||||
|
|
||||||
|
import io.smnp.ext.synth.lib.wave.Wave
|
||||||
import org.knowm.xchart.QuickChart
|
import org.knowm.xchart.QuickChart
|
||||||
import org.knowm.xchart.SwingWrapper
|
import org.knowm.xchart.SwingWrapper
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package io.smnp.ext.synth
|
package io.smnp.ext.synth.lib.envelope
|
||||||
|
|
||||||
import io.smnp.error.CustomException
|
import io.smnp.error.CustomException
|
||||||
import io.smnp.type.enumeration.DataType
|
import io.smnp.type.enumeration.DataType
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
package io.smnp.ext.synth
|
package io.smnp.ext.synth.lib.synthesizer
|
||||||
|
|
||||||
|
import io.smnp.ext.synth.lib.wave.Wave
|
||||||
import javax.sound.sampled.AudioFormat
|
import javax.sound.sampled.AudioFormat
|
||||||
import javax.sound.sampled.AudioSystem
|
import javax.sound.sampled.AudioSystem
|
||||||
import javax.sound.sampled.SourceDataLine
|
import javax.sound.sampled.SourceDataLine
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package io.smnp.ext.synth
|
package io.smnp.ext.synth.lib.wave
|
||||||
|
|
||||||
import org.knowm.xchart.QuickChart
|
import org.knowm.xchart.QuickChart
|
||||||
import org.knowm.xchart.SwingWrapper
|
import org.knowm.xchart.SwingWrapper
|
||||||
@@ -1,8 +1,10 @@
|
|||||||
package io.smnp.ext.synth
|
package io.smnp.ext.synth.lib.wave
|
||||||
|
|
||||||
import io.smnp.data.entity.Note
|
import io.smnp.data.entity.Note
|
||||||
import io.smnp.data.enumeration.Pitch
|
import io.smnp.data.enumeration.Pitch
|
||||||
import io.smnp.error.CustomException
|
import io.smnp.error.CustomException
|
||||||
|
import io.smnp.ext.synth.lib.envelope.Envelope
|
||||||
|
import io.smnp.ext.synth.lib.envelope.EnvelopeFactory
|
||||||
import io.smnp.math.Fraction
|
import io.smnp.math.Fraction
|
||||||
import io.smnp.type.enumeration.DataType
|
import io.smnp.type.enumeration.DataType
|
||||||
import io.smnp.type.matcher.Matcher
|
import io.smnp.type.matcher.Matcher
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
package io.smnp.ext
|
|
||||||
|
|
||||||
import io.smnp.ext.function.ExitFunction
|
|
||||||
import io.smnp.ext.function.SleepFunction
|
|
||||||
import org.pf4j.Extension
|
|
||||||
|
|
||||||
@Extension
|
|
||||||
class SystemModule : NativeModuleProvider("smnp.system") {
|
|
||||||
override fun functions() = listOf(ExitFunction(), SleepFunction())
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
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,4 +1,4 @@
|
|||||||
package io.smnp.ext.function
|
package io.smnp.ext.system.function
|
||||||
|
|
||||||
import io.smnp.callable.function.Function
|
import io.smnp.callable.function.Function
|
||||||
import io.smnp.callable.function.FunctionDefinitionTool
|
import io.smnp.callable.function.FunctionDefinitionTool
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package io.smnp.ext.function
|
package io.smnp.ext.system.function
|
||||||
|
|
||||||
import io.smnp.callable.function.Function
|
import io.smnp.callable.function.Function
|
||||||
import io.smnp.callable.function.FunctionDefinitionTool
|
import io.smnp.callable.function.FunctionDefinitionTool
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
package io.smnp.ext
|
package io.smnp.ext.text
|
||||||
|
|
||||||
|
import io.smnp.ext.provider.LanguageModuleProvider
|
||||||
import org.pf4j.Extension
|
import org.pf4j.Extension
|
||||||
|
|
||||||
@Extension
|
@Extension
|
||||||
Reference in New Issue
Block a user