Skip to content

Commit

Permalink
Add stereo I/O and mix control
Browse files Browse the repository at this point in the history
  • Loading branch information
grough committed Nov 15, 2020
1 parent 15211b3 commit faa7103
Show file tree
Hide file tree
Showing 16 changed files with 825 additions and 809 deletions.
30 changes: 11 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
[Lilac Loop](https://library.vcvrack.com/LilacLoop) is a plugin for [VCV Rack](https://vcvrack.com/). As of [v1.0.0](https://github.com/grough/lilac-loop-vcv/releases/tag/v1.0.0) it contains just one module called _Looper_. If you'd like to report a bug or are having trouble using the plugin, please submit an [issue](https://github.com/grough/lilac-loop-vcv/issues).
[Lilac Loop](https://library.vcvrack.com/LilacLoop) is a plugin for [VCV Rack](https://vcvrack.com/). As of [v1.0.1](https://github.com/grough/lilac-loop-vcv/releases/tag/v1.0.1) it contains just one module called _Looper_. If you'd like to report a bug or are having trouble using the plugin, please submit an [issue](https://github.com/grough/lilac-loop-vcv/issues).

## Module: _Looper_

The Looper module emulates the recording style of a [live looping pedal](https://en.wikipedia.org/wiki/Live_looping). It allows you to record, play and overdub a mono or polyphonic signal using a multi-function toggle control comparable to the main foot switch on a looper pedal.
The Looper module emulates the recording style of a [live looping pedal](https://en.wikipedia.org/wiki/Live_looping). It allows you to record, play and overdub a mono, stereo, or polyphonic signal using a multi-function toggle control comparable to the main foot switch on a looper pedal.

[![An example patch showing how to record and loop a monophonic input signal](examples/lilac-looper-mono-example.png)](https://patchstorage.com/lilac-looper-mono-example/)
[![An example patch showing how to record and loop a stereo input signal](examples/lilac-looper-stereo-example.png)](https://patchstorage.com/lilac-looper-stereo-example/)

### Get Started

[Install the plugin](https://library.vcvrack.com/LilacLoop) and try one of the example patches:

- [Basic Looping](https://patchstorage.com/lilac-looper-mono-example/) (seen above)
- [Stereo looping](https://patchstorage.com/lilac-looper-stereo-example/)
- [Multi-track looping](https://patchstorage.com/lilac-looper-multi-track-example/)
- [Stereo looping](https://patchstorage.com/lilac-looper-stereo-example/) (seen above)
- [Mono Looping](https://patchstorage.com/lilac-looper-mono-example/)
- [Polyphonic looping](https://patchstorage.com/lilac-looper-multi-track-example/)

Press the big button to toggle between record, play and overdub modes. A typical looping session might look like this:

Expand All @@ -24,29 +24,21 @@ Record → Play → Overdub → Play → Overdub → … → Stop → Play →

- **Toggle** is the big button that moves through the active stages of looping:
- Record - create a first recording, setting the duration of the loop
- Overdub - add new material into the loop
- Play - continue listening to the loop without adding to it
- Play - listen to the loop without adding to it
- Overdub - add new material into the loop while playing
- **Status lights** below the big button show when you're recording (red) and playing (green); The light blinks every time Looper reaches the starting point of the loop.
- **Stop** stops the loop. Pressing toggle while stopped will restart the loop from the beginning.
- **Erase** removes a recorded loop from memory irreversibly allowing you to record a new loop. Looper doesn't actively prevent "pops" or "clicks" when erasing the loop (in contrast to other mode changes which are smooth and quiet). You can avoid "pops" by stopping the loop before erasing it.
- **Mix** changes the balance between your live input signal and the recorded loop
- Use the "**After first loop…**" option in the module's context menu to choose which mode is toggled after recording your first loop. The default setting is "Play". The "Overdub" setting will continue recording after recording your first loop

### Stereo and Multi-Track Recording
### Multi-Track Recording

Although Looper works in mono by default, it's capable of recording up to 16 tracks at once thanks to VCV Rack's [polyphonic cables](https://vcvrack.com/manual/Polyphony). To record a multi-channel loop, connect a polyphonic cable to the input and press the big toggle button to start recording. Each channel on the polyphonic input will record on a dedicated internal channel and play back on the corresponding output channel. Use VCV's [Merge](https://library.vcvrack.com/Fundamental/Merge) and [Split](https://library.vcvrack.com/Fundamental/Split) modules to manage polyphony.

To record in **stereo**, simply use voices 1 & 2 of a polyphonic signal (as seen in the [stereo example](https://patchstorage.com/lilac-looper-stereo-example/)).

⚠️ Note that every input channel you plan to record must be connected before you start recording a new loop ([issue #3](https://github.com/grough/lilac-loop-vcv/issues/3)). Additional input channels connected after the first loop is recorded will be ignored until you erase and start a new recording.

### Input Monitoring

Looper doesn't mix its input signal with its output. If you want to hear live input along with a recorded loop, connect your live input and Looper's output into a mixer.
Looper's stereo inputs and outputs are [polyphonic](https://vcvrack.com/manual/Polyphony), meaning you can record up to 32 tracks in total (left and right, 16 channels each). Connect a polyphonic cable to an input and press the big toggle button to start recording. Each channel of polyphony on the input will record on a separate internal track and play back on the corresponding output channel. Use VCV's [Merge](https://library.vcvrack.com/Fundamental/Merge) and [Split](https://library.vcvrack.com/Fundamental/Split) modules to manage polyphony.

### Known Issues & Limitations

If you'd like to report a bug or are having trouble using the plugin, please submit an [issue](https://github.com/grough/lilac-loop-vcv/issues). Following are some known issues that may be solved in a future release:

- Number of polyphonic channels is constant per recording ([#3](https://github.com/grough/lilac-loop-vcv/issues/3))
- Erasing a loop during playback makes a "pop" or "click" sound
- Looper does not enforce a maximum loop length
Binary file modified examples/lilac-looper-mono-example.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
78 changes: 16 additions & 62 deletions examples/lilac-looper-mono-example.vcv
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"version": "1.1.6",
"model": "AudioInterface",
"params": [],
"leftModuleId": 68,
"leftModuleId": 67,
"rightModuleId": 8,
"data": {
"audio": {
Expand All @@ -19,7 +19,7 @@
}
},
"pos": [
15,
5,
0
]
},
Expand All @@ -32,7 +32,7 @@
"leftModuleId": 1,
"text": "1. Choose an audio driver and device in the Audio-8 module\n\n2. Press big button on the Looper module to start recording\n\n3. Press big button again to stop recording and hear your loop play\n\n4. Press big button again to overdub\n\n5. To make a new loop press \"Erase\" and start over\n\nTip: Use the \"After first loop\" menu option to overdub instead of play immediately after recording.",
"pos": [
25,
15,
0
]
},
Expand All @@ -53,89 +53,43 @@
{
"id": 2,
"value": 0.0
}
],
"rightModuleId": 68,
"pos": [
0,
0
]
},
{
"id": 68,
"plugin": "Fundamental",
"version": "1.4.0",
"model": "VCMixer",
"params": [
{
"id": 0,
"value": 1.0
},
{
"id": 1,
"value": 1.0
},
{
"id": 2,
"value": 1.0
},
{
"id": 3,
"value": 1.0
},
{
"id": 4,
"value": 1.0
"value": 0.0
}
],
"leftModuleId": 67,
"rightModuleId": 1,
"pos": [
5,
0,
0
]
}
],
"cables": [
{
"id": 290,
"outputModuleId": 67,
"id": 419,
"outputModuleId": 1,
"outputId": 0,
"inputModuleId": 68,
"inputId": 2,
"color": "#0986ad"
"inputModuleId": 67,
"inputId": 3,
"color": "#c91847"
},
{
"id": 291,
"outputModuleId": 68,
"id": 421,
"outputModuleId": 67,
"outputId": 0,
"inputModuleId": 1,
"inputId": 0,
"color": "#c9b70e"
},
{
"id": 292,
"outputModuleId": 68,
"outputId": 0,
"inputModuleId": 1,
"inputId": 1,
"color": "#0c8e15"
},
{
"id": 370,
"outputModuleId": 1,
"id": 422,
"outputModuleId": 67,
"outputId": 0,
"inputModuleId": 68,
"inputModuleId": 1,
"inputId": 1,
"color": "#c91847"
},
{
"id": 375,
"outputModuleId": 1,
"outputId": 0,
"inputModuleId": 67,
"inputId": 3,
"color": "#0c8e15"
}
]
}
}
Binary file modified examples/lilac-looper-polyphonic-example.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit faa7103

Please sign in to comment.