Code Monkey home page Code Monkey logo

bacalao's Introduction

Bacalao

Somewhat fishy live cod(e) extensions to SuperCollider.

Image of Atlantic cod (Bacalao in Spanish) (ref)

What is it?

Bacalao is a live coding "domain specific language". You can use Bacalao's shortened notation to quickly experiment with Node- and especially Pattern-proxies (which it uses under the covers).

Bacalao was inspired by TidalCycles, and adopts a similar syntax for certain things, such as its phrase definitions. Similarly to Tidal, Bacalao allows patterns/phrases (including timing) to be described in a compact notation. It likewise supports sub-phrases with repeats and holds (adjustments of note or sub-phrase relative duration). Unlike Tidal, it does not depend on Haskell or any other language. It is coded entirely in SuperCollider (sclang), building on top of Event patterns, NodeProxy and PatternProxy. It (optionally) uses the wonderful VSTPlugin extension to play VST instruments natively inside SuperCollider, allowing their output to be processed by SC server effects. It can also use the ChordSymbol Quark (if installed) to allow chord notation in note patterns.

Getting started

To install Bacalao as a Quark in SuperCollider (tested with versions 3.10.2 and later), run the following line:

Quarks.install("https://github.com/totalgee/bacalao");

The Bacalao class documention is not up to date. To get started, it's better to go through the Bacalao_examples file, reading the comments and executing the code line by line. Even there, however, not everything is documented yet.

There is also a cheatsheet (part 1, part 2).

There are a series of unit tests that should run successfully, so if you're brave you can also look in those files for ideas or inspiration.

Issues

Be warned that this is primarily Glen's live coding language and playground, so it will evolve and change according to his whims, but it may still be interesting or useful to others. It makes no promises to be backward (or forward, or sideways) compatible. It's a set of tools for making music on the fly, so -- swim free, live in the moment, and let old code... be old code.

Etymology

Bacalao (the Spanish word for cod), is simply the words "live code" written using one-third of the letters (or, even better: it's "live coding" compressed by nearly 75%)...and then translated into Spanish to make it sound exotic (and salty!). In the translation process, unfortunately, it loses nearly all of those letter savings. (This may or may not be a metaphor for the gains and losses you experience using the language itself...) Bacalao also uses two-thirds of the letters of Barcelona, which is where it was spawned and hatched.

Bacalao (or Bakalao, Vacalao, or one of numerous other spellings) also refers to a repetitive, aggressive electronic music style that emerged "Made in Spain" in the mid-1980s, but trust me, that is purely coincidental... It is also coincidental (or is it?) that the Atlantic cod population was nearly wiped out around the same time Bakalao music was reaching its prime. Fortunately, the fish (at least) seem to be making a comeback...let's leave it at that.

bacalao's People

Contributors

totalgee 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

Watchers

 avatar  avatar  avatar  avatar

bacalao's Issues

ERROR: Message 'addSynthDefFunc' not understood.

Hey! I was trying to use Bacalao on Ubuntu Lunar Lobster but I can't do b = Bacalao().boot;

The error i get is pasted below:

Execution warning: Class 'Safety' not found
ERROR: Message 'addSynthDefFunc' not understood.
RECEIVER:
nil
ARGS:
Symbol 'safeLimitNotify'
Instance of Function { (0x55cf088c6688, gc=CC, fmt=00, flg=00, set=02)
instance variables [2]
def : instance of FunctionDef - closed
context : Frame (0x55cf0646e498) of Interpreter:functionCompileContext
}
CALL STACK:
DoesNotUnderstandError:reportError
arg this =
Nil:handleError
arg this = nil
arg error =
Thread:handleError
arg this =
arg error =
Object:throw
arg this =
Object:doesNotUnderstand
arg this = nil
arg selector = 'addSynthDefFunc'
arg args = [*2]
Meta_Bacalao:prSetupSynthDefs
arg this =
var playFunc =
Meta_Bacalao:new
arg this =
arg shareClock = nil
arg server = nil
arg verbose = nil
arg quant = nil
arg numChannels = 2
var clock =
< closed FunctionDef > (no arguments or variables)
Interpreter:interpretPrintCmdLine
arg this =
var res = nil
var func =
var code = "b = Bacalao().boot;"
var doc = nil
var ideClass =
Process:interpretPrintCmdLine
arg this =
^^ ERROR: Message 'addSynthDefFunc' not understood.
RECEIVER: nil

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.