efairbanks / cybin Goto Github PK
View Code? Open in Web Editor NEWA programming/performance environment for seamless online and offline audiovisual rendering.
A programming/performance environment for seamless online and offline audiovisual rendering.
Add in support for parsing command line flags and loading configuration details via those flags.
Command line flags will be used for things such as:
some of the examples are screwy and the libs don't load or they don't run as expected in either atom or emacs
we need this to be consistent so we're not alienating new users
Build a musical patterning library that fuses techniques drawn from:
Should patterns/sequences be aware of time? I want time to be in cycles, but what does that mean for patterns/sequences? Should they be query-able? Should they be transformed into queryable event streams? What is the difference between what the event scheduler receives and operates on vs these?
Create LuaJIT bindings for (re)loading OpenGL vertex and fragment shaders and for supplying those shaders with uniforms.
It would also be a good idea to perhaps think about Lua code that can intelligently generate and organize GLSL code. This would allow for features like:
Cybin should be able to reload Lua scripts in real time periodically if asked to do so.
I haven't tried compiling Cybin in Windows. Theoretically, it should...
I really don't love compiling in Windows.
Cybin should have some kind of REPL with integration into a popular text editor (or two) like Atom/vim.
LDoc approach: https://github.com/stevedonovan/LDoc / http://stevedonovan.github.com/ldoc/
Doxygen approach: https://github.com/alecchen/doxygen-lua/blob/master/example/example.lua
Everything is currently inside examples
The way cybin-mode
defines keybindings makes it kind of difficult to customise since it uses this prefix thing:
Line 300 in 91a797b
But anyways, it would be good to have:
(define-key result-map (kbd "<C-return>") 'cybin-send-paragraph)
(define-key result-map (kdb "C-c C-q") . cybin-kill-process)
E.g.
os.execute('jack_connect cybin:audio-out_1 system:playback_1')
os.execute('jack_connect cybin:audio-out_2 system:playback_2')
dofile('/home/cybin/examples/cylibs/clodule.cybin')
dofile('/home/cybin/examples/cylibs/ugen.cybin')
Can't get dofile('euclidbreak.cybin')
to work...
Seems that the imports are different to the other files?
dofile('utils.cybin').load()
dofile('pattern.cybin').load()
dofile('melody.cybin')
dofile('ugen.cybin')
C=dofile('clodule.cybin')
mod=math.fmod
The others use require
. But even when I try to change above to require
I get a stack overflow
This would just be cool. Could just be a library. IDK.
This includes oscillators, filters, envelopes, granular synths, polyphony, etc...
This should be implemented with a sensible inheritance model and with factories where appropriate. For instance, you should be able to create a new subclass of type Voice by supplying it with a custom oscillator and envelope, and then create a custom subclass of Synth by supplying it with your custom Voice class.
Right now Cybin calls a Lua function called __process(sr)
that accepts the current sample rate and returns a float representing a single audio sample. Not only should this be modified to support multichannel audio, there should be a way to configure how audio is passed from Lua to the underlying audio system and what that system's responsibilities are.
For instance, perhaps we would rather work with an audio buffer of size N that provides frequency domain and time domain representations instead of a stream of samples.
Allow Cybin users to configure the Cybin environment through variables loaded in via a LUA script.
Examples:
the current examples are extremely daunting and not very helpful
this needs to be fixed pronto
It seems that sometimes MacOS will complain about invalid memory usage when soundio_default_output_device_index() is called during initialization. It's unclear what causes this, but it is not an issue in Linux.
Cybin should be able to import and export various kinds of multimedia content. We're gonna need an external library for that. Probably what ffmpeg uses.
This scheduling system should be loosely based on Tidal's because Tidal's scheduling system rules. It will also probably take some design cues from my earlier work with Overtone. This system needs to be simple enough that people want to use it but flexible enough to not be prescriptive. (manual temporal recursion is not intuitive)
Working with Cybin for the first time should be as simple as running a one-liner that defines a musical pattern, but users should also be empowered to design their own music system entirely from scratch. How do we achieve this without obfuscating the inner-workings of Cybin? Perhaps a super-powerful, modular, customizable synth like SuperDirt built into Cybin/Lua with its own scheduler that can receive musical data structures and automatically play them?
Yeah, that sounds about right.
Right now LuaJIT is getting excellent performance, but this can be further optimized. Profiling should be done to determine what kind of savings could be gained by modifying buffers in-place, handing off synthesis/DSP work to C++ when fine control from Lua is not required, etc...
Comparable implementations of BlackBox classes should be created in Lua and C++ and their performance should be compared.
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.