iainctduncan / scheme-for-pd

Pure Data port of the Scheme For Max external, providing an embedded S7 Scheme/Lisp interpreter for scripting and live-coding Pure Data in Scheme Lisp.
BSD 3-Clause "New" or "Revised" License
66 stars 5 forks source link
algorithmic-composition lisp live-coding music-composition pure-data s7-scheme scheme-language

scheme-for-pd

Scheme for Pd (s4pd) is an open-source external for live-coding and scripting Pd with an embedded s7 Scheme Lisp interpreter. It is a port of most of Scheme for Max by the same author, and enables most Scheme code to be run on either. As of 0.1 beta, there are binaries up for Mac and Windows. It will be published to Deken once I know Windows users are having success with the binaries.

Features in 0.1

Scheme-for-Pd uses s7 Scheme, an embeddable Scheme implementation by Bill Schottstaedt at CCRMA. s7 is a minimal Scheme, with many nice features for algorithmic composition and embedding, and is the Scheme engine used in the Common Music algorithmic composition toolkit and the Snd audio editor. It has keywords, Common Lisp style macros, first-class environments, thread safety, applicative syntax, and a very straight forward FFI (foreign function interface). Linguistically, it is mostly R4RS with some later extensions, along with some features from Common Lisp, and is similar in many ways to Guile, Clojure, and Janet.

Installation

Building from Source

Documentation

Please let me know in GitHub issues or on the GitHub discussion page if you find bugs, the help is unclear, or you have suggestions for building and packaging properly.

Please note that I cannot take undiscussed pull requests at this time as this is a thesis project, but forking is most welcome if it's useful to you. I am happy to discuss improvements and take contributions if they make sense.

Credits and License

Scheme for Pd was created by Iain C T Duncan, 2021

s7 Scheme was created by Bill Schottstaedt, based originally on Tiny Scheme.

Scheme for Pd and s7 are open source under the BSD-2 license. You may use these in whatever kind of project you wish!