Giter VIP home page Giter VIP logo

cane's People

Contributors

fennecdjay avatar jackojc avatar serbuvlad avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

cane's Issues

Simple fix for raspberry pi compilation error

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;

JACK Transport/MIDI Sequencer Messages

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:

  • We could generate polyrhythms and polymeters by syncing two Cane instances that are running at different tempos or lengths
  • We can create a live-coding environment for Cane by swapping between two instances and avoiding any audio gaps between sequences

Discord invite link broken

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.

Timeline Visualisation

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

MIDI CC modulation would be very useful to add some dynamics to sequences.

Melodies & Chords

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.

Render to MIDI file

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.

Live-coding

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?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.