diff --git a/README.md b/README.md index 749bd59a04209dc6a3047b2a6f72933f348d640e..4fc6d9bc5deaae999ae4256fe9abdcb006aa32a2 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,60 @@ -# daisy-looper +--- +software: daisyy-looper +hardware: daisyy-hardware +language: C++ +--- +# daisyy-looper + +*daisy-looper* is a software that can be installed on the [daisyy hardware](https://code.hfbk.net/sdiy/daisyy/daisyy-hardware) developed in the course *Synthesizer DIY* that took place during winter semester 2023/2024 at HFBK Hamburg. + +## Overview + +The looper allows you to record audio from the input and [overdub](https://en.wikipedia.org/wiki/Overdubbing) onto up to 5 different virtual "tapes" called *buffers*. The recorded sounds stored in each buffer will be displayed as a waveform and can be played back at different speeds (including reverse speed) or no speed at all. + +Just like with real tape the pitch of the played back sounds changes when the speed of the playhead changes. This can be used for interesting effects. + + + +## Interface + + + + + +| Element | Description | +| -------------- | ------------------------------------------------------------ | +| Loop Start | Changes where the loop start position is within the current buffer | +| Loop Length | Changes the length of the loop | +| Mix | Mixes between incoming audio and the output of the looper<br>All the way to the left only the incoming (»dry«) audio is heard<br>All the way to the right only the looped (»wet«) audio is heard | +| Speed | Changes the speed of the playhead<br>With a centered knob the speed is 0% | +| Input Gain | Adjusts the level of the incoming audio before it gets converted to digital<br>The RGB-LED displays the incoming audio levels (red means it is clipping) | +| Loop Volume* | Adjusts the volume of the Loopers output | +| Reverb Amount* | Mixes in a Reverb that affects both the incoming and the looped signal | +| LFO Amount* | Adjusts the Amount with which the LFO will affect the position of the playhead, this can lead to very mangled and experimental sounds | +| Rec Menu | Pressing and holding this button opens up the `REC MENU` where settings for the way things are recorded can be changed | +| Play Menu | Pressing and holding this button opens up the `PLAY MENU` where settings affecting the Playback can be changed | +| FX Menu | Pressing and holding this button opens up the `FX MENU` where certain aspects of the effects can be changed more in depth (e.g. Reverb Decay time, LFO-Waveform or Speed, etc.) | +| REC Button | Pressing this button records audio, overwriting/erasing sounds that are already there | +| OVR Button | Pressing this button overdubs audio, adding to sounds that are already there | +| Buffer Menu | Pressing and holding this button will let you change the currently active buffer, giving you a new, clean slate to record into | + +*Depending on the settings in the `FX MENU` this knob can have different functions + +## Menus + +### Play Menu + + + +| What | Options | Description | +| --------- | --------------------------------- | ------------------------------------------------------------ | +| Play Mode | Stop / <u>Loop</u> / Multi / MIDI | How the looper plays back audio:<br><b>Stop:</b> Don't play at all<br><b><u>Loop:</u></b> Play a loop with a single playhead (default)<br><b>Multi:</b> Play a loop with multiple playheads<br><b>MIDI:</b> Play only on incoming MIDI notes | +| Mix Mode | <u>Active</u> / Sum / Ring | How the 5 available Buffers are mixed with each other<br><b><u>Active:</u></b> Only the currently active/visible buffer is heard (default)<br><b>Sum:</b> All buffers are heard, even if they are not visible<br><b>Ring:</b> All buffers are ring-modulated with the incoming audio (meaning only if *both* the input and our loop produce sounds we hear something) | +| Restart | - | Press to jump the playhead back to the start of the loop | +| Slow Down | - | Press and hold to start a vinyl-style slowdown | +| Reverse | - | Press and hold to reverse the playback | -# What does the looper do? -*daisy-looper* is a software that can be installed on the [daisyy hardware](/sdiy/daisyy/daisyy-hardware) developed in the course *Synthesizer DIY* that took place during winter semester 2023/2024 at HFBK Hamburg. The looper allows you to record audio present at the input and [overdub](https://en.wikipedia.org/wiki/Overdubbing) into up to 5 different virtual "tapes" called *buffers*. The recorded sounds stored in each buffer will be displayed as a waveform and can be played back at different speeds (including reverse speed). diff --git a/images/interface.svg b/images/interface.svg new file mode 100644 index 0000000000000000000000000000000000000000..cc2a94712adb20b5bf7bc18a0e6b904f4230ea78 --- /dev/null +++ b/images/interface.svg @@ -0,0 +1,91 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 555.59 262.2"> + <defs> + <style> + .cls-1 { + letter-spacing: -.09em; + } + + .cls-2 { + fill: none; + } + + .cls-2, .cls-3 { + stroke: #1a171b; + stroke-miterlimit: 10; + } + + .cls-4 { + letter-spacing: .03em; + } + + .cls-5 { + letter-spacing: .05em; + } + + .cls-6 { + letter-spacing: -.07em; + } + + .cls-7 { + fill: #1a171b; + font-family: Inter-Regular, Inter; + font-size: 14px; + } + + .cls-8 { + letter-spacing: -.03em; + } + + .cls-9 { + letter-spacing: -.02em; + } + + .cls-10 { + letter-spacing: -.03em; + } + + .cls-3 { + fill: #fff; + } + </style> + </defs> + <rect class="cls-3" x="226.77" y="26.93" width="89.29" height="56.69"/> + <circle class="cls-3" cx="398.27" cy="36.85" r="17.01"/> + <polyline class="cls-2" points="395.43 19.84 395.43 32.6 401.1 32.6 401.1 19.84"/> + <text class="cls-7" transform="translate(419.53 41.36)"><tspan x="0" y="0">INPUT </tspan><tspan class="cls-9" x="46.44" y="0">G</tspan><tspan x="56.52" y="0">AIN</tspan></text> + <circle class="cls-3" cx="398.27" cy="97.32" r="17.01"/> + <polyline class="cls-2" points="395.43 80.31 395.43 93.07 401.1 93.07 401.1 80.31"/> + <text class="cls-7" transform="translate(419.53 101.84)"><tspan class="cls-10" x="0" y="0">L</tspan><tspan x="7.48" y="0">OOP </tspan><tspan class="cls-8" x="41.62" y="0">V</tspan><tspan x="50.61" y="0">OLUME*</tspan></text> + <circle class="cls-3" cx="398.27" cy="157.8" r="17.01"/> + <polyline class="cls-2" points="395.43 140.79 395.43 153.54 401.1 153.54 401.1 140.79"/> + <text class="cls-7" transform="translate(419.53 162.31)"><tspan x="0" y="0">REVERB AMOUN</tspan><tspan class="cls-8" x="110.97" y="0">T</tspan><tspan x="119.48" y="0">*</tspan></text> + <circle class="cls-3" cx="398.27" cy="218.27" r="17.01"/> + <polyline class="cls-2" points="395.43 201.26 395.43 214.02 401.1 214.02 401.1 201.26"/> + <text class="cls-7" transform="translate(419.53 222.78)"><tspan x="0" y="0">LFO AMOUN</tspan><tspan class="cls-8" x="84.5" y="0">T</tspan><tspan x="93.01" y="0">*</tspan></text> + <circle class="cls-3" cx="144.57" cy="36.85" r="17.01"/> + <polyline class="cls-2" points="141.73 19.84 141.73 32.6 147.4 32.6 147.4 19.84"/> + <text class="cls-7" transform="translate(37.56 41.36)"><tspan class="cls-10" x="0" y="0">L</tspan><tspan x="7.48" y="0">OOP S</tspan><tspan class="cls-1" x="50.55" y="0">T</tspan><tspan x="58.35" y="0">ART</tspan></text> + <circle class="cls-3" cx="144.57" cy="97.32" r="17.01"/> + <polyline class="cls-2" points="141.73 80.31 141.73 93.07 147.4 93.07 147.4 80.31"/> + <text class="cls-7" transform="translate(24.67 101.84)"><tspan class="cls-10" x="0" y="0">L</tspan><tspan x="7.48" y="0">OOP LEN</tspan><tspan class="cls-4" x="68.41" y="0">G</tspan><tspan x="79.29" y="0">TH</tspan></text> + <circle class="cls-3" cx="144.57" cy="157.8" r="17.01"/> + <polyline class="cls-2" points="141.73 140.79 141.73 153.54 147.4 153.54 147.4 140.79"/> + <text class="cls-7" transform="translate(97.85 162.31)"><tspan x="0" y="0">MIX</tspan></text> + <circle class="cls-3" cx="144.57" cy="218.27" r="17.01"/> + <polyline class="cls-2" points="141.73 201.26 141.73 214.02 147.4 214.02 147.4 201.26"/> + <text class="cls-7" transform="translate(78.68 222.78)"><tspan x="0" y="0">SPEED</tspan></text> + <circle class="cls-3" cx="358.58" cy="36.85" r="4.25"/> + <rect class="cls-3" x="187.09" y="178.58" width="53.86" height="53.86" rx="5.99" ry="5.99"/> + <text class="cls-7" transform="translate(200.01 194.43)"><tspan x="0" y="0">REC</tspan></text> + <rect class="cls-3" x="243.78" y="178.58" width="53.86" height="53.86" rx="5.99" ry="5.99"/> + <text class="cls-7" transform="translate(256.16 194.43)"><tspan class="cls-8" x="0" y="0">O</tspan><tspan x="10.18" y="0">VR</tspan></text> + <rect class="cls-3" x="301.89" y="178.58" width="53.86" height="53.86" rx="5.99" ry="5.99"/> + <text class="cls-7" transform="translate(308.92 194.43)"><tspan x="0" y="0">BUF</tspan><tspan class="cls-8" x="27.7" y="0">F</tspan><tspan x="35.44" y="0">.</tspan><tspan x="-1.38" y="16.8">MENU</tspan></text> + <rect class="cls-3" x="187.09" y="121.89" width="53.86" height="53.86" rx="5.99" ry="5.99"/> + <text class="cls-7" transform="translate(200.01 137.74)"><tspan x="0" y="0">REC</tspan><tspan x="-7.28" y="16.8">MENU</tspan></text> + <rect class="cls-3" x="243.78" y="121.89" width="53.86" height="53.86" rx="5.99" ry="5.99"/> + <text class="cls-7" transform="translate(252.88 137.74)"><tspan x="0" y="0">P</tspan><tspan class="cls-5" x="8.89" y="0">L</tspan><tspan class="cls-6" x="17.4" y="0">A</tspan><tspan x="25.83" y="0">Y </tspan><tspan x="-3.46" y="16.8">MENU</tspan></text> + <rect class="cls-3" x="301.89" y="121.89" width="53.86" height="53.86" rx="5.99" ry="5.99"/> + <text class="cls-7" transform="translate(319.96 137.74)"><tspan x="0" y="0">FX</tspan><tspan x="-12.43" y="16.8">MENU</tspan></text> +</svg> \ No newline at end of file diff --git a/images/menu-play.jpg b/images/menu-play.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7a99ec10eb100cbaa1b6b776ff6b5f21455d37df Binary files /dev/null and b/images/menu-play.jpg differ diff --git a/images/screen.jpg b/images/screen.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f6db00f963db3bb11f7e7537022ef3688f27733b Binary files /dev/null and b/images/screen.jpg differ