jackojc / cane Goto Github PK
View Code? Open in Web Editor NEWA small MIDI sequencer DSL designed around vectors and euclidean rhythms
Home Page: https://discord.gg/UVYAtpYYD2
License: GNU General Public License v3.0
A small MIDI sequencer DSL designed around vectors and euclidean rhythms
Home Page: https://discord.gg/UVYAtpYYD2
License: GNU General Public License v3.0
FYI, I just tried compiling cane
with both g++ (g++ (Raspbian 10.2.1-6+rpi1) 10.2.1 20210110) and clang++ (Raspbian clang version 11.0.1-2+rpi1) on a raspbian os.
It kept throwing an error regarding implicit conversion from the large ints in the hash_bytes
function, and I had to cast to size_t
as below. After this change, it compiled fine.
$ git diff
diff --git a/src/util.hpp b/src/util.hpp
index dff526b..9eda4ab 100644
--- a/src/util.hpp
+++ b/src/util.hpp
@@ -47,8 +47,8 @@ namespace cane {
}
constexpr auto hash_bytes(const char* begin, const char* const end) {
- size_t offset_basis = 14'695'981'039'346'656'037u;
- size_t prime = 1'099'511'628'211u;
+ size_t offset_basis = (size_t)14'695'981'039'346'656'037u;
+ size_t prime = (size_t)1'099'511'628'211u;
size_t hash = offset_basis;
Cane should either listen to JACK transport messages or MIDI sequencer messages in order to sync itself with other Cane instances or software sequencers. This would give Cane a lot of potential for scripting, for example:
Documentation is practically non-existent for Cane at the moment. If the language is to take off in any capacity, there needs to be a gentle introduction for beginners and a more advanced reference for experienced users.
Some good examples of introductions to take inspiration from include:
The discord invite link is broken.
Also, as it so happens, after losing my phone, my Discord account (and any new ones I create) have been disabled! Is there any other way for me to contact you? Or the others in Turing Tarpit.
I think the ability to visualise the timeline of a Cane project could be really useful and provide deeper insight into what's happening. Unfortunately I don't know of a simple way to do this that doesn't pulling in some kind of graphics library.
It might just be enough to provide a "debug" mode that prints the timeline of events to stdout which the user can then visualise manually.
I would be interested to hear if there are any tools that could visualise a stream of text in a visualise way to reduce the burden of implementing this inside of Cane.
MIDI CC modulation would be very useful to add some dynamics to sequences.
As it currently stands, Cane works well for drum & bass patterns without any overlying melody. It would be useful to implement a simple way to create melodies and chords for more complex sequences.
It would be nice, as a long term goal, to implement a way to render to a MIDI file instead of generating only real-time MIDI.
I think Cane would really shine as an interactive language for live-coding music rather than purely as an AOT music language.
I think the best way to implement this would be to use the inotify subsystem from Linux to watch for file changes and reload the currently playing sequence when it finishes.
If no changes are made by the time the sequence terminates, it should loop until changes are made.
I'm not sure of a good solution for Windows here, maybe it has something similar to inotify we can use?
I like the idea of this being something that just works with your main editor with Cane running in the background. I'm not confident of my skills to write a decent REPL so why not let the user decide for themselves?
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.