MPCgrain

MPCgrain

granular Music Production Center for monome norns

new engine in Supercollider, nice pads :wink:

Requirements

monome norns, MIDI controller

Documentation

enc 1 → change pages (MIDI, tracks, samples, program, modulations, files)
enc 2 → select parameter
enc 3 → change value

midi page | btn 2 → shuffle note/pad assignments | btn 3 → reset assignments

  • bpm: general bpm for sync functions
  • midi_ch: MPCgrain MIDI receive channel
  • in_device: norns input device number
  • out_device: norns output device number for passthrough and tracks midi looper
  • bend_rng: MPCgrain’s pitchbend range
  • note_1 to note_8: pads MIDI notes

trcks page | btn 2 → record MIDI input on selected track, with synced stop | btn 3 → play MIDI recording on selected track
you can just use this page as a three track MIDI looper

  • sel: select track (1, 2, 3)
  • num: synced stop recording numerator
  • den: synced stop recording denominator

sampl page | btn 2 → record audio input starting from selected buffer position (1 to 8) | btn 3 → play buffer starting from buffer position
The MPCgrain audio buffer is max 64 seconds long and it’s divided in 8 sync slices assigned to 8 pads

  • rpos: recording position, the buffer is divided in 8 slices/positions synced to bpm and assigned to the eight pads
  • rlvl: audio input recording level
  • plvl: overdub recording level
  • loop: loop recording

prog page | btn 2 → randomize parameters | btn 3 → restore preset
The granular sampler paramaters

  • step: slice duration in quarter notes
  • amp: amplitude, above 1 for distortion
  • att: evelope attack
  • rel: envelope release
  • rnode: envelope release point, 1 for normal sustain
  • grainatt: single grain attack curve
  • grainrel: single grain release curve
  • trgsel: grain trigger selector (impulse or dust)
  • trgfrq: grain trigger synced frequency
  • rate: grains’ buffer read rate
  • dur: grains duration
  • transp: single grain note transpose
  • samplerate: samplerate in k
  • bits: bitrate
  • filtcut: filter cutoff
  • rq: filter resonance
  • delr: delay of right channel in ms
  • dell: delay of left channel in ms
  • drywet: fade from dry to delayed signal
  • pan

mods page | btn 2 → randomize parameters | btn 3 → restore preset
The granular sampler modulations, modwheel is assigned to a master modulations’ fader

  • lfoatt: lfo envelope attack
  • lforel: lfo envelope release
  • lfornode: lfo envelope release point
  • lfof: lfo frequency
  • lfoph: lfo phase
  • noiseatt: noise envelope attack
  • noiserel: noise envelope release
  • noisernode: noise envelope release point
  • noisecut: noise lowpass cut
  • pitchlfo to panlfo: parameter modulation amplitude from lfo source
  • pitchnoise to pannoise: parameter modulation amplitude from noise source

file page | btn 2 → save entire buffer to an audiofile | btn 3 → double press navigate and read an audiofile to the buffer read position/slice

  • readpos: buffer read position
  • numfile: write name number for the saved audio file

Download

v1.0.0 - (GitHub - fivedollarman/MPCgrain: granular Music Production Center)

58 Likes

Amazing! Can’t wait to try it.

5 Likes

nice one! looking forward to play…:slight_smile:

1 Like

This looks so cool!

Also, what midi device are you using here?

1 Like

There’s a tiny label there saying it’s Faderfox UC4

3 Likes
# script clear
# script load: /home/we/dust/code/MPCgrain/MPCgrain.lua
### MISSING INCLUDE: MPCgrain/lib/mpcgrain_params
### SCRIPT ERROR: load fail
/home/we/dust/code/MPCgrain/MPCgrain.lua:10: MISSING INCLUDE: MPCgrain/lib/mpcgrain_params
stack traceback:
/home/we/norns/lua/core/norns.lua:145: in function </home/we/norns/lua/core/norns.lua:145>
[C]: in function 'error'
/home/we/norns/lua/core/startup.lua:48: in function 'include'
/home/we/dust/code/MPCgrain/MPCgrain.lua:10: in main chunk
[C]: in function 'dofile'
/home/we/norns/lua/core/script.lua:192: in function </home/we/norns/lua/core/script.lua:192>
[C]: in function 'xpcall'
/home/we/norns/lua/core/norns.lua:146: in field 'try'
/home/we/norns/lua/core/script.lua:192: in function 'core/script.load'
/home/we/norns/lua/core/menu/preview.lua:23: in function 'core/menu/preview.key'
/home/we/norns/lua/core/menu.lua:143: in function </home/we/norns/lua/core/menu.lua:120>
# script clear
lua:
/home/we/norns/lua/core/clock.lua:59: bad argument #1 to 'resume' (thread expected)
stack traceback:
[C]: in function 'coroutine.resume'
/home/we/norns/lua/core/clock.lua:59: in function 'core/clock.resume'

Hi swhic, do you have the mpcgrain_params.lua file in MPCgrain/lib?

change file name from this:

MPCgrain/lib/mpcgran_params

to this

MPCgrain/lib/mpcgrain_params
2 Likes

thank you Martin, I’ve just corrected the filename in the repo… :sweat_smile:

1 Like

looks like one of the Faderfox MIDI controllers?

@danbond thanks you for your service.

1 Like

any chance for grid support? trying to make it work with grid midi mod no luck :slight_smile:
edit: grid mod works

3 Likes

Ye definitely I’d like to have a grid someday… May be in the v 2 it will be supported, greetings

2 Likes

Are you using the gridkeys mod or midigrid?

Hey I used the gridkeys mod.

2 Likes

Ok great - thanks for letting me know - I’ll give it a go :raised_hands:

I’ve fixed some bugs, done some optimizations and implemented bitrate and sample rate reduction and finally distortion!

7 Likes

new demo with machinedrum, crazy :scream:

6 Likes

new bugs fixed = new weird demo
.
.
w/ Micro Modular noodle

4 Likes

Hi there

such a great script from what i can see trough the videos :sweat_smile:

after installing via matron I got error:load fail

this is what i got in matron

# script clear

# script load: /home/we/dust/code/mpcgrain/MPCgrain.lua

### MISSING INCLUDE: MPCgrain/lib/mpcgrain_params

### SCRIPT ERROR: load fail

/home/we/dust/code/mpcgrain/MPCgrain.lua:10: MISSING INCLUDE: MPCgrain/lib/mpcgrain_params

stack traceback:

/home/we/norns/lua/core/norns.lua:145: in function </home/we/norns/lua/core/norns.lua:145>

[C]: in function 'error'

/home/we/norns/lua/core/startup.lua:48: in function 'include'

/home/we/dust/code/mpcgrain/MPCgrain.lua:10: in main chunk

[C]: in function 'dofile'

/home/we/norns/lua/core/script.lua:192: in function </home/we/norns/lua/core/script.lua:192>

[C]: in function 'xpcall'

/home/we/norns/lua/core/norns.lua:146: in field 'try'

/home/we/norns/lua/core/script.lua:192: in function 'core/script.load'

/home/we/norns/lua/core/menu/preview.lua:23: in function 'core/menu/preview.key'

/home/we/norns/lua/core/menu.lua:143: in function </home/we/norns/lua/core/menu.lua:120>

# script clear

lua:

/home/we/norns/lua/core/clock.lua:59: bad argument #1 to 'resume' (thread expected)

stack traceback:

[C]: in function 'coroutine.resume'

/home/we/norns/lua/core/clock.lua:59: in function 'core/clock.resume'

any suggestions?

thanks

1 Like