Discussion
Loading...

Post

Log in
  • About
  • Code of conduct
  • Privacy
  • Users
  • Instances
  • About Bonfire
samaaron
samaaron
@samaaron@mastodon.social  ·  activity timestamp 2 hours ago

My experimental prototype of a programming language implemented like an audio synth is working really well.

It has a max jitter of 3ms for its timers (even in a web browser!) and is fully deterministic.

Global state is a totally-ordered immutable time-series in-memory db.

The language doesn't have threads, it has mini VMs with their own byte code that run in a hierarchical vm-tree for deterministic order of execution.

Computation is driven by the pulse of the audio hardware at audio rate.

  • Copy link
  • Flag this post
  • Block
Dan Stowell
Dan Stowell
@danstowell@mastodon.social replied  ·  activity timestamp 1 hour ago

@samaaron Sounds interesting! The global state must have a finite time horizon, I guess? And a lot like a stack, or...?

  • Copy link
  • Flag this comment
  • Block
samaaron
samaaron
@samaaron@mastodon.social replied  ·  activity timestamp 49 minutes ago

@danstowell yes indeed - it's more of a window.

It's a weird hybrid between a tuplespace, a time-series database and a deterministic yet multi-threaded programming model.

In my current prototype this window is a pre-allocated chunk of memory - so definitely finite. There's no easy way around this as AudioWorklets don't let you call malloc anyway.

  • Copy link
  • Flag this comment
  • Block

bonfire.cafe

A space for Bonfire maintainers and contributors to communicate

bonfire.cafe: About · Code of conduct · Privacy · Users · Instances
Bonfire social · 1.0.2-alpha.22 no JS en
Automatic federation enabled
Log in
  • Explore
  • About
  • Members
  • Code of Conduct