Code Monkey home page Code Monkey logo

sccode's Introduction

sccode

aj's Supercollider code repo

Approach

  • Signal controllers
    • Input stage
    • Ouput stage
    • Mixer??
  • Instruments
    • Synths
    • Samplers
  • Effects
    • Each of these should be like a stomp box
      • FreeVerb - Built
      • Random delay
      • Granular delay - Built
  • Loops
    • Each uses one or more instruments to play sounds
    • Use patterns to make them interesting and with some randomness
    • Use midi messages to switch from one loop to another
  • Patches
    • Each patch is a combination of all the above.
    • One patch per song.
    • Use buses to tie 'em together
    • patch includes patterns for instruments
    • midi pedal bindings for the loop
    • midi pedal bindings for the stomp boxes and instruments are saved with the patch!

Each instrument, effects, loop, and control object should be a class so it can be re-used in more than one patch.

Tasks

  1. Build a simple reverb effect with:

    • A user interface to adjust parameters ~ Done!
    • midi control ~ Done!
    • Place all re-usable code into appropriate class defs ~ Done!
    • Place the effect itself in a class so it can be reused in different patches. Done!
  2. Build a granulator stompbox from the demo

    • Sound code - Done!
    • Reuse classes from the simple reverb - Done!
    • Implement the MVC structure from the simple reverb - Done!
    • Build a UI - Done!
    • Midi control - Done!
    • Place the effect itself in a class so it can be reused in different patches. Done!
  3. Try a single patch with more than one stompbox. Done! Does the midi bit play nicely?

  4. Implement full test suite and stick to TDD principles

    • Note that a mocking framework may not be necessary because you're not using anything external to SC, such as databases.
    • This doc has lots of techniques for testing in SC: Comprehensive Guide to SuperCollider Unit Testing
    • Also see the UnitTest class: UnitTest
    • Why, in TestMidiBinder, can I only run one test at a time without crashing the interpreter? This seems to be a problem with the Midi bit, because it doesn't affect the ViewMaker tests.
  5. Create modules for input/output

    Input: Done!

    Output:

    • GUI
    • Output mono, but send it to both outputs
    • Mix inputs from multiple busses, e.g. hardware inputs, effects, and instruments Pass it a list of bus indexes, which is iterates over and adds a slider to a window for each one.
  6. Build some reusable synth classes

    • Additive Polysynth. Done
    • Moog thing. Done
    • Fix filter in minimoog or build it separately?
  7. Drums

    • More decent drum sounds

    • Work out how to sequence drums.

    • Build some sampled drum instruments.

    • A good approach is here: https://schollz.com/blog/sampler/ Where you take a single audio file (e.g. a drum break) and split it and sequence the result.

General Supercollider facts

Installing from the Ubuntu packages for 20.04 worked perfectly and has a package for the emacs support.

Installing SuperCollider from source on Ubuntu

Installing SuperCollider on Linux in 2019

sccode's People

Contributors

alistairmatthews avatar

Watchers

 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.