From ee76d4c4a30b81ca08c1ddc97adc1178ac12c85c Mon Sep 17 00:00:00 2001 From: rnentjes Date: Sun, 8 Dec 2024 14:57:01 +0100 Subject: [PATCH] Refactor project structure by removing "common" module Removed the "common" module and associated configurations from the project. Updated dependencies and file placements to reflect these changes across build and source files. Migrated necessary code from the "common" module to relevant existing modules to maintain functionality. --- .idea/jsLibraryMappings.xml | 11 - audio-worklet/build.gradle.kts | 8 +- .../nl/astraeus/vst/chip/ChipProcessor.kt | 3 +- .../kotlin/nl/astraeus/vst/chip/Note.kt | 196 ++++++++++++++++++ build.gradle.kts | 1 - common/build.gradle.kts | 36 ---- common/settings.gradle.kts | 1 - .../commonMain/kotlin/nl/astraeus/vst/Note.kt | 192 ----------------- settings.gradle.kts | 1 - .../kotlin/nl/astraeus/vst/chip/Main.kt | 34 +-- 10 files changed, 201 insertions(+), 282 deletions(-) delete mode 100644 .idea/jsLibraryMappings.xml create mode 100644 audio-worklet/src/jsMain/kotlin/nl/astraeus/vst/chip/Note.kt delete mode 100644 common/build.gradle.kts delete mode 100644 common/settings.gradle.kts delete mode 100644 common/src/commonMain/kotlin/nl/astraeus/vst/Note.kt diff --git a/.idea/jsLibraryMappings.xml b/.idea/jsLibraryMappings.xml deleted file mode 100644 index 9b40f69..0000000 --- a/.idea/jsLibraryMappings.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/audio-worklet/build.gradle.kts b/audio-worklet/build.gradle.kts index 6eb7ea2..73a0e21 100644 --- a/audio-worklet/build.gradle.kts +++ b/audio-worklet/build.gradle.kts @@ -40,15 +40,9 @@ kotlin { sourceSets { val commonMain by getting { dependencies { - implementation(project(":common")) - implementation("nl.astraeus:vst-worklet-base:1.0.0-SNAPSHOT") } } - val jsMain by getting { - dependencies { - implementation(project(":common")) - } - } + val jsMain by getting } } diff --git a/audio-worklet/src/jsMain/kotlin/nl/astraeus/vst/chip/ChipProcessor.kt b/audio-worklet/src/jsMain/kotlin/nl/astraeus/vst/chip/ChipProcessor.kt index fa7e784..77b088c 100644 --- a/audio-worklet/src/jsMain/kotlin/nl/astraeus/vst/chip/ChipProcessor.kt +++ b/audio-worklet/src/jsMain/kotlin/nl/astraeus/vst/chip/ChipProcessor.kt @@ -4,7 +4,6 @@ package nl.astraeus.vst.chip import nl.astraeus.vst.ADSR import nl.astraeus.vst.AudioWorkletProcessor -import nl.astraeus.vst.Note import nl.astraeus.vst.currentTime import nl.astraeus.vst.registerProcessor import nl.astraeus.vst.sampleRate @@ -21,6 +20,8 @@ import kotlin.math.sin val POLYPHONICS = 10 val PI2 = PI * 2 +@ExperimentalJsExport +@JsExport class PlayingNote( val note: Int, var velocity: Int = 0 diff --git a/audio-worklet/src/jsMain/kotlin/nl/astraeus/vst/chip/Note.kt b/audio-worklet/src/jsMain/kotlin/nl/astraeus/vst/chip/Note.kt new file mode 100644 index 0000000..6e2f642 --- /dev/null +++ b/audio-worklet/src/jsMain/kotlin/nl/astraeus/vst/chip/Note.kt @@ -0,0 +1,196 @@ +package nl.astraeus.vst.chip + +import nl.astraeus.vst.chip.Note.entries +import kotlin.math.max +import kotlin.math.min +import kotlin.math.pow +import kotlin.math.round + +/** + * User: rnentjes + * Date: 14-11-15 + * Time: 11:50 + */ + +@ExperimentalJsExport +@JsExport +enum class Note( + val sharp: String, + val flat: String +) { + NO01("C--", "C--"), + NO02("C#-", "Db-"), + NO03("D--", "D--"), + NO04("D#-", "Eb-"), + NO05("E--", "E--"), + NO06("F--", "F--"), + NO07("F#-", "Gb-"), + NO08("G--", "G--"), + NO09("G#-", "Ab-"), + NO10("A--", "A--"), + NO11("A#-", "Bb-"), + NO12("B--", "B--"), + C0("C-0", "C-0"), + C0s("C#0", "Db0"), + D0("D-0", "D-0"), + D0s("D#0", "Eb0"), + E0("E-0", "E-0"), + F0("F-0", "F-0"), + F0s("F#0", "Gb0"), + G0("G-0", "G-0"), + G0s("G#0", "Ab0"), + A0("A-0", "A-0"), + A0s("A#0", "Bb0"), + B0("B-0", "B-0"), + C1("C-1", "C-1"), + C1s("C#1", "Db1"), + D1("D-1", "D-1"), + D1s("D#1", "Eb1"), + E1("E-1", "E-1"), + F1("F-1", "F-1"), + F1s("F#1", "Gb1"), + G1("G-1", "G-1"), + G1s("G#1", "Ab1"), + A1("A-1", "A-1"), + A1s("A#1", "Bb1"), + B1("B-1", "B-1"), + C2("C-2", "C-2"), + C2s("C#2", "Db2"), + D2("D-2", "D-2"), + D2s("D#2", "Eb2"), + E2("E-2", "E-2"), + F2("F-2", "F-2"), + F2s("F#2", "Gb2"), + G2("G-2", "G-2"), + G2s("G#2", "Ab2"), + A2("A-2", "A-2"), + A2s("A#2", "Bb2"), + B2("B-2", "B-2"), + C3("C-3", "C-3"), + C3s("C#3", "Db3"), + D3("D-3", "D-3"), + D3s("D#3", "Eb3"), + E3("E-3", "E-3"), + F3("F-3", "F-3"), + F3s("F#3", "Gb3"), + G3("G-3", "G-3"), + G3s("G#3", "Ab3"), + A3("A-3", "A-3"), + A3s("A#3", "Bb3"), + B3("B-3", "B-3"), + C4("C-4", "C-4"), + C4s("C#4", "Db4"), + D4("D-4", "D-4"), + D4s("D#4", "Eb4"), + E4("E-4", "E-4"), + F4("F-4", "F-4"), + F4s("F#4", "Gb4"), + G4("G-4", "G-4"), + G4s("G#4", "Ab4"), + A4("A-4", "A-4"), + A4s("A#4", "Bb4"), + B4("B-4", "B-4"), + C5("C-5", "C-5"), + C5s("C#5", "Db5"), + D5("D-5", "D-5"), + D5s("D#5", "Eb5"), + E5("E-5", "E-5"), + F5("F-5", "F-5"), + F5s("F#5", "Gb5"), + G5("G-5", "G-5"), + G5s("G#5", "Ab5"), + A5("A-5", "A-5"), + A5s("A#5", "Bb5"), + B5("B-5", "B-5"), + C6("C-6", "C-6"), + C6s("C#6", "Db6"), + D6("D-6", "D-6"), + D6s("D#6", "Eb6"), + E6("E-6", "E-6"), + F6("F-6", "F-6"), + F6s("F#6", "Gb6"), + G6("G-6", "G-6"), + G6s("G#6", "Ab6"), + A6("A-6", "A-6"), + A6s("A#6", "Bb6"), + B6("B-6", "B-6"), + C7("C-7", "C-7"), + C7s("C#7", "Db7"), + D7("D-7", "D-7"), + D7s("D#7", "Eb7"), + E7("E-7", "E-7"), + F7("F-7", "F-7"), + F7s("F#7", "Gb7"), + G7("G-7", "G-7"), + G7s("G#7", "Ab7"), + A7("A-7", "A-7"), + A7s("A#7", "Bb7"), + B7("B-7", "B-7"), + C8("C-8", "C-8"), + C8s("C#8", "Db8"), + D8("D-8", "D-8"), + D8s("D#8", "Eb8"), + E8("E-8", "E-8"), + F8("F-8", "F-8"), + F8s("F#8", "Gb8"), + G8("G-8", "G-8"), + G8s("G#8", "Ab8"), + A8("A-8", "A-8"), + A8s("A#8", "Bb8"), + B8("B-8", "B-8"), + C9("C-9", "C-9"), + C9s("C#9", "Db9"), + D9("D-9", "D-9"), + D9s("D#9", "Eb9"), + E9("E-9", "E-9"), + F9("F-9", "F-9"), + F9s("F#9", "Gb9"), + G9("G-9", "G-9"), + + // out of midi range + //G9s("G#9","Ab9"), + //A9("A-9","A-9"), + //A9s("A#9","Bb9"), + //B9("B-9","B-9"), + NONE("---", "---"), + UP("^^^", "^^^"), + END("XXX", "XXX"), + ; + + // 69 = A4.ordinal + val freq: Double = round(440.0 * 2.0.pow((ordinal - 69) / 12.0)) // * 10000.0) / 10000.0 + val cycleLength: Double = 1.0 / freq + var sampleDelta: Double = 0.0 + + fun transpose(semiNotes: Int): Note = if (ordinal >= C0.ordinal && ordinal <= G9.ordinal) { + var result = this.ordinal + semiNotes + + result = min(result, G9.ordinal) + result = max(result, C0.ordinal) + + fromMidi(result) + } else { + this + } + + companion object { + fun fromMidi(midi: Int): Note { + // todo: add check + return entries[midi] + } + + fun updateSampleRate(rate: Int) { + println("Setting sample rate to $rate") + for (note in Note.entries) { + note.sampleDelta = (1.0 / rate.toDouble()) / note.cycleLength + } + } + } +} + +// freq = 10Hz +// cycleLength = 0.1 +// sampleRate = 48000 +// sampleDelta = 4800 + +// (1.0 / freq) * sampleRate diff --git a/build.gradle.kts b/build.gradle.kts index f1d6e8c..b466b0e 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -55,7 +55,6 @@ kotlin { sourceSets { val commonMain by getting { dependencies { - implementation(project(":common")) //base implementation("nl.astraeus:kotlin-css-generator:1.0.10") implementation("org.jetbrains.kotlinx:kotlinx-datetime:0.6.0") diff --git a/common/build.gradle.kts b/common/build.gradle.kts deleted file mode 100644 index 57e87ec..0000000 --- a/common/build.gradle.kts +++ /dev/null @@ -1,36 +0,0 @@ -@file:OptIn(ExperimentalKotlinGradlePluginApi::class) - -import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi - -buildscript { - apply(from = "../common.gradle.kts") -} - -plugins { - kotlin("multiplatform") -} - -kotlin { - js { - compilerOptions { - target.set("es2015") - } - browser() - } - /* @OptIn(ExperimentalWasmDsl::class) - wasmJs { - browser() - mavenPublication { - groupId = group as String - pom { name = "${project.name}-wasm-js" } - } - }*/ - jvm() - - sourceSets { - val commonMain by getting - val jsMain by getting - val jvmMain by getting - //val wasmJsMain by getting - } -} diff --git a/common/settings.gradle.kts b/common/settings.gradle.kts deleted file mode 100644 index fb2502c..0000000 --- a/common/settings.gradle.kts +++ /dev/null @@ -1 +0,0 @@ -apply(from = "../settings.common.gradle.kts") diff --git a/common/src/commonMain/kotlin/nl/astraeus/vst/Note.kt b/common/src/commonMain/kotlin/nl/astraeus/vst/Note.kt deleted file mode 100644 index ca08cde..0000000 --- a/common/src/commonMain/kotlin/nl/astraeus/vst/Note.kt +++ /dev/null @@ -1,192 +0,0 @@ -package nl.astraeus.vst - -import kotlin.math.max -import kotlin.math.min -import kotlin.math.pow -import kotlin.math.round - -/** - * User: rnentjes - * Date: 14-11-15 - * Time: 11:50 - */ - -enum class Note( - val sharp: String, - val flat: String -) { - NO01("C--","C--"), - NO02("C#-","Db-"), - NO03("D--","D--"), - NO04("D#-","Eb-"), - NO05("E--","E--"), - NO06("F--","F--"), - NO07("F#-","Gb-"), - NO08("G--","G--"), - NO09("G#-","Ab-"), - NO10("A--","A--"), - NO11("A#-","Bb-"), - NO12("B--","B--"), - C0("C-0","C-0"), - C0s("C#0","Db0"), - D0("D-0","D-0"), - D0s("D#0","Eb0"), - E0("E-0","E-0"), - F0("F-0","F-0"), - F0s("F#0","Gb0"), - G0("G-0","G-0"), - G0s("G#0","Ab0"), - A0("A-0","A-0"), - A0s("A#0","Bb0"), - B0("B-0","B-0"), - C1("C-1","C-1"), - C1s("C#1","Db1"), - D1("D-1","D-1"), - D1s("D#1","Eb1"), - E1("E-1","E-1"), - F1("F-1","F-1"), - F1s("F#1","Gb1"), - G1("G-1","G-1"), - G1s("G#1","Ab1"), - A1("A-1","A-1"), - A1s("A#1","Bb1"), - B1("B-1","B-1"), - C2("C-2","C-2"), - C2s("C#2","Db2"), - D2("D-2","D-2"), - D2s("D#2","Eb2"), - E2("E-2","E-2"), - F2("F-2","F-2"), - F2s("F#2","Gb2"), - G2("G-2","G-2"), - G2s("G#2","Ab2"), - A2("A-2","A-2"), - A2s("A#2","Bb2"), - B2("B-2","B-2"), - C3("C-3","C-3"), - C3s("C#3","Db3"), - D3("D-3","D-3"), - D3s("D#3","Eb3"), - E3("E-3","E-3"), - F3("F-3","F-3"), - F3s("F#3","Gb3"), - G3("G-3","G-3"), - G3s("G#3","Ab3"), - A3("A-3","A-3"), - A3s("A#3","Bb3"), - B3("B-3","B-3"), - C4("C-4","C-4"), - C4s("C#4","Db4"), - D4("D-4","D-4"), - D4s("D#4","Eb4"), - E4("E-4","E-4"), - F4("F-4","F-4"), - F4s("F#4","Gb4"), - G4("G-4","G-4"), - G4s("G#4","Ab4"), - A4("A-4","A-4"), - A4s("A#4","Bb4"), - B4("B-4","B-4"), - C5("C-5","C-5"), - C5s("C#5","Db5"), - D5("D-5","D-5"), - D5s("D#5","Eb5"), - E5("E-5","E-5"), - F5("F-5","F-5"), - F5s("F#5","Gb5"), - G5("G-5","G-5"), - G5s("G#5","Ab5"), - A5("A-5","A-5"), - A5s("A#5","Bb5"), - B5("B-5","B-5"), - C6("C-6","C-6"), - C6s("C#6","Db6"), - D6("D-6","D-6"), - D6s("D#6","Eb6"), - E6("E-6","E-6"), - F6("F-6","F-6"), - F6s("F#6","Gb6"), - G6("G-6","G-6"), - G6s("G#6","Ab6"), - A6("A-6","A-6"), - A6s("A#6","Bb6"), - B6("B-6","B-6"), - C7("C-7","C-7"), - C7s("C#7","Db7"), - D7("D-7","D-7"), - D7s("D#7","Eb7"), - E7("E-7","E-7"), - F7("F-7","F-7"), - F7s("F#7","Gb7"), - G7("G-7","G-7"), - G7s("G#7","Ab7"), - A7("A-7","A-7"), - A7s("A#7","Bb7"), - B7("B-7","B-7"), - C8("C-8","C-8"), - C8s("C#8","Db8"), - D8("D-8","D-8"), - D8s("D#8","Eb8"), - E8("E-8","E-8"), - F8("F-8","F-8"), - F8s("F#8","Gb8"), - G8("G-8","G-8"), - G8s("G#8","Ab8"), - A8("A-8","A-8"), - A8s("A#8","Bb8"), - B8("B-8","B-8"), - C9("C-9","C-9"), - C9s("C#9","Db9"), - D9("D-9","D-9"), - D9s("D#9","Eb9"), - E9("E-9","E-9"), - F9("F-9","F-9"), - F9s("F#9","Gb9"), - G9("G-9","G-9"), - // out of midi range - //G9s("G#9","Ab9"), - //A9("A-9","A-9"), - //A9s("A#9","Bb9"), - //B9("B-9","B-9"), - NONE("---", "---"), - UP("^^^","^^^"), - END("XXX","XXX"), - ; - - // 69 = A4.ordinal - val freq: Double = round(440.0 * 2.0.pow((ordinal - 69)/12.0)) // * 10000.0) / 10000.0 - val cycleLength: Double = 1.0 / freq - var sampleDelta: Double = 0.0 - - fun transpose(semiNotes: Int): Note = if (ordinal >= C0.ordinal && ordinal <= G9.ordinal) { - var result = this.ordinal + semiNotes - - result = min(result, G9.ordinal) - result = max(result, C0.ordinal) - - fromMidi(result) - } else { - this - } - - companion object { - fun fromMidi(midi: Int): Note { - // todo: add check - return entries[midi] - } - - fun updateSampleRate(rate: Int) { - println("Setting sample rate to $rate") - for (note in Note.entries) { - note.sampleDelta = (1.0 / rate.toDouble()) / note.cycleLength - } - } - } -} - -// freq = 10Hz -// cycleLength = 0.1 -// sampleRate = 48000 -// sampleDelta = 4800 - -// (1.0 / freq) * sampleRate diff --git a/settings.gradle.kts b/settings.gradle.kts index ab45cf9..92d4c00 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -2,5 +2,4 @@ apply(from = "settings.common.gradle.kts") rootProject.name = "vst-chip" -include(":common") include(":audio-worklet") diff --git a/src/jvmMain/kotlin/nl/astraeus/vst/chip/Main.kt b/src/jvmMain/kotlin/nl/astraeus/vst/chip/Main.kt index 07db578..926a156 100644 --- a/src/jvmMain/kotlin/nl/astraeus/vst/chip/Main.kt +++ b/src/jvmMain/kotlin/nl/astraeus/vst/chip/Main.kt @@ -1,6 +1,7 @@ package nl.astraeus.vst.chip import nl.astraeus.vst.base.Settings +import nl.astraeus.vst.base.db.Database import nl.astraeus.vst.base.web.UndertowServer import nl.astraeus.vst.chip.logger.LogLevel import nl.astraeus.vst.chip.logger.Logger @@ -15,38 +16,7 @@ fun main() { Settings.port = 9005 Settings.jdbcStatsPort = 6005 - /* - Class.forName("nl.astraeus.jdbc.Driver") - - Database.initialize(HikariConfig().apply { - driverClassName = "nl.astraeus.jdbc.Driver" - jdbcUrl = "jdbc:stat:webServerPort=6002:jdbc:sqlite:data/chip.db" - username = "sa" - password = "" - maximumPoolSize = 25 - isAutoCommit = false - - validate() - }) - - val sessionHandler = SessionAttachmentHandler( - InMemorySessionManager("vst-session-manager"), - SessionCookieConfig() - ) - sessionHandler.setNext(RequestHandler) - - val server = Undertow.builder() - .addHttpListener(Settings.port, "localhost") - .setIoThreads(4) - .setHandler(sessionHandler) - .setServerOption(UndertowOptions.SHUTDOWN_TIMEOUT, 1000) - .build() - - println("Starting server at port ${Settings.port}...") - server?.start() - */ - - + Database.start() UndertowServer.start( "Vst Chip",