/groovin

A 4+1 channel looper+ in max/msp

Primary LanguageMax

Groovin v0.60

Overview

A Max/Msp 4+1 channel looper with overdubbing based on the groove~ msp object and karma~, spindrift~ and gigaverb~ externals.

Developed on Max 8 and is of now, OS X only (64-bit). It is now fully codesigned and notarized.

This project is/was an iterative product of my attempts over a summer to learn max/msp.

Please note that it assumes that you have a set of samples files (..wav or .aif) in ~/Music/samples. These can be of pretty much of any length subject to the constraints of the max/msp engine and your computer.

Currently at v0.60 with VST/AU, external MIDI support, and stereo via mc. methods.

A brief demo of the v0.4 features is available on youtube

The v0.6 version looks like this:

groovin_v0.6

Design Spec

overview

see tests/test_layout.maxpat

Modules

channel
    loop
    grain
    instr
    karma with external input (planned)
    slicer (planned)
    stutter (planned)
    chucker (planned)


within channels you can change the fx chain:
    fd: filter -> delay
    fp: filter -> plugin
    pp: plugin -> plugin (planned)
    fa: filter -> amxd (planned)

mixer
    karma
    plugin

Design

The design allows for:

  1. Changing the type of channel: currently either a looper, a granulator, a radnom midi generator via the 4 dropdown menus at the top. Each channel has two fx slots (currently a filter/delay or filter/plugin)

  2. Overdubbing into a 5th channel: the karma~ overdubber/looper records the mix of the 4 channels and then can be used as a seperate 5th channel thereafter during playback.

Externals

This project uses the following externals (OS X 64-bit):

  • karma~: for variabile speed overdubbing and looping.

  • spindrift~: for granular synthesis experimentation.

  • gigaverb~, or more precisely, V. Boehm's 64-bit version of the original by Olaf Matthes implementated by Juhana Sadeharju), for reverb.

Presets

  • Shift-click in a square to store
  • Click on square to recall
  • Shift-(option|alt)-click on square to delete

Todo

primary

  • add csound~ as an engine
  • use gen~ as an engine
  • use poly~ for fx chain
  • add switch on 5th channel to change filter to plugin
  • fx switch at module within channel instead of changing channel itself
  • smoother gain inc/dec (adjust approprirate param in gain~)
  • looper reverse button should actually reverse instead of going to -1
  • normalize button size and ui cleanup
  • more standalone polish
  • add per channel pre-fader pre-fx mute
  • add modulation
  • improve docs
  • check ranges
  • add amxd plugins

secondary

  • global timing support
    • clock division
    • ableton link support
  • add stereo mixer
  • polybuffer~ to load samples from folder?
  • use poly~ ?