jimd1989 / delay Goto Github PK
View Code? Open in Web Editor NEWprogrammable stereo signal delay
programmable stereo signal delay
Rather than parsing a normal func like <
and an "extended" func like @<
, and presumably extended extended funcs like @@<
, each with their own enum
cases, can probably go the J route and combine them all into one alphabet like <
, <.
. .
isn't used in functions at the moment in order to make parsing decimal numbers dead easy, but the logic of adding it would not be much tougher than the existing @
notation. The only ambiguity would be something like <.5
, which should favor the function. There are already certain instances that necessitate whitespace anyway.
Can be combined into one alphabet with something like
VM_LESS_THAN = '<',
VM_FLOOR = '<' | ('.' << 8)
etc.
This would remove the need for redundant f
and g
fields in the VmCell
union, which currently segregate normal functions and extended functions respectively for pattern matching warning purposes.
Rather than having hardcoded parameters, the program should expose variables like volume, feedback, wetness, delay time, etc to the user and allow him to use them to his own ends via a stack-based language that runs in a VM. Much of this work has already been completed in the vm directory, but it hasn't been wired to audio yet.
Because the VM is stack based, can make a simple stored function syntax. Because it is compiled, this doesn't require a particularly performant data structure. It will only be relevant the first time a user-defined program is entered, not during audio rendering.
The [
and ]
chars are not used at the moment, so they might be good candidates.
Proposed syntax:[name proc]
For example: [avg +2/]
.
This would be easy to compile.
[
is encountered, create a pointer to the next char: the start of name
.proc
.]
.Proposed syntax: [name]
For example: 2 4[avg]
[
is encountered, create a pointer to the next char: the start of name
.]
, and create a null byte at either address.strcmp
over the keys.avg
was +[divTwo]
.Program currently reads from hardware determined buffsize for audio input and calculates modulation in the same chunk before outputting. Can use an arbitrary virtual buffer size in between read/write to allow for tighter user input.
See my notes on conditions and loops. Some details may have to change.
Don't even know where to start on this one, but could be a possibility if the bytecode is particularly slow. x86 should be first target. Solutions that require additional dependencies will not be implemented.
OpenBSD's random functions are concerned with cryptographic bullshit that is not needed for audio noise. Look into cheapo RNGs and implement one.
The $
VM procedure should generate a sine value. Most likely from a lookup table, but Chebyshev + Horner might be easy for a stack lang. Need to determine the most convenient phase to operate over, however: [-1,1] vs [-ฯ,ฯ], or something else.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.