Giter Club home page Giter Club logo

thundersnow's Introduction

thundersnow

Digital audio workstation and live coding laboratory in Common Lisp using the McCLIM Common Lisp Interface Manager implementation.

Contains various GUIs and functionality for working with audio in Lisp in real time. Primarily developed for use with cl-patterns and bdef, using audio servers like SuperCollider (via cl-collider) and Incudine.

Please note that this is a major work in progress at the moment, and very little useful functionality is currently implemented. Feel free to submit bug reports or suggestions, though, if you are interested.

Intro

To start thundersnow, put it in your quicklisp local-projects directory, then:

(ql:quickload :thundersnow)

(thundersnow:thundersnow)

More documentation and functionality will exist in the future.

Overview

The main GUIs included with thundersnow are the following. Note all of them are in very early stages of development and may have bugs and lack various functionality.

Main GUIs

Thundersnow

The main interface; gives a general overview of all synths, patterns, bdefs/buffers, and their status, and allows for high-level control and modification of them.

Tracker

A tracker-inspired interface over cl-patterns’ ptrack pattern.

Piano roll

A piano roll interface for editing sequences of notes via cl-patterns’ eseq. Will eventually become a more general pattern/data plotting interface.

Stepseq

A simple drum machine-style interface for editing and sequencing drum patterns.

Wave editor

An Audacity-like UI to show the waveform of a sound buffer and optionally splits data.

Env editor

An editor allowing the creation and editing of envelopes and their properties.

Piano GUI [working name]

Simple interface to trigger and control synths from a piano-based MIDI controller or via the GUI.

Keyboard GUI [working name]

Simple interface to trigger and control synths from your keyboard or via the GUI.

Pattern GUIs

GUIs for showing the structure of defined patterns and for changing their parameters, etc.

Synth GUIs

Not implemented at all yet. Interfaces to controlling synths as well as generating synthdefs. Will likely use template macros to generate the synthdefs.

File/object browser

Not implemented at all yet. Fast/efficient interface to find a file (local or potentially remote) or object (i.e. a bdef).

Gadgets

Knob

Basic gadget to view and set a numeric parameter via a radial interface.

X/Y pad

Not implemented at all yet. Two-dimensional “pad” for controlling up to three parameters at once.

Ruler bar [working name]

Not implemented at all yet. Scrollbar replacement gadget that can be used to adjust zoom and scroll position simultaneously.

Scope

Oscilloscope-like display for realtime sound visualization.

Status pane

Basic gadget to show status information such as the number of synths playing, CPU usage, etc.

Tempo pane

Gadget displaying the tempo (in BPM and Hz), pulsing to the beat, and allowing tempo alteration.

Features

  • Configuration file loaded when thundersnow is started (located at $XDG_CONFIG_HOME/thundersnow/init.lisp). This is basically just whatever Lisp code you want to run before the window opens. Examples/suggestions forthcoming.
  • Basic “theming” support.
  • (Theoretical) support for multiple audio backends, thanks to the use of cl-patterns and bdef.

Known Issues

  • Interfaces are sometimes drawn with the wrong size at first, until a command is run or a manual redraw triggered. This appears to be due to this bug in McCLIM.
  • Theming is not yet supported for all aspects of the GUI. Related issue in McCLIM.

Community

As far as I’m aware there isn’t a huge community of people using Thundersnow to make music yet. However, if you need support or just want to chat, the “official” room is on Matrix: #cl-patterns:struct.ws.

Any bugs, feature requests, suggestions, etc should be submitted to the GitHub issue tracker. Please feel free to submit issues even if they might already be known as it helps to figure out which parts of the software to prioritize development on. It’s also nice to hear that people are using the software. :)

thundersnow's People

Contributors

defaultxr avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

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.