Browse Source

Merge pull request #1 from VCVRack/master

sync
pull/8/head
Pat Man GitHub 6 years ago
parent
commit
64b0ea0209
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 49 additions and 38 deletions
  1. +2
    -2
      Contributing.md
  2. +21
    -22
      Core.md
  3. +26
    -12
      DSP.md
  4. +0
    -2
      Introduction.md

+ 2
- 2
Contributing.md View File

@@ -11,8 +11,8 @@ Before writing a single line of code, most features and bug fixes require

Instead, there are many other areas where contributions are much appreciated.
- Dependencies of Rack. Especially [nanovg](https://github.com/memononen/nanovg)'s performance, [rtaudio](https://github.com/thestk/rtaudio)/[rtmidi](https://github.com/thestk/rtmidi)'s stability and compatibility, and maybe even touch support in [GLFW](https://github.com/glfw/glfw). You would be helping many more projects than just Rack.
- your own or others' Rack [plugins](PluginDevelopmentTutorial.md)
- Maintaining the VCV community plugin database. Volunteer at https://github.com/VCVRack/community/issues/248.
- Your own Rack [plugin](PluginDevelopmentTutorial.md)
- Maintaining the Rack plugin ecosystem by [curating](https://github.com/VCVRack/community/issues/352), [updating](https://github.com/VCVRack/community/issues/269), and [reviewing](https://github.com/VCVRack/community/issues/354) plugins
- Edits to the [VCV Rack manual](https://github.com/VCVRack/manual).

I will consider your contribution to Rack if you first open a [GitHub issue](https://github.com/VCVRack/Rack/issues) with a detailed design proposal, which may create an open discussion before the change is implemented.


+ 21
- 22
Core.md View File

@@ -1,19 +1,19 @@
# Core

*Core* modules are how Rack interfaces with your computer's audio drivers, external audio interface devices, physical and virtual MIDI devices, and (through *Bridge*) other DAWs.
*Core* modules are a part of the overall Rack program, and thus do not appear in the [Plugin Manager](https://vcvrack.com/plugins.html).
## Modules
1. [Audio](Core.md#audio)
2. [MIDI Interfaces](Core.md#midi-Interfaces)
- a. [MIDI-1](Core.md#midi-1)
- b. [MIDI-4](Core.md#midi-4)
- c. [MIDI-CC](Core.md#midi-cc)
- d. [MIDI-Trig](Core.md#midi-trig)
3. [Blank](Core.md#blank)
4. [Notes](Core.md#notes)
The *Core* plugin (built into Rack itself) includes utilities and interfaces for interfacing between virtual and hardware realms.
#### Modules
- [Audio](Core.md#audio)
- [MIDI Interfaces](Core.md#midi-interfaces)
- [MIDI-1](Core.md#midi-1)
- [MIDI-4](Core.md#midi-4)
- [MIDI-CC](Core.md#midi-cc)
- [MIDI-Trig](Core.md#midi-trig)
- [Blank](Core.md#blank)
- [Notes](Core.md#notes)
### Audio
![Core Audio](images/Core/Audio.m.png)

@@ -42,7 +42,7 @@ A good balance can be found by increasing the block size until no audio "glitche
Note: Using multiple Audio modules is experimental and may crash Rack or render unstable audio.
Most DAWs avoid this feature entirely by restricting audio to a single input and a single output device for stability reasons, but if using multiple audio devices in Rack works with your configuration, more power to you!

---
### MIDI Interfaces

Each MIDI interface module (described below) supports the following drivers.
@@ -62,7 +62,7 @@ The *computer keyboard* MIDI driver generates MIDI notes when keys are presses w
Using two rows of keys, the virtual MIDI keyboard spans approximately 2½ octaves and can be shifted down and up with the <code>&#96;</code> and `1` keys.
Currently only the QWERTY (US) layout is supported, but other keyboard layouts may function similarly.

---
#### MIDI-1
![Core MIDI-1](images/Core/MIDI-1.m.png)

@@ -73,7 +73,7 @@ The **CV** output generates a 1V/oct pitch signal of the last held MIDI note.
**CLK1** and **CLK2** generate triggers specified by the division set by right-clicking on the panel and selecting the *CLK 1 rate* or *CLK 2 rate*.
**STRT**, **STOP**, and **CONT** generate triggers when the MIDI hardware or DAW host (for VCV Bridge) sends a start, stop, or continue event.

---
#### MIDI-4
![Core MIDI-4](images/Core/MIDI-4.m.png)

@@ -87,7 +87,7 @@ Right-click the panel to select the polyphony mode to specify the behavior in ma

Remember that MIDI interfaces can be used simultaneously with the same driver, for example if global controls like pitch and mod wheel are needed along with polyphonic controls.

---
#### MIDI-CC
![Core MIDI-CC](images/Core/MIDI-CC.m.png)

@@ -99,7 +99,7 @@ Each output can be assigned a particular CC number by clicking on the digital di
A **LRN** indicator is displayed to represent that the port is in "learn" mode.
Either type a number or move a controller to set the CC number.

---
#### MIDI-Trig
![Core MIDI-Trig](images/Core/MIDI-Trig.m.png)

@@ -109,15 +109,14 @@ For MIDI sequencers and drum machines that send immediate note ON/OFF messages i
To generate a CV signal corresponding to the velocity of the note instead of 10V, right-click on the panel and enable *Velocity* mode.
This is useful for setting the amplitude of percussive sounds for MIDI controllers with velocity-capable pads, for example.

---
---

### Blank
![Core Blank](images/Core/Blank.m.png)

Useful for adding space between modules in your rack.
You can resize the panel by dragging the edges horizontally, with a minimum size of 3HP.

---
### Notes
![Core Notes](images/Core/Notes.m.png)



+ 26
- 12
DSP.md View File

@@ -5,16 +5,24 @@ One of its many applications is to generate and process audio from virtual/digit

There are many online resources and books for learning DSP.

- [Digital signal processing Wikipedia](https://en.wikipedia.org/wiki/Digital_signal_processing)
- [DSPRelated.com](https://www.dsprelated.com/)
- [Signal Processing Stack Exchange](https://dsp.stackexchange.com/)
- [Digital Signal Processing MIT OpenCourseWare](https://ocw.mit.edu/resources/res-6-008-digital-signal-processing-spring-2011/)
- [The Scientist and Engineer's Guide to Digital Signal Processing](http://dspguide.com/) by Steven W. Smith
- [The Art of VA Filter Design](http://www.native-instruments.com/fileadmin/ni_media/downloads/pdf/VAFilterDesign_2.0.0a.pdf) by Vadim Zavalishin (PDF)

Below are my mindless ramblings of various topics with a focus on DSP for modular synthesizers.
Eventually this will become organized, but it is currently a *work-in-progress*.
If anything here is inaccurate, you can [edit it yourself](https://github.com/VCVRack/manual) or [open an issue](https://github.com/VCVRack/manual/issues) in the manual's source repository.
- [Digital signal processing Wikipedia](https://en.wikipedia.org/wiki/Digital_signal_processing): An neutral overview of the entire field.
- [Julius O. Smith III Online Books](https://ccrma.stanford.edu/~jos/) ([Index](https://ccrma.stanford.edu/~jos/GlobalJOSIndex.html)): Thousands of topics on audio DSP and relevant mathematics, neatly organized into easy-to-digest but sufficiently deep pages and examples.
- [Mathematics of the Discrete Fourier Transform (DFT)](https://ccrma.stanford.edu/~jos/mdft/)
- [Introduction to Digital Filters](https://ccrma.stanford.edu/~jos/filters/)
- [Physical Audio Signal Processing](https://ccrma.stanford.edu/~jos/pasp/)
- [Spectral Audio Signal Processing](https://ccrma.stanford.edu/~jos/sasp/)
- [Signal Processing Stack Exchange](https://dsp.stackexchange.com/): Questions and answers by thousands of DSP amateurs and professionals.
- [DSPRelated.com](https://www.dsprelated.com/): Articles, news, and blogs of both fundamental and modern DSP topics.
- [The Scientist and Engineer's Guide to Digital Signal Processing](http://dspguide.com/) by Steven W. Smith: Free online book about general DSP topics.
- [Digital Signal Processing MIT OpenCourseWare](https://ocw.mit.edu/resources/res-6-008-digital-signal-processing-spring-2011/): Video lectures and notes covering the basics of DSP.
- [The Art of VA Filter Design](http://www.native-instruments.com/fileadmin/ni_media/downloads/pdf/VAFilterDesign_2.0.0a.pdf) (PDF) by Vadim Zavalishin: Huge collection of deep topics in digital/analog filter design and analog filter modeling.
- [KVR Audio Forum - DSP and Plug-in Development](http://www.kvraudio.com/forum/viewforum.php?f=33): Music DSP and software development discussions.


The following topics are targeted toward modular synthesizer signal processing, in which designing small synthesizer components is the main objective.

This document is currently a *work-in-progress*.
Remember that if anything here is inaccurate, you can [edit it yourself](https://github.com/VCVRack/manual) or [open an issue](https://github.com/VCVRack/manual/issues) in the manual's source repository.
Image credits are from Wikipedia.

### Signals
@@ -182,11 +190,10 @@ $$ y(t) = (h \ast x)(t) = \int_{-\infty}^\infty h(\tau) x(t - \tau) d\tau $$
where $h(t)$ is the *impulse response* of our filter.

The signal $h(t)$ is the result of processing a [delta function](https://en.wikipedia.org/wiki/Dirac_delta_function) through our filter, since $\delta(t)$ is the "identity" function of convolution, i.e. $h(t) = (h \ast \delta)(t)$.
Clapping your hands or popping a balloon (both good approximations of $\delta$) in a large cathedral will generate a very sophisticated impulse response, which can be recorded and processed in a FIR filter algorithm to reproduce arbitrary sounds as if they were performed in the cathedral.
Clapping your hands or popping a balloon (both good approximations of $\delta$) in a large cathedral will generate a very sophisticated impulse response, which can be recorded as $h(t)$ and processed in a FIR filter algorithm to reproduce arbitrary sounds as if they were performed in the cathedral.

Repeating this process in the digital realm gives us the discrete convolution.
$$ y_k = \sum_{n=-\infty}^\infty h_n x_{k-n} $$
Note that $h_n$ is both non-causal (nonzero for negative $t$ or $n$) and infinitely long, which is addressed later.


#### Brickwall filter
@@ -205,6 +212,13 @@ where $\operatorname{sinc}(x) = \sin(\pi x) / (\pi x)$ is the [normalized sinc f
Although the impulse response is infinitely long, restricting it to a finite range $[-T, T]$ and shifting it forward by $T$ produces a finite causal impulse response that can be solved by a fast FIR algorithm to produce a close approximation of an ideal brickwall filter.


### Windows

The impulse response $h_n$ is defined for all integers $n$, so it is both non-causal (requires future knowledge of $x(t)$ to compute $y(t)$) and infinitely long.

*TODO*


### To-do

- digital filters


+ 0
- 2
Introduction.md View File

@@ -4,8 +4,6 @@ The VCV Rack manual is under active development.

Edit this manual at https://github.com/VCVRack/manual.

[PDF download](VCV-Rack-manual.pdf)


### Communities



Loading…
Cancel
Save