ribbit
scheme-for-max
ribbit | scheme-for-max | |
---|---|---|
16 | 34 | |
429 | 181 | |
0.9% | - | |
5.0 | 2.8 | |
5 days ago | 29 days ago | |
Scheme | C | |
BSD 3-clause "New" or "Revised" License | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
ribbit
- Rabbit Scheme Compiler
-
Microcontroller-based Lisp machine (minimum language needed)?
Marc Feeley's lab develops Ribbit Scheme, which is a tiny Scheme implementation. It is an AOT compile which produces a string of bytecode that is interpreted by a VM, of which there are various implementations. The one in C could be compiled to your target microcontroller and thus give you a Scheme REPL.
-
Use case for Ribbit Scheme
I have a question regarding Ribbit Scheme. (https://github.com/udem-dlteam/ribbit).
-
Advice for a Haskeller who wants to learn Scheme?
You might want to look at this 400 LOC implementation of Scheme in Haskell: https://github.com/udem-dlteam/ribbit/blob/main/src/host/hs/rvm.hs
-
Some benchmarking of various Ribbit hosts
Ribbit is a very interesting minimal Scheme driven by Marc Feeley. I spent a bit of time to benchmark some of the target runtimes and the results might be of interest to some.
- Ribbit Scheme bootstraps with Posix shell while supporting TCO, call/cc and GC
-
Most readable Scheme implementation
A small and portable Scheme implementation that supports closures, tail calls, first-class continuations, a REPL and AOT and incremental compilers. All that for a run time footprint around 4 KB! https://github.com/udem-dlteam/ribbit
-
Analysis of the overhead of a minimal Zig program
> No dynamic memory allocation = no garbage collector, no non-deterministic allocation/deallocation, no write barriers, no out-of-memory possibilities, no fragmentation. For a surprisingly large class of programs, this is a great situation!
I know you know this already, but your statement is a little too broad. Those problems all still exist, but are greatly reduced. Data structures still need to be compacted, caches evicted, scratch space cleared, etc. It is just that one class of intractable issues gets removed when dynamic memory allocation goes away.
On a side note, have you seen this? https://github.com/udem-dlteam/ribbit
-
State of Scheme to Javascript (in 2021) - A shallow overview of a couple of the node/browser compatible scheme implementations.
You should also mention the JS version of Ribbit Scheme which supports tail-calls, continuations, a REPL, an AOT and incremental compilers, and a 4K run time footprint. There are also C, Python and Scheme versions of the Ribbit VM (more to come!). Demo: https://udem-dlteam.github.io/ribbit/repl-max-tc.html Repo: https://github.com/udem-dlteam/ribbit Paper: http://www.iro.umontreal.ca/\~feeley/papers/YvonFeeleyVMIL21.pdf Clearly Ribbit has fewer features than Gambit to achieve a 4K footprint. Gambit (700K footprint) offers a better development environment, in particular precise error messages and live debugging with a REPL in the browser. Gambit also has: - R7RS conformance including R7RS modules - a JavaScript FFI that supports asynchronous calls between JS and Scheme - a thread system build on top of first-class continuations - serializable closures and continuations allowing task migration - access to files on the server using Scheme file I/O - Scheme to JS compilation for fast execution
- A small Scheme implementation with AOT and incremental compilers that fits in 4K
scheme-for-max
- Music for Programming
- Learn How to Build Your Own Max for Live Devices
- MAX lessons
-
Ask HN: Most interesting tech you built for just yourself?
Mine is Scheme for Max, now on it's fourth open source release, but really written so I could make computer music how I want to. It's an extension to the popular Max/MSP visual music programming environment that embeds an s7 Scheme interpreter and provides a substantial API/FFI to Max. It allows you to script Max (and thus also Ableton Live) with Scheme, enabling interactive coding, algorithmic music, live coding, macros, and just much more pleasant scripting than in JavaScript. It locks in with the scheduler so you can even use Scheme powered sequencers within Ableton Live alongside regular Live tracks, and you can build sophisticated Live control surfaces using the Live API.
Github page here: https://github.com/iainctduncan/scheme-for-max
-
Need explanation for MIDI
The project page is here, with links to lots of documentation I've done: https://github.com/iainctduncan/scheme-for-max
- Controlling parameters with audio?
-
Processing audio buffers with Scheme for Max (cookbook and tutorial)
To download Scheme for Max and for tutorials, documentation, and the cookbook, visit the GitHub page: https://github.com/iainctduncan/scheme-for-max
-
The Janet Language
If you like things like Janet, you might also like s7 Scheme. It is also a minimal Scheme built entirely in C and dead easy to embed. I used it to make Scheme for Max and Scheme for Pd, extensions to the Max and Pd computer music platform to allow scripting them in Scheme. (https://github.com/iainctduncan/scheme-for-max) Janet was one of the options I looked pretty closely at before choosing s7.
The author (Bill Schottstaedt, Stanford CCRMA) is not too interested in making pretty web pages, ha, but the language is great!
-
Which coding language to start with?
Project page: https://github.com/iainctduncan/scheme-for-max
-
Ask HN: What have you created that deserves a second chance on HN?
I created Scheme for Max and Scheme for Pure Data. They are extensions to the Max/MSP, Ableton Live, and Pure Data computer music environments that embed an s7 Scheme interpreter in the host so that you can script, automate, and live code the hosts with s7, a Scheme from the CCRMA computer music center at Stanford and the same one used in the Snd editor and the Common Music 3 algorithmic composition environment. This allows you to do things like write algorithmic music tools, sequencers, and use the Ableton Live API in Scheme, including with Common Lisp style macros. It has an API for integrating with Max to share data structures, hook into the scheduler, run in the high priority thread, and so on. S4M allows you to do all the goodness of high level music programming in a Lisp, without losing the ability to use modern commercial tooling and instruments. It's my thesis project for a Masters in Music Technology with Andy Schloss and George Tzanetakis at the University of Victoria, and I plan to continue to a PhD working on it. I tried submitting twice, but it never made the page, which surprised me a bit given Lisp interest here.
The github page is here: https://github.com/iainctduncan/scheme-for-max
The youtube channel with various demos is here: https://www.youtube.com/c/musicwithlisp
What are some alternatives?
gambit - Gambit is an efficient implementation of the Scheme programming language.
janet - A dynamic language and bytecode vm
STklos - STklos Scheme
Rack - The virtual Eurorack studio
selda - A type-safe, high-level SQL library for Haskell
BespokeSynth - Software modular synth [Moved to: https://github.com/BespokeSynth/BespokeSynth]
hedgehog - Concise implementation of a lisp-like language for low-end and embedded devices
score - ossia score, an interactive sequencer for the intermedia arts
racket - The Racket repository
BespokeSynth - Software modular synth
hasql - The fastest PostgreSQL libpq-based driver for Haskell
pyo - Python DSP module