Skip to content

Commit

Permalink
1.6.2 initial release
Browse files Browse the repository at this point in the history
  • Loading branch information
runjumplabs committed Mar 27, 2020
1 parent 73b1f42 commit eff7596
Show file tree
Hide file tree
Showing 42 changed files with 116,903 additions and 73,198 deletions.
Binary file modified .DS_Store
Binary file not shown.
Binary file modified docs/.DS_Store
Binary file not shown.
Binary file added docs/images/anatomy.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/dmfx_1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/dmfx_2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 5 additions & 1 deletion docs/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,14 @@ DreamMaker FX Documentation

markdown/intro.md
rst/examples.rst
rst/hardware.rst
markdown/install.md
markdown/arduino_anatomy.md
markdown/echo_basic.md
markdown/adding_effects.md
markdown/routing_audio.md
markdown/controlling_effects.md
markdown/butttons_and_knobs.md
markdown/buttons_and_knobs.md
markdown/using_api.md
markdown/debugging.md
markdown/troubleshooting.md
Expand All @@ -44,6 +46,7 @@ DreamMaker FX Documentation

ADSR Envelope<api/classfx__adsr__envelope.rst>
Amplitude Modulator<api/classfx__amplitude__mod.rst>
Arpeggiator<api/classfx__arpeggiator.rst>
Biquad Filter<api/classfx__biquad__filter.rst>
Compressor<api/classfx__compressor.rst>
Delay<api/classfx__delay.rst>
Expand All @@ -56,6 +59,7 @@ DreamMaker FX Documentation
Oscillator<api/classfx__oscillator.rst>
Phase Shifter<api/classfx__phase__shifter.rst>
Pitch Shifter<api/classfx__pitch__shift.rst>
Pitch Shifter (Freq Domain)<api/classfx__pitch__shift__fd.rst>
Ring Modulator<api/classfx__ring__mod.rst>
Slicer<api/classfx__slicer.rst>
Variable Delay<api/classfx__variable__delay.rst>
Expand Down
2 changes: 1 addition & 1 deletion docs/markdown/adding_effects.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ We then provide a name for our effect object (which in the example above is `my_
And finally, we provide the initial parameters for that effect (i.e. where the knobs are set initially).
Again, the The API docs contain more details on this.
Again, the Effect Blocks section on the left contains documentation for each of the various effect blocks that are available.
What's neat is that this *object* then becomes its own stand-alone effect. We can create multiple objects of the same type in our program (i.e. multiple delays in this case) that each have their own parameters and which are each wired-in in their own ways.
Expand Down
21 changes: 21 additions & 0 deletions docs/markdown/arduino_anatomy.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# The Anatomy of an Effect
------

Let's start by learning the anatomy of a basic Arduino "Sketch" (aka "program" in Arduino speak).

With the Arduino app open, go to File->New. You'll see a new text editor window appear with a new "sketch". This sketch will come pre-populated with two *functions*. One is called `setup()` and another is called `loop()`.

When the sketch is downloaded to our hardware, it will first run any commands in the `setup()` function once. And then it will run the `loop()` function repeatidly. Each time you power up the board, it goes through the same sequence (run `setup()` once and then run `loop()` indefinitely).

When creating effects, there are three places we'll add code.

First (in area #1), we'll define / "declare" which effects building blocks we'll be using at the very top of the file. We can declare up to 100 effect blocks (for example, if you wanted to create 100 delay lines and wire them together, go for it!).

Next (in area #2), we'll define how these building blocks connect to the audio in / out jacks and to each other. We can also route control signals between the effect blocks here too.

Finally (in area #3), we'll add any real-time controls of the effect parameters. This is where we, for example, respond to a pressed footswtich, changed knob or switch.

![Anatomy of an effect](../images/anatomy.png)

While some effects may look complex at first glace, they all really have these three components.

23 changes: 2 additions & 21 deletions docs/markdown/echo_basic.md
Original file line number Diff line number Diff line change
@@ -1,30 +1,11 @@
# Building a Basic Echo Pedal
# Tutorial #1: Basic Delay Pedal
------

As mentioned earlier, one doesn't have to be an experienced programmer to use this platform. The coding patterns for creating various effect and synth components, wiring them together and controlling their parameters is pretty straight forward.


## Basic Arduino anatomy
------
Let's start by learning the anatomy of a basic Arduino "Sketch" (aka "program" in Arduino speak).

With the Arduino app open, go to File->New. You'll see a new text editor window appear with a new "sketch". This sketch will come pre-populated with two *functions*. One is called `setup()` and another is called `loop()`.

When the sketch is downloaded to our hardware, it will first run any commands in the `setup()` function once. And then it will run the `loop()` function repeatidly. Each time you power up the board, it goes through the same sequence (run `setup()` once and then run `loop()` indefinitely).

``` C
void setup() {
// put your setup code here, to run once:

}

void loop() {
// put your main code here, to run repeatedly:

}
```

So when creating effects, we will define how the effects connect together in the `setup()` function and we will then (optionally) adjust the parameters for these effects in the `loop()` routine.

Let's start by creating a simple echo effect to see how the pieces fit together.

Expand Down Expand Up @@ -75,7 +56,7 @@ void setup() {

Let's deconstruct what we just did here.

First, we *called* the `pedal.init(true);` function to set up our system.
First, we *called* the `pedal.init();` function to set up our system.

Next, we connected the audio from the input jack of our pedal (aka `instr_in`) to the input of our echo object (aka `my_echo_1.input`) using the `route_audio()` function.

Expand Down
6 changes: 3 additions & 3 deletions docs/markdown/routing_audio.md
Original file line number Diff line number Diff line change
Expand Up @@ -79,15 +79,15 @@ Pretty cool, right?
------
Obey these rules to avoid humiliation and sadness:

1. An output node can be routed to multiple input nodes
An output node can be routed to multiple input nodes
``` C
pedal.route_audio(pedal.instr_in, delay_1.input);
pedal.route_audio(pedal.instr_in, delay_2.input);
```
2. An input node can only have one input. However, you can use the `fx_mixer` nodes if you want to send multiple outputs to an input.
An input node can only have one input. However, you can use the `fx_mixer` nodes if you want to send multiple outputs to an input.
``` C
pedal.route_audio(delay_1.output, my_mixer_2.input_1);
pedal.route_audio(delay_2.output, my_mixer_2.input_2);
pedal.route_audio(my_mixer_2, pedal.amp_out);
```
3. And you can't route input nodes to other input nodes, or output nodes to other output nodes. It's always output->input.
And you can't route input nodes to other input nodes, or output nodes to other output nodes. It's always output->input.
3 changes: 1 addition & 2 deletions docs/readme.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,2 @@
cd into docs directory
Do a doxygen to recreate docs
do a make html to rebuild the html
./sync_src.sh && doxygen && make html
8 changes: 4 additions & 4 deletions docs/rst/examples.rst
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
.. _examples:

********
Examples
********
*****************
Hear it in action
*****************

Here are a few examples of effects created on the DreamMaker FX Platform.
Here are a few examples of effects created on the DreamMaker FX Platform.


Perpetuity
Expand Down
42 changes: 42 additions & 0 deletions docs/rst/hardware.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
.. _hardware:

*****************
Meet the Hardware
*****************


Gen 1: The Dream Lemur
######################

The first generation hardware was designed in the spring of 2019 and manufactured during the summer.

Features:
* 450MHz SHARC DSP + SAMD51 processor (running Arduino stuff)
* Stereo in / Stereo out @ 48kHz sampling rate
* Short (QWIIC) and long range (CAT-5) sensor interfaces
* Wireless sensor interface (via RF transceiver)
* USB connector (for programming and debug)
* 3 pots
* 2 footswitches
* 2 red LEDs

.. image:: ../images/dmfx_1.png

Gen 2: The Beyonder
###################

The design for the second generation hardware began as soon as we started using the first generation and realized all the things that could be improved. Our first gen-2 hardware is in house and working great so far.

Features
* 450MHz SHARC DSP + SAMD51 processor (running Arduino stuff)
* Stereo in / Stereo out @ 48kHz sampling rate
* Expression pedal
* MIDI in / out
* Short (QWIIC) and long range (CAT-5) sensor interfaces
* USB connector (for programming and debug)
* 5 pots
* 2 footswitches
* 3 RGB LEDs
* 2 3-way toggles

.. image:: ../images/dmfx_2.png
3 changes: 3 additions & 0 deletions docs/sync_src.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#!/bin/bash
rm -R ../src/*
cp -r ~/Documents/Arduino/libraries/dmfx-arduino/* ../src
2 changes: 2 additions & 0 deletions src/dm_fx_debug.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@

#endif



/**
* Serial console message level (MSG_DEBUG is most verbose, SG_ERROR only reports errors)
*/
Expand Down
5 changes: 5 additions & 0 deletions src/dm_fx_dsp.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@ bool wait_for_canvas_to_start(void) {
}
if (!timeout_cntr_1s) {
DEBUG_MSG("Canvas never started running", MSG_ERROR);
display_error_status(ERROR_CODE_DSP_NOT_BOOTING);
}

DEBUG_MSG("Complete", MSG_DEBUG);
Expand Down Expand Up @@ -231,15 +232,19 @@ void wait_for_dsp_to_be_ready(void) {
void report_canvas_errors(void) {
if (dsp_status.state_err_allocation) {
DEBUG_MSG("Allocation error encountered while initializing effects", MSG_ERROR);
display_error_status(ERROR_INTERNAL);
}
if (dsp_status.state_err_param) {
DEBUG_MSG("Parameter error encountered while initializing effects", MSG_ERROR);
display_error_status(ERROR_INTERNAL);
}
if (dsp_status.state_err_corrupt) {
DEBUG_MSG("Corruption error encountered while initializing effects", MSG_ERROR);
display_error_status(ERROR_INTERNAL);
}
if (dsp_status.state_err_other) {
DEBUG_MSG("Other error encountered while initializing effects", MSG_ERROR);
display_error_status(ERROR_INTERNAL);
}
}

Expand Down
Loading

0 comments on commit eff7596

Please sign in to comment.