Skip to content

Commit

Permalink
RC 0.0m
Browse files Browse the repository at this point in the history
  • Loading branch information
eh2k committed Sep 4, 2022
1 parent 0a6912c commit 324d7d3
Show file tree
Hide file tree
Showing 38 changed files with 4,030 additions and 318 deletions.
17 changes: 11 additions & 6 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,16 +13,21 @@ jobs:
run: |
python -m pip install --upgrade pip
pip install --upgrade platformio
- name: build OC_teensy40
- name: build
run: |
git submodule update --init
pio run -e OC_teensy40
pio run
export hash=$(git rev-parse --short HEAD)
mv .pio/build/*/firmware.hex ./firmware_OC_T40_$hash.hex
mv .github/workflows/LICENSE.txt ./LICENSE.txt
zip -j ./firmware_OC_T40_$hash.zip ./firmware_OC_T40_$hash.hex ./LICENSE.txt
curl -f -X PUT -u ${{ secrets.UPLOAD_KEY }} ${{ secrets.LATEST_DROP_FOLDER }}/firmware_OC_T40_latest.zip --upload-file ./firmware_OC_T40_$hash.zip
curl -f -X PUT -u ${{ secrets.UPLOAD_KEY }} ${{ secrets.LATEST_DROP_FOLDER }}/firmware_latest.sha -d "$hash"
for f in .pio/build/*/*.hex; do
FIRMWARE=$(basename $(dirname ${f%.*}))
HEX_FILE=./firmware_${FIRMWARE}_$hash.hex
ZIP_FILE=./firmware_${FIRMWARE}_$hash.zip
mv -v "$f" $HEX_FILE
zip -j $ZIP_FILE $HEX_FILE ./LICENSE.txt
curl -X PUT -u ${{ secrets.UPLOAD_KEY }} ${{ secrets.LATEST_DROP_FOLDER }}/firmware_${FIRMWARE}_latest.zip --upload-file $ZIP_FILE || true
curl -X PUT -u ${{ secrets.UPLOAD_KEY }} ${{ secrets.LATEST_DROP_FOLDER }}/firmware_${FIRMWARE}_latest.sha -d "$hash"
done
- name: firmware_artifacts
uses: actions/upload-artifact@v2
with:
Expand Down
68 changes: 0 additions & 68 deletions .vscode/launch.json

This file was deleted.

23 changes: 8 additions & 15 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@

When I am asked why I do such projects - my general reply is: I don't know, it makes fun and I like to get deeper understanding of technical things.
Maybe the reason was the chip shortage that makes Eurorack DIY projects tricky at the moment, and I used that to get more involved with coding in the eurorack land.
At this point, a big thanks to the people behind ornament & crime (o_C), Teensy and specially Mutable Instruments for the inspiring playground and the basis regarding hardware and software for this project.
At this point, a big thanks to the people behind ornament & crime (o_C) for the inspiring playground and the basis regarding hardware for this project.
Many thanks also to all those who have worked on the code and algorithms partly reused here and make this treasure trove freely available, especially Mutable Instruments.

## Challenge

Expand All @@ -36,7 +37,8 @@ E.g you can chain the mono audio signal from an oscillator machine to the neighb
* [Long press [RIGHT]] enters the I/O-configuration-page.
* [Long press [LEFT] + [RIGHT]] enters the MIDI-settings-page.
* [Long press left or right [ENCODER]] shows the modulation popup
* [Long press [L-ENCODER] + [R-ENCODER]] saves the patch - will be restored at startup.
* [Long press [L-ENCODER] + [R-ENCODER]] saves the patch - will be restored at startup
- DEBUG: skip restore - press [RIGHT] button while startup ).

<br/>
<div style="page-break-after: always;"></div>
Expand All @@ -50,7 +52,7 @@ E.g you can chain the mono audio signal from an oscillator machine to the neighb
* **GND**
* `---`
* **CV**
* V/OCT, Envelope, LFO
* V/OCT, Envelope, LFO, Noise
* **Drums** <img align="right" src="doc/engine.bmp" width=196px />
* Analog-BD, Analog SD, Analog HH, Analog HH2
* 909ish-BD, 909ish-SD, TR909-HiHat, TR909-Ride
Expand All @@ -64,7 +66,7 @@ E.g you can chain the mono audio signal from an oscillator machine to the neighb
* Virt.Analog, Waveshaping, FM, Grain, Additive, Wavetable, Chord
* Resonator
* **Stereo-FX**
* Reverb, Rev-Dattorro, Delay, Gated-Reverb, Reverb-HP-LP
* Reverb, ReverbSC, Rev-Dattorro, Delay, Gated-Reverb, Reverb-HP-LP
* **SPEECH**
* LPC, SAM
* **MIDI**
Expand All @@ -89,6 +91,7 @@ Machines/Engines are controlled by individual parameters.
For each parameter a modulation can be assigned:
* **CV**:
* SRC: `C1`, `C2`, `C3`, `C4`
* OP: `THRU`, `S&H-T1`, `S&H-T1`, `S&H-T1`, `S&H-T1`, `T&H-T1`, `T&H-T1`, `T&H-T1`, `T&H-T1`
* Hints:
* Parameter 0 (top-left) is mainly used for V/OCT control. Thus, one single V/OCT signal / CV-Input can be shared by using modulation on parameter-0 with attenuverter = +1 (-3V..+6V) range. It is also possible to select the V/OCT input in the io-configuration page.
* All other parameters can be modulated via CV-input with a assumed voltage-range of -4V..4V at 2kHz sample rate.
Expand Down Expand Up @@ -265,21 +268,11 @@ To callibrate the ADC `0V` reference, remove all patch cables from the module. U
The project was originally a kind of research that I did over half a year. The current O_C hardware could certainly be optimized. As you know, the DAC and the display share the SPI port - this is not ideal for simultaneous operation (display updates are sometimes audible). Furthermore, the Teensy 4.0 does not have "high-end" ADCs - my focus here was to achieve operation at audio rate (aux input) - the issue of noise has not been the focus so far.
At the moment I like to make the project partially available to the community as open-source, so that everyone has the possibility to adapt and experiment with it.
In principle, this project is a suite of apps so-called machines/engines interfacing with a system library ("libmachine").
You are welcome for any suggestions and feedback or collaboration.
#### <u>Build & Flash firmware</u>
* Install VSCode + platformio extension (https://platformio.org/platformio-ide)
- On linux: curl https://www.pjrc.com/teensy/00-teensy.rules > /etc/udev/rules.d/49-teensy.rules
- Open Folder or `code .` inside project directory
- In VSCode - choose environment e.g "OC_teensy40", press "build" or "upload" (ensure teensy connected via usb)
* Alternatively: use Teensy Loader to flash compiled hex: https://www.pjrc.com/teensy/loader.html
## License
The application code respectively the suite of machines/engines is released under the MIT license.
For details e.g. the copyright holders - see the header of individual source code files or readme/license file in the sub folder.
For licenses e.g. the copyright holders of 3rd-party libraries - see the header of individual source code files or readme/license file in the sub folder.
The previously mentioned "libmachine", a hardware abstraction layer, will remain "closed software" until I follow some not yet discarded ideas. This is to prevent the firmware from being forked/ported to similar digital Eurorack modules and some theoretical licensing questions. So if you consider commercially distributing hardware with this firmware, please contact me (eh2k◯gmx.de).
Expand Down
2 changes: 2 additions & 0 deletions lib/SAM/debug.c
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
#include<stdio.h>

int debug = 0;

extern const unsigned char signInputTable1[];
extern const unsigned char signInputTable2[];

Expand Down
Loading

0 comments on commit 324d7d3

Please sign in to comment.