all repos — min @ c2cebde7e9ac43746401cd85eff82acf86296401

A small but practical concatenative programming language.

Added audio support (untested).
h3rald h3rald@h3rald.com
Sun, 10 Nov 2024 12:10:56 +0100
commit

c2cebde7e9ac43746401cd85eff82acf86296401

parent

c95b67036916e2fe1fc3932a1fad9fc11f0af637

2 files changed, 31 insertions(+), 2 deletions(-)

jump to
M .gitignore.gitignore

@@ -20,5 +20,5 @@ .env.yml

response.json mintool mintool.nim -test.min +test*.min .DS_Store
M minpkg/lib/min_gui.nimminpkg/lib/min_gui.nim

@@ -1,6 +1,6 @@

import std/sequtils -import pkg/fenstim +import pkg/fenstim, fenstim_audio import ../core/parser,

@@ -9,14 +9,23 @@ ../core/value,

../core/utils var WINDOWS*: seq[Fenster] = @[] +var AUDIO*: seq[FensterAudio] = @[] proc window(i: In, v: MinValue): var Fenster = return WINDOWS[i.dget(v, "ref").intVal] + +proc audio(i: In, v: MinValue): var FensterAudio = + return AUDIO[i.dget(v, "ref").intVal] proc close(i: In, v: MinValue) = i.window(v).close() let r = i.dget(v, "ref").intVal WINDOWS.delete(r) + +proc stop(i: In, v: MinValue) = + i.audio(v).close() + let r = i.dget(v, "ref").intVal + AUDIO.delete(r) proc gui_module*(i: In) = let def = i.define()

@@ -111,5 +120,25 @@

def.symbol("clear") do (i: In): var vals = i.expect("dict:window") i.window(vals[0]).clear() + + def.symbol("audio") do (i: In): + var audio = FensterAudio.init() + var aud = newDict(i.scope) + aud = i.dset(aud, "ref", AUDIO.len.newVal) + aud.objType = "audio" + AUDIO.add audio + i.push aud + + def.symbol("audio?") do (i: In): + var vals = i.expect("dict:audio") + i.push (i.audio(vals[0]).available).newVal + + def.symbol("play") do (i: In): + var vals = i.expect("quot", "dict:audio") + i.audio(vals[1]).write(vals[0].qVal.mapIt(it.floatVal.float32)) + + def.symbol("stop") do (i: In): + var vals = i.expect("dict:audio") + i.stop(vals[0]) def.finalize("gui")