summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacob Lee <jacob@unabridgedsoftware.com>2021-10-26 14:38:42 -0400
committerJacob Lee <jacob@unabridgedsoftware.com>2021-10-26 14:38:42 -0400
commit720ec920852a4d124fe004edae314ae14364a98c (patch)
tree32b8fe21094c9f7aa53e36b6157431b661421a1b
parent3b4cb793d67199a1c586feedf1e17987caa45bc3 (diff)
Scorched Earth
-rw-r--r--klangfarb/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.md53
-rw-r--r--klangfarb/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stexbin0 -> 3413 bytes
-rw-r--r--klangfarb/Main.gdns6
-rw-r--r--klangfarb/Main.tscn6
-rw-r--r--klangfarb/klangfarbrs.gdnlib (renamed from klangfarb/libklangfarbrs.gdnlib)14
-rwxr-xr-x[-rw-r--r--]klangfarb/libklangfarbrs.sobin19917392 -> 19936592 bytes
-rw-r--r--klangfarb/main.gd17
-rw-r--r--klangfarbrs/Cargo.lock668
-rw-r--r--klangfarbrs/Cargo.toml5
-rw-r--r--klangfarbrs/src/ignore147
-rw-r--r--klangfarbrs/src/lib.rs184
-rw-r--r--klangfarbrs/src/main.rs9
12 files changed, 205 insertions, 854 deletions
diff --git a/klangfarb/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.md5 b/klangfarb/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.md5
new file mode 100644
index 0000000..7b61c3e
--- /dev/null
+++ b/klangfarb/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.md5
@@ -0,0 +1,3 @@
+source_md5="47313fa4c47a9963fddd764e1ec6e4a8"
+dest_md5="2ded9e7f9060e2b530aab678b135fc5b"
+
diff --git a/klangfarb/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex b/klangfarb/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex
new file mode 100644
index 0000000..3ca6461
--- /dev/null
+++ b/klangfarb/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex
Binary files differ
diff --git a/klangfarb/Main.gdns b/klangfarb/Main.gdns
index 673e307..e551128 100644
--- a/klangfarb/Main.gdns
+++ b/klangfarb/Main.gdns
@@ -1,8 +1,8 @@
[gd_resource type="NativeScript" load_steps=2 format=2]
-[ext_resource path="res://libklangfarbrs.gdnlib" type="GDNativeLibrary" id=1]
+[ext_resource path="res://klangfarbrs.gdnlib" type="GDNativeLibrary" id=1]
[resource]
-resource_name = "Synth"
-class_name = "Synth"
+resource_name = "MonoBuffer"
+class_name = "MonoBuffer"
library = ExtResource( 1 )
diff --git a/klangfarb/Main.tscn b/klangfarb/Main.tscn
index bba01a7..9c58bfd 100644
--- a/klangfarb/Main.tscn
+++ b/klangfarb/Main.tscn
@@ -1,6 +1,10 @@
-[gd_scene load_steps=2 format=2]
+[gd_scene load_steps=3 format=2]
[ext_resource path="res://Main.gdns" type="Script" id=1]
+[ext_resource path="res://main.gd" type="Script" id=2]
[node name="Node" type="Node"]
script = ExtResource( 1 )
+
+[node name="Node" type="Node" parent="."]
+script = ExtResource( 2 )
diff --git a/klangfarb/libklangfarbrs.gdnlib b/klangfarb/klangfarbrs.gdnlib
index 6cfb13a..a7f0183 100644
--- a/klangfarb/libklangfarbrs.gdnlib
+++ b/klangfarb/klangfarbrs.gdnlib
@@ -1,10 +1,3 @@
-[general]
-
-singleton=false
-load_once=true
-symbol_prefix="godot_"
-reloadable=true
-
[entry]
X11.64="res://libklangfarbrs.so"
@@ -12,3 +5,10 @@ X11.64="res://libklangfarbrs.so"
[dependencies]
X11.64=[ ]
+
+[general]
+
+singleton=false
+load_once=true
+symbol_prefix="godot_"
+reloadable=true
diff --git a/klangfarb/libklangfarbrs.so b/klangfarb/libklangfarbrs.so
index d428f9c..2ca0b85 100644..100755
--- a/klangfarb/libklangfarbrs.so
+++ b/klangfarb/libklangfarbrs.so
Binary files differ
diff --git a/klangfarb/main.gd b/klangfarb/main.gd
new file mode 100644
index 0000000..96d8cb5
--- /dev/null
+++ b/klangfarb/main.gd
@@ -0,0 +1,17 @@
+extends Node
+
+# Declare member variables here. Examples:
+# var a = 2
+# var b = "text"
+onready var data = preload("res://klangfarbrs.gdnlib")
+# var buffer = MonoBuffer.new()
+
+# Called when the node enters the scene tree for the first time.
+func _ready():
+ print("Poop", data.frames());
+
+
+
+# Called every frame. 'delta' is the elapsed time since the previous frame.
+#func _process(delta):
+# pass
diff --git a/klangfarbrs/Cargo.lock b/klangfarbrs/Cargo.lock
index f01d49d..f784589 100644
--- a/klangfarbrs/Cargo.lock
+++ b/klangfarbrs/Cargo.lock
@@ -14,34 +14,6 @@ dependencies = [
]
[[package]]
-name = "alsa"
-version = "0.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "75c4da790adcb2ce5e758c064b4f3ec17a30349f9961d3e5e6c9688b052a9e18"
-dependencies = [
- "alsa-sys",
- "bitflags",
- "libc",
- "nix",
-]
-
-[[package]]
-name = "alsa-sys"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "db8fee663d06c4e303404ef5f40488a53e062f89ba8bfed81f42325aafad1527"
-dependencies = [
- "libc",
- "pkg-config",
-]
-
-[[package]]
-name = "anyhow"
-version = "1.0.44"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "61604a8f862e1d5c3229fdd78f8b02c68dcf73a4c4b05fd636d12240aaa242c1"
-
-[[package]]
name = "approx"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -82,33 +54,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693"
[[package]]
-name = "bumpalo"
-version = "3.7.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d9df67f7bf9ef8498769f994239c45613ef0c5899415fb58e9add412d2c1a538"
-
-[[package]]
-name = "bytes"
-version = "1.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8"
-
-[[package]]
-name = "cc"
-version = "1.0.71"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "79c2681d6594606957bbb8631c4b90a7fcaaa72cdb714743a437b156d6a7eedd"
-dependencies = [
- "jobserver",
-]
-
-[[package]]
-name = "cesu8"
-version = "1.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c"
-
-[[package]]
name = "cexpr"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -135,231 +80,6 @@ dependencies = [
]
[[package]]
-name = "combine"
-version = "4.6.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a909e4d93292cd8e9c42e189f61681eff9d67b6541f96b8a1a737f23737bd001"
-dependencies = [
- "bytes",
- "memchr",
-]
-
-[[package]]
-name = "core-foundation-sys"
-version = "0.8.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc"
-
-[[package]]
-name = "coreaudio-rs"
-version = "0.10.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "11894b20ebfe1ff903cbdc52259693389eea03b94918a2def2c30c3bf227ad88"
-dependencies = [
- "bitflags",
- "coreaudio-sys",
-]
-
-[[package]]
-name = "coreaudio-sys"
-version = "0.2.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2b7e3347be6a09b46aba228d6608386739fb70beff4f61e07422da87b0bb31fa"
-dependencies = [
- "bindgen",
-]
-
-[[package]]
-name = "cpal"
-version = "0.13.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "98f45f0a21f617cd2c788889ef710b63f075c949259593ea09c826f1e47a2418"
-dependencies = [
- "alsa",
- "core-foundation-sys",
- "coreaudio-rs",
- "jni",
- "js-sys",
- "lazy_static",
- "libc",
- "mach",
- "ndk 0.3.0",
- "ndk-glue 0.3.0",
- "nix",
- "oboe",
- "parking_lot",
- "stdweb",
- "thiserror",
- "web-sys",
- "winapi",
-]
-
-[[package]]
-name = "darling"
-version = "0.10.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0d706e75d87e35569db781a9b5e2416cff1236a47ed380831f959382ccd5f858"
-dependencies = [
- "darling_core",
- "darling_macro",
-]
-
-[[package]]
-name = "darling_core"
-version = "0.10.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f0c960ae2da4de88a91b2d920c2a7233b400bc33cb28453a2987822d8392519b"
-dependencies = [
- "fnv",
- "ident_case",
- "proc-macro2",
- "quote",
- "strsim",
- "syn",
-]
-
-[[package]]
-name = "darling_macro"
-version = "0.10.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d9b5a2f4ac4969822c62224815d069952656cadc7084fdca9751e6d959189b72"
-dependencies = [
- "darling_core",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "dasp"
-version = "0.11.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7381b67da416b639690ac77c73b86a7b5e64a29e31d1f75fb3b1102301ef355a"
-dependencies = [
- "dasp_envelope",
- "dasp_frame",
- "dasp_interpolate",
- "dasp_peak",
- "dasp_ring_buffer",
- "dasp_rms",
- "dasp_sample",
- "dasp_signal",
- "dasp_slice",
- "dasp_window",
-]
-
-[[package]]
-name = "dasp_envelope"
-version = "0.11.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ec617ce7016f101a87fe85ed44180839744265fae73bb4aa43e7ece1b7668b6"
-dependencies = [
- "dasp_frame",
- "dasp_peak",
- "dasp_ring_buffer",
- "dasp_rms",
- "dasp_sample",
-]
-
-[[package]]
-name = "dasp_frame"
-version = "0.11.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b2a3937f5fe2135702897535c8d4a5553f8b116f76c1529088797f2eee7c5cd6"
-dependencies = [
- "dasp_sample",
-]
-
-[[package]]
-name = "dasp_interpolate"
-version = "0.11.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7fc975a6563bb7ca7ec0a6c784ead49983a21c24835b0bc96eea11ee407c7486"
-dependencies = [
- "dasp_frame",
- "dasp_ring_buffer",
- "dasp_sample",
-]
-
-[[package]]
-name = "dasp_peak"
-version = "0.11.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5cf88559d79c21f3d8523d91250c397f9a15b5fc72fbb3f87fdb0a37b79915bf"
-dependencies = [
- "dasp_frame",
- "dasp_sample",
-]
-
-[[package]]
-name = "dasp_ring_buffer"
-version = "0.11.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "07d79e19b89618a543c4adec9c5a347fe378a19041699b3278e616e387511ea1"
-
-[[package]]
-name = "dasp_rms"
-version = "0.11.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a6c5dcb30b7e5014486e2822537ea2beae50b19722ffe2ed7549ab03774575aa"
-dependencies = [
- "dasp_frame",
- "dasp_ring_buffer",
- "dasp_sample",
-]
-
-[[package]]
-name = "dasp_sample"
-version = "0.11.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0c87e182de0887fd5361989c677c4e8f5000cd9491d6d563161a8f3a5519fc7f"
-
-[[package]]
-name = "dasp_signal"
-version = "0.11.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "aa1ab7d01689c6ed4eae3d38fe1cea08cba761573fbd2d592528d55b421077e7"
-dependencies = [
- "dasp_envelope",
- "dasp_frame",
- "dasp_interpolate",
- "dasp_peak",
- "dasp_ring_buffer",
- "dasp_rms",
- "dasp_sample",
- "dasp_window",
-]
-
-[[package]]
-name = "dasp_slice"
-version = "0.11.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4e1c7335d58e7baedafa516cb361360ff38d6f4d3f9d9d5ee2a2fc8e27178fa1"
-dependencies = [
- "dasp_frame",
- "dasp_sample",
-]
-
-[[package]]
-name = "dasp_window"
-version = "0.11.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "99ded7b88821d2ce4e8b842c9f1c86ac911891ab89443cc1de750cae764c5076"
-dependencies = [
- "dasp_sample",
-]
-
-[[package]]
-name = "derivative"
-version = "2.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
name = "euclid"
version = "0.22.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -369,12 +89,6 @@ dependencies = [
]
[[package]]
-name = "fnv"
-version = "1.0.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
-
-[[package]]
name = "gdnative"
version = "0.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -499,12 +213,6 @@ dependencies = [
]
[[package]]
-name = "ident_case"
-version = "1.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
-
-[[package]]
name = "indexmap"
version = "1.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -530,52 +238,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4"
[[package]]
-name = "jni"
-version = "0.19.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c6df18c2e3db7e453d3c6ac5b3e9d5182664d28788126d39b91f2d1e22b017ec"
-dependencies = [
- "cesu8",
- "combine",
- "jni-sys",
- "log",
- "thiserror",
- "walkdir",
-]
-
-[[package]]
-name = "jni-sys"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130"
-
-[[package]]
-name = "jobserver"
-version = "0.1.24"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "af25a77299a7f711a01975c35a6a424eb6862092cc2d6c72c4ed6cbc56dfc1fa"
-dependencies = [
- "libc",
-]
-
-[[package]]
-name = "js-sys"
-version = "0.3.55"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7cc9ffccd38c451a86bf13657df244e9c3f37493cce8e5e21e940963777acc84"
-dependencies = [
- "wasm-bindgen",
-]
-
-[[package]]
name = "klangfarbrs"
version = "0.1.0"
dependencies = [
- "anyhow",
- "cpal",
- "dasp",
- "dasp_envelope",
- "dasp_signal",
"gdnative",
]
@@ -617,39 +282,12 @@ dependencies = [
]
[[package]]
-name = "log"
-version = "0.4.14"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710"
-dependencies = [
- "cfg-if",
-]
-
-[[package]]
-name = "mach"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afa"
-dependencies = [
- "libc",
-]
-
-[[package]]
name = "memchr"
version = "2.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a"
[[package]]
-name = "memoffset"
-version = "0.6.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "59accc507f1338036a0477ef61afdae33cde60840f4dfe481319ce3ad116ddf9"
-dependencies = [
- "autocfg",
-]
-
-[[package]]
name = "mini-internal"
version = "0.1.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -672,91 +310,6 @@ dependencies = [
]
[[package]]
-name = "ndk"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8794322172319b972f528bf90c6b467be0079f1fa82780ffb431088e741a73ab"
-dependencies = [
- "jni-sys",
- "ndk-sys",
- "num_enum",
- "thiserror",
-]
-
-[[package]]
-name = "ndk"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d64d6af06fde0e527b1ba5c7b79a6cc89cfc46325b0b2887dffe8f70197e0c3c"
-dependencies = [
- "bitflags",
- "jni-sys",
- "ndk-sys",
- "num_enum",
- "thiserror",
-]
-
-[[package]]
-name = "ndk-glue"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c5caf0c24d51ac1c905c27d4eda4fa0635bbe0de596b8f79235e0b17a4d29385"
-dependencies = [
- "lazy_static",
- "libc",
- "log",
- "ndk 0.3.0",
- "ndk-macro",
- "ndk-sys",
-]
-
-[[package]]
-name = "ndk-glue"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d3e9e94628f24e7a3cb5b96a2dc5683acd9230bf11991c2a1677b87695138420"
-dependencies = [
- "lazy_static",
- "libc",
- "log",
- "ndk 0.4.0",
- "ndk-macro",
- "ndk-sys",
-]
-
-[[package]]
-name = "ndk-macro"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "05d1c6307dc424d0f65b9b06e94f88248e6305726b14729fd67a5e47b2dc481d"
-dependencies = [
- "darling",
- "proc-macro-crate 0.1.5",
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "ndk-sys"
-version = "0.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c44922cb3dbb1c70b5e5f443d63b64363a898564d739ba5198e3a9138442868d"
-
-[[package]]
-name = "nix"
-version = "0.20.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f5e06129fb611568ef4e868c14b326274959aa70ff7776e9d55323531c374945"
-dependencies = [
- "bitflags",
- "cc",
- "cfg-if",
- "libc",
- "memoffset",
-]
-
-[[package]]
name = "nom"
version = "5.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -767,17 +320,6 @@ dependencies = [
]
[[package]]
-name = "num-derive"
-version = "0.3.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
name = "num-traits"
version = "0.2.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -787,51 +329,6 @@ dependencies = [
]
[[package]]
-name = "num_enum"
-version = "0.5.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3f9bd055fb730c4f8f4f57d45d35cd6b3f0980535b056dc7ff119cee6a66ed6f"
-dependencies = [
- "derivative",
- "num_enum_derive",
-]
-
-[[package]]
-name = "num_enum_derive"
-version = "0.5.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "486ea01961c4a818096de679a8b740b26d9033146ac5291b1c98557658f8cdd9"
-dependencies = [
- "proc-macro-crate 1.1.0",
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "oboe"
-version = "0.4.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e15e22bc67e047fe342a32ecba55f555e3be6166b04dd157cd0f803dfa9f48e1"
-dependencies = [
- "jni",
- "ndk 0.4.0",
- "ndk-glue 0.4.0",
- "num-derive",
- "num-traits",
- "oboe-sys",
-]
-
-[[package]]
-name = "oboe-sys"
-version = "0.4.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "338142ae5ab0aaedc8275aa8f67f460e43ae0fca76a695a742d56da0a269eadc"
-dependencies = [
- "cc",
-]
-
-[[package]]
name = "once_cell"
version = "1.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -869,31 +366,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099"
[[package]]
-name = "pkg-config"
-version = "0.3.20"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7c9b1041b4387893b91ee6746cddfc28516aff326a3519fb2adf820932c5e6cb"
-
-[[package]]
-name = "proc-macro-crate"
-version = "0.1.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785"
-dependencies = [
- "toml",
-]
-
-[[package]]
-name = "proc-macro-crate"
-version = "1.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1ebace6889caf889b4d3f76becee12e90353f2b8c7d875534a71e5742f8f6f83"
-dependencies = [
- "thiserror",
- "toml",
-]
-
-[[package]]
name = "proc-macro2"
version = "1.0.30"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -957,27 +429,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e"
[[package]]
-name = "same-file"
-version = "1.0.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
-dependencies = [
- "winapi-util",
-]
-
-[[package]]
name = "scopeguard"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
[[package]]
-name = "serde"
-version = "1.0.130"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f12d06de37cf59146fbdecab66aa99f9fe4f78722e3607577a5375d66bd0c913"
-
-[[package]]
name = "shlex"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -990,18 +447,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1ecab6c735a6bb4139c0caafd0cc3635748bbb3acf4550e8138122099251f309"
[[package]]
-name = "stdweb"
-version = "0.1.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ef5430c8e36b713e13b48a9f709cc21e046723fe44ce34587b73a830203b533e"
-
-[[package]]
-name = "strsim"
-version = "0.9.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6446ced80d6c486436db5c078dde11a9f73d42b57fb273121e160b84f63d894c"
-
-[[package]]
name = "syn"
version = "1.0.80"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1013,35 +458,6 @@ dependencies = [
]
[[package]]
-name = "thiserror"
-version = "1.0.30"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "854babe52e4df1653706b98fcfc05843010039b406875930a70e4d9644e5c417"
-dependencies = [
- "thiserror-impl",
-]
-
-[[package]]
-name = "thiserror-impl"
-version = "1.0.30"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "aa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714b"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "toml"
-version = "0.5.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa"
-dependencies = [
- "serde",
-]
-
-[[package]]
name = "unicode-segmentation"
version = "1.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1066,87 +482,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe"
[[package]]
-name = "walkdir"
-version = "2.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56"
-dependencies = [
- "same-file",
- "winapi",
- "winapi-util",
-]
-
-[[package]]
name = "wasi"
version = "0.10.2+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6"
[[package]]
-name = "wasm-bindgen"
-version = "0.2.78"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "632f73e236b219150ea279196e54e610f5dbafa5d61786303d4da54f84e47fce"
-dependencies = [
- "cfg-if",
- "wasm-bindgen-macro",
-]
-
-[[package]]
-name = "wasm-bindgen-backend"
-version = "0.2.78"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a317bf8f9fba2476b4b2c85ef4c4af8ff39c3c7f0cdfeed4f82c34a880aa837b"
-dependencies = [
- "bumpalo",
- "lazy_static",
- "log",
- "proc-macro2",
- "quote",
- "syn",
- "wasm-bindgen-shared",
-]
-
-[[package]]
-name = "wasm-bindgen-macro"
-version = "0.2.78"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d56146e7c495528bf6587663bea13a8eb588d39b36b679d83972e1a2dbbdacf9"
-dependencies = [
- "quote",
- "wasm-bindgen-macro-support",
-]
-
-[[package]]
-name = "wasm-bindgen-macro-support"
-version = "0.2.78"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7803e0eea25835f8abdc585cd3021b3deb11543c6fe226dcd30b228857c5c5ab"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
- "wasm-bindgen-backend",
- "wasm-bindgen-shared",
-]
-
-[[package]]
-name = "wasm-bindgen-shared"
-version = "0.2.78"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0237232789cf037d5480773fe568aac745bfe2afbc11a863e97901780a6b47cc"
-
-[[package]]
-name = "web-sys"
-version = "0.3.55"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "38eb105f1c59d9eaa6b5cdc92b859d85b926e82cb2e0945cd0c9259faa6fe9fb"
-dependencies = [
- "js-sys",
- "wasm-bindgen",
-]
-
-[[package]]
name = "winapi"
version = "0.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1163,15 +504,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
[[package]]
-name = "winapi-util"
-version = "0.1.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
-dependencies = [
- "winapi",
-]
-
-[[package]]
name = "winapi-x86_64-pc-windows-gnu"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
diff --git a/klangfarbrs/Cargo.toml b/klangfarbrs/Cargo.toml
index 34100c2..c896efa 100644
--- a/klangfarbrs/Cargo.toml
+++ b/klangfarbrs/Cargo.toml
@@ -11,8 +11,3 @@ name = "klangfarbrs"
[dependencies]
gdnative = "0.9"
-anyhow = "1.0.44"
-dasp = "0.11.0"
-dasp_signal = "0.11.0"
-dasp_envelope = "0.11.0"
-cpal = "0.13.4"
diff --git a/klangfarbrs/src/ignore b/klangfarbrs/src/ignore
new file mode 100644
index 0000000..6c52a4b
--- /dev/null
+++ b/klangfarbrs/src/ignore
@@ -0,0 +1,147 @@
+
+pub mod test {
+ use cpal;
+ use cpal::traits::{DeviceTrait, HostTrait, StreamTrait};
+ use dasp::{Sample};
+ use dasp_signal::{self as signal, Signal};
+ use std::sync::mpsc;
+
+ pub fn test() -> Result<(), anyhow::Error> {
+ let host = cpal::default_host();
+ let device = host
+ .default_output_device()
+ .expect("failed to find a default output device");
+ let config = device.default_output_config()?;
+
+ match config.sample_format() {
+ cpal::SampleFormat::F32 => run::<f32>(&device, &config.into())?,
+ cpal::SampleFormat::I16 => run::<i16>(&device, &config.into())?,
+ cpal::SampleFormat::U16 => run::<u16>(&device, &config.into())?,
+ }
+
+ Ok(())
+ }
+
+ fn run<T>(device: &cpal::Device, config: &cpal::StreamConfig) -> Result<(), anyhow::Error>
+ where
+ T: cpal::Sample,
+ {
+ // Create a signal chain to play back 1 second of each oscillator at A4.
+ let base_freq = 440.0;
+ let multipliers = [0.8, 1.0, 1.2, 1.7, 2.9, 4.5, 8.8, 1.9, 3.6];
+ let freqs = multipliers.map(|m| signal::rate(config.sample_rate.0 as f64).const_hz(base_freq * m));
+ let _sines = freqs.map(|f| f.clone().sine());
+
+ // Shitty naive implementation until Rust clicks.
+ let hz_0 = signal::rate(config.sample_rate.0 as f64).const_hz(base_freq * 0.8);
+ let hz_1 = signal::rate(config.sample_rate.0 as f64).const_hz(base_freq * 1.0);
+ let hz_2 = signal::rate(config.sample_rate.0 as f64).const_hz(base_freq * 1.2);
+ let hz_3 = signal::rate(config.sample_rate.0 as f64).const_hz(base_freq * 1.7);
+ let hz_4 = signal::rate(config.sample_rate.0 as f64).const_hz(base_freq * 2.9);
+ let hz_5 = signal::rate(config.sample_rate.0 as f64).const_hz(base_freq * 4.5);
+ let hz_6 = signal::rate(config.sample_rate.0 as f64).const_hz(base_freq * 8.8);
+ let hz_7 = signal::rate(config.sample_rate.0 as f64).const_hz(base_freq * 1.9);
+ let hz_8 = signal::rate(config.sample_rate.0 as f64).const_hz(base_freq * 3.6);
+
+ let sine_0 = hz_0.clone().sine().scale_amp(0.03);
+ let sine_1 = hz_1.clone().sine();
+ let sine_2 = hz_2.clone().sine().scale_amp(0.8);
+ let sine_3 = hz_3.clone().sine().scale_amp(0.004);
+ let sine_4 = hz_4.clone().sine().scale_amp(0.03);
+ let sine_5 = hz_5.clone().sine().scale_amp(0.02);
+ let sine_6 = hz_6.clone().sine().scale_amp(0.001);
+ let sine_7 = hz_7.clone().sine().scale_amp(0.006);
+ let sine_8 = hz_8.clone().sine().scale_amp(0.05);
+
+
+ // let hz = signal::rate(config.sample_rate.0 as f64).const_hz(440.0);
+ let one_sec = config.sample_rate.0 as usize;
+
+ // let mut sin_a = hz
+ // .clone()
+ // .sine();
+
+ // let mut sin_b = hz_b
+ // .clone()
+ // .sine();
+
+ let mut synth = sine_0
+ .add_amp(sine_1)
+ .add_amp(sine_2)
+ .add_amp(sine_3)
+ .add_amp(sine_4)
+ .add_amp(sine_5)
+ .add_amp(sine_6)
+ .add_amp(sine_7)
+ .add_amp(sine_8)
+ .take(one_sec)
+ .map(|s| s.to_sample::<f32>() * 0.2);
+
+ // let mut synth = sines[0]
+ // .add_amp(sines[1])
+ // .add_amp(sines[2])
+ // .add_amp(sines[3])
+ // .add_amp(sines[4])
+ // .add_amp(sines[5])
+ // .add_amp(sines[6])
+ // .add_amp(sines[7])
+ // .add_amp(sines[8])
+ // .take(one_sec)
+ // .map(|s| s.to_sample::<f32>() * 0.2);
+ // let mut synth = sin_a.add_amp(sin_b).take(one_sec).map(|s| s.to_sample::<f32>() * 0.2);
+ // let mut synth = hz
+ // .clone()
+ // .sine()
+ // .take(one_sec)
+ // .chain(hz.clone().saw().take(one_sec))
+ // .chain(hz.clone().square().take(one_sec))
+ // .chain(hz.clone().noise_simplex().take(one_sec))
+ // .chain(signal::noise(0).take(one_sec))
+ // .map(|s| s.to_sample::<f32>() * 0.2);
+
+ // A channel for indicating when playback has completed.
+ let (complete_tx, complete_rx) = mpsc::sync_channel(1);
+
+ // Create and run the stream.
+ let err_fn = |err| eprintln!("an error occurred on stream: {}", err);
+ let channels = config.channels as usize;
+ let stream = device.build_output_stream(
+ config,
+ move |data: &mut [T], _: &cpal::OutputCallbackInfo| {
+ write_data(data, channels, &complete_tx, &mut synth)
+ },
+ err_fn,
+ )?;
+ stream.play()?;
+
+ // Wait for playback to complete.
+ complete_rx.recv().unwrap();
+ stream.pause()?;
+
+ Ok(())
+ }
+
+ fn write_data<T>(
+ output: &mut [T],
+ channels: usize,
+ complete_tx: &mpsc::SyncSender<()>,
+ signal: &mut dyn Iterator<Item = f32>,
+ ) where
+ T: cpal::Sample,
+ {
+ for frame in output.chunks_mut(channels) {
+ let sample = match signal.next() {
+ None => {
+ complete_tx.try_send(()).ok();
+ 0.0
+ }
+ Some(sample) => sample,
+ };
+ let value: T = cpal::Sample::from::<f32>(&sample);
+ for sample in frame.iter_mut() {
+ *sample = value;
+ }
+ }
+ }
+
+}
diff --git a/klangfarbrs/src/lib.rs b/klangfarbrs/src/lib.rs
index 62ed207..1a43aba 100644
--- a/klangfarbrs/src/lib.rs
+++ b/klangfarbrs/src/lib.rs
@@ -3,185 +3,43 @@ use gdnative::prelude::*;
#[derive(NativeClass)]
#[inherit(Node)]
-pub struct Synth {
- frequency: f32
+pub struct MonoBuffer {
+ frames: [f32; 512]
}
-#[methods]
-impl Synth {
- fn new(_owner: &Node) -> Self {
- Synth { frequency: 220.0 }
- }
+pub fn fill_frames() -> [f32; 512] {
+ let tau = std::f32::consts::FRAC_PI_2;
+ let frequency = 440.0;
+ let sample_rate = 8000.0;
+ let mut frames = [0.0; 512];
- #[export]
- fn set_freq(
- &mut self,
- _owner: &Node,
- freq: f32
- ) {
- self.frequency = freq;
+ for i in 0..512 {
+ frames[i] = f32::sin(tau * frequency * i as f32/sample_rate);
}
- #[export]
- fn _ready(&self, _owner: &Node) {
- match test::test() {
- Ok(()) => godot_print!("POOOP"),
- Err(error) => godot_print!("SHITE! {:?}", error),
- };
- }
+ return frames
}
-pub mod test {
- use cpal;
- use cpal::traits::{DeviceTrait, HostTrait, StreamTrait};
- use dasp::{Sample};
- use dasp_signal::{self as signal, Signal};
- use std::sync::mpsc;
-
- pub fn test() -> Result<(), anyhow::Error> {
- let host = cpal::default_host();
- let device = host
- .default_output_device()
- .expect("failed to find a default output device");
- let config = device.default_output_config()?;
-
- match config.sample_format() {
- cpal::SampleFormat::F32 => run::<f32>(&device, &config.into())?,
- cpal::SampleFormat::I16 => run::<i16>(&device, &config.into())?,
- cpal::SampleFormat::U16 => run::<u16>(&device, &config.into())?,
- }
-
- Ok(())
+#[methods]
+impl MonoBuffer {
+ fn new(_owner: &Node) -> Self {
+ MonoBuffer { frames: fill_frames() }
}
- fn run<T>(device: &cpal::Device, config: &cpal::StreamConfig) -> Result<(), anyhow::Error>
- where
- T: cpal::Sample,
- {
- // Create a signal chain to play back 1 second of each oscillator at A4.
- let base_freq = 440.0;
- let multipliers = [0.8, 1.0, 1.2, 1.7, 2.9, 4.5, 8.8, 1.9, 3.6];
- let freqs = multipliers.map(|m| signal::rate(config.sample_rate.0 as f64).const_hz(base_freq * m));
- let _sines = freqs.map(|f| f.clone().sine());
-
- // Shitty naive implementation until Rust clicks.
- let hz_0 = signal::rate(config.sample_rate.0 as f64).const_hz(base_freq * 0.8);
- let hz_1 = signal::rate(config.sample_rate.0 as f64).const_hz(base_freq * 1.0);
- let hz_2 = signal::rate(config.sample_rate.0 as f64).const_hz(base_freq * 1.2);
- let hz_3 = signal::rate(config.sample_rate.0 as f64).const_hz(base_freq * 1.7);
- let hz_4 = signal::rate(config.sample_rate.0 as f64).const_hz(base_freq * 2.9);
- let hz_5 = signal::rate(config.sample_rate.0 as f64).const_hz(base_freq * 4.5);
- let hz_6 = signal::rate(config.sample_rate.0 as f64).const_hz(base_freq * 8.8);
- let hz_7 = signal::rate(config.sample_rate.0 as f64).const_hz(base_freq * 1.9);
- let hz_8 = signal::rate(config.sample_rate.0 as f64).const_hz(base_freq * 3.6);
-
- let sine_0 = hz_0.clone().sine().scale_amp(0.03);
- let sine_1 = hz_1.clone().sine();
- let sine_2 = hz_2.clone().sine().scale_amp(0.8);
- let sine_3 = hz_3.clone().sine().scale_amp(0.004);
- let sine_4 = hz_4.clone().sine().scale_amp(0.03);
- let sine_5 = hz_5.clone().sine().scale_amp(0.02);
- let sine_6 = hz_6.clone().sine().scale_amp(0.001);
- let sine_7 = hz_7.clone().sine().scale_amp(0.006);
- let sine_8 = hz_8.clone().sine().scale_amp(0.05);
-
-
- // let hz = signal::rate(config.sample_rate.0 as f64).const_hz(440.0);
- let one_sec = config.sample_rate.0 as usize;
-
- // let mut sin_a = hz
- // .clone()
- // .sine();
-
- // let mut sin_b = hz_b
- // .clone()
- // .sine();
-
- let mut synth = sine_0
- .add_amp(sine_1)
- .add_amp(sine_2)
- .add_amp(sine_3)
- .add_amp(sine_4)
- .add_amp(sine_5)
- .add_amp(sine_6)
- .add_amp(sine_7)
- .add_amp(sine_8)
- .take(one_sec)
- .map(|s| s.to_sample::<f32>() * 0.2);
-
- // let mut synth = sines[0]
- // .add_amp(sines[1])
- // .add_amp(sines[2])
- // .add_amp(sines[3])
- // .add_amp(sines[4])
- // .add_amp(sines[5])
- // .add_amp(sines[6])
- // .add_amp(sines[7])
- // .add_amp(sines[8])
- // .take(one_sec)
- // .map(|s| s.to_sample::<f32>() * 0.2);
- // let mut synth = sin_a.add_amp(sin_b).take(one_sec).map(|s| s.to_sample::<f32>() * 0.2);
- // let mut synth = hz
- // .clone()
- // .sine()
- // .take(one_sec)
- // .chain(hz.clone().saw().take(one_sec))
- // .chain(hz.clone().square().take(one_sec))
- // .chain(hz.clone().noise_simplex().take(one_sec))
- // .chain(signal::noise(0).take(one_sec))
- // .map(|s| s.to_sample::<f32>() * 0.2);
-
- // A channel for indicating when playback has completed.
- let (complete_tx, complete_rx) = mpsc::sync_channel(1);
-
- // Create and run the stream.
- let err_fn = |err| eprintln!("an error occurred on stream: {}", err);
- let channels = config.channels as usize;
- let stream = device.build_output_stream(
- config,
- move |data: &mut [T], _: &cpal::OutputCallbackInfo| {
- write_data(data, channels, &complete_tx, &mut synth)
- },
- err_fn,
- )?;
- stream.play()?;
-
- // Wait for playback to complete.
- complete_rx.recv().unwrap();
- stream.pause()?;
-
- Ok(())
+ fn frames(&self) -> [f32; 512] {
+ return self.frames;
}
- fn write_data<T>(
- output: &mut [T],
- channels: usize,
- complete_tx: &mpsc::SyncSender<()>,
- signal: &mut dyn Iterator<Item = f32>,
- ) where
- T: cpal::Sample,
- {
- for frame in output.chunks_mut(channels) {
- let sample = match signal.next() {
- None => {
- complete_tx.try_send(()).ok();
- 0.0
- }
- Some(sample) => sample,
- };
- let value: T = cpal::Sample::from::<f32>(&sample);
- for sample in frame.iter_mut() {
- *sample = value;
- }
- }
+ #[export]
+ fn _ready(&self, _owner: &Node) {
+ godot_print!("Whatever, connected.")
}
-
}
// Function that registers all exposed classes to Godot
fn init(handle: InitHandle) {
- // Register the `Synth` type we declared.
- handle.add_class::<Synth>();
+ // Register the `MonoBuffer` type we declared.
+ handle.add_class::<MonoBuffer>();
}
// Macro that creates the entry-points of the dynamic library.
diff --git a/klangfarbrs/src/main.rs b/klangfarbrs/src/main.rs
index fa1cdfb..acb3403 100644
--- a/klangfarbrs/src/main.rs
+++ b/klangfarbrs/src/main.rs
@@ -1,8 +1,3 @@
-use klangfarbrs::test::test;
-
fn main() {
- match test() {
- Ok(()) => (),
- Err(error) => panic!("oopsie: {:?}", error),
- };
-}
+
+}