Giter Site home page Giter Site logo

opentheremin_v3's Introduction

Open.Theremin V3.1 control software

Arduino UNO Software for the Open.Theremin

Changes since V3.0 (all by @Theremingenieur):

  1. Fix a wavetable addressing issue (found by @miguelfreitas)
  2. Use the Arduino's hardware SPI to control the DACS and use the Latch signal to reduce audio jitter
  3. Improve the register switch to transpose by clean octaves and keep the tone spacing and pitch tuning consistent
  4. Improve the volume response to give a smoother start and wider dynamics (*)

(*) This relies on a recent gcc compiler version. Make sure to compile it with the Arduino IDE >= 1.8.10

Don't click on the files!

Click on the "Download ZIP" Button to the right or Click here Then unpack the archive.

Open Source Theremin based on the Arduino Platform

Open.Theremin is an arduino shield to build the legendary music instrument invented by Leon Theremin back in 1920. The theremin is played with two antennas, one to control the pitch and one for volume. The electronic shield with two ports to connect those antennas comprises two heterodyne oscillators to measure the distance of the hand to the antenna when playing the instrument. The resulting signal is fed into the arduino. After linearization and filtering the arduino generates the instruments sound that is then played through a high quality digital analog audio converter on the board. The characteristics of the sound can be determined by a wave table on the arduino.

For more info on the open source project and on availability of ready made shield see:

http://www.gaudi.ch/OpenTheremin/

Installation

  1. Open up the Arduino IDE
  2. Open the File "Open_Theremin_V3.ino"
  3. Selecting the correct usb port on Tools -> Serial Port
  4. Select the correct arduino board from Tools -> Board
  5. Upload the code by clicking on the upload button.

LICENSE

Written by Urs Gaudenz, GaudiLabs, 2016 GNU license, check LICENSE file for more information All text above must be included in any redistribution

opentheremin_v3's People

Contributors

gaudilabs avatar theremingenieur avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

opentheremin_v3's Issues

theremin_sintable3.c: No such file or directory

Hi Urs,

I just got the Theremin, and have a problem. Hope you can help! :-) Best, Rebecca

Installing the Open Theremin Package V3 does not work.

Steps to reproduce:

  1. download open theremin zip from git hub
  2. connect Arduino
  3. open aduino web IDE
  4. write test package on arduino: works!
  5. upload theremin sketch to IDE
  6. deploy to arduino

Result: fails with the following message:

/tmp/706839763/build/sketch/ihandlers.cpp:11:32: fatal error: theremin_sintable3.c: No such file or directory

The whole output from the install:

/home/builder/opt/arduino-builder/arduino-builder -compile -core-api-version 10611 -hardware /home/builder/opt/arduino-builder/hardware -hardware /home/builder/.arduino15/packages -tools /home/builder/opt/arduino-builder/tools -tools /home/builder/.arduino15/packages -built-in-libraries /home/builder/opt/libraries/latest -logger humantags -fqbn arduino:avr:uno -build-cache /tmp -build-path /tmp/706839763/build -verbose -prefs runtime.tools.i586-poky-linux-uclibc.path=/home/builder/.arduino15/packages/Intel/tools/i586-poky-linux-uclibc/1.6.2+1.0 -prefs runtime.tools.CMSIS.path=/home/builder/.arduino15/packages/arduino/tools/CMSIS/4.5.0 -prefs runtime.tools.esptool.path=/home/builder/.arduino15/packages/esp8266/tools/esptool/2.5.0-3-20ed2b9 -prefs runtime.tools.arc-elf32.path=/home/builder/.arduino15/packages/Intel/tools/arc-elf32/1.6.9+1.0.1 -prefs runtime.tools.flashpack.path=/home/builder/.arduino15/packages/Intel/tools/flashpack/2.0.0 -prefs runtime.tools.avr-gcc.path=/home/builder/.arduino15/packages/arduino/tools/avr-gcc/5.4.0-atmel3.6.1-arduino2 -prefs runtime.tools.dfu-util.path=/home/builder/.arduino15/packages/arduino/tools/dfu-util/0.9.0-arduino1 -prefs runtime.tools.bossac.path=/home/builder/.arduino15/packages/industruino/tools/bossac/1.7.0-industruino -prefs runtime.tools.nrf5x-cl-tools.path=/home/builder/.arduino15/packages/arduino/tools/nrf5x-cl-tools/9.3.1 -prefs runtime.tools.mkspiffs.path=/home/builder/.arduino15/packages/esp8266/tools/mkspiffs/2.5.0-3-20ed2b9 -prefs runtime.tools.xtensa-lx106-elf-gcc.path=/home/builder/.arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-3-20ed2b9 -prefs runtime.tools.arduino101load.path=/home/builder/.arduino15/packages/Intel/tools/arduino101load/2.0.1 -prefs runtime.tools.arduinoOTA.path=/home/builder/.arduino15/packages/arduino/tools/arduinoOTA/1.2.1 -prefs runtime.tools.x86-linux-gcc.path=/home/builder/.arduino15/packages/arduino/tools/x86-linux-gcc/7.2.0 -prefs runtime.tools.openocd.path=/home/builder/.arduino15/packages/arduino/tools/openocd/0.10.0-arduino9 -prefs runtime.tools.sketchUploader.path=/home/builder/.arduino15/packages/Intel/tools/sketchUploader/1.6.2+1.0 -prefs runtime.tools.core2-32-poky-linux.path=/home/builder/.arduino15/packages/Intel/tools/core2-32-poky-linux/1.6.2+1.0 -prefs runtime.tools.linuxuploader.path=/home/builder/.arduino15/packages/arduino/tools/linuxuploader/1.5.1 -prefs runtime.tools.arm-linux-gcc.path=/home/builder/.arduino15/packages/arduino/tools/arm-linux-gcc/4.9.3 -prefs runtime.tools.arm-none-eabi-gcc.path=/home/builder/.arduino15/packages/arduino/tools/arm-none-eabi-gcc/7-2017q4 -prefs runtime.tools.avrdude.path=/home/builder/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino14 -prefs runtime.tools.CMSIS-Atmel.path=/home/builder/.arduino15/packages/arduino/tools/CMSIS-Atmel/1.2.0 -libraries /tmp/706839763/custom -libraries /tmp/706839763/pinned /tmp/706839763/Open_Theremin_V3

Multiple libraries were found for "timer.h"

Used: /home/builder/opt/libraries/latest/arduino_timer_1_0_0

Not used: /home/builder/opt/libraries/latest/embedded_template_library_10_21_2

Using library arduino_timer_1_0_0 at version 1.0.0 in folder: /home/builder/opt/libraries/latest/arduino_timer_1_0_0

/tmp/706839763/build/sketch/ihandlers.cpp:11:32: fatal error: theremin_sintable3.c: No such file or directory

compilation terminated.

exit status 1

Environment: Suse Linux with a current version of Firefox

Compilation error: avr/io.h: No such file or directory

Getting error: In file included from C:\Users\theeh\Desktop\OpenTheremin_V3-master\Open_Theremin_V3\Open_Theremin_V3.ino:69:0:
C:\Users\theeh\Desktop\OpenTheremin_V3-master\Open_Theremin_V3\application.h:4:10: fatal error: avr/io.h: No such file or directory
#include <avr/io.h>
^~~~~~~~~~
compilation terminated.

exit status 1

Compilation error: avr/io.h: No such file or directory

I'm new to this so maybe it's me but I would appreciate some help.

Thoughts and suggestions

Hi Urs,

I'd like to thank you for this great project! The components for my PCB have not yet arrived and I'm still manufacturing the board but I really appreciate the time you've spent designing, documenting, providing the kits and stuff.

In the meantime I've been reading the code and I've a couple of comments:

  1. I think we would benefit from using LDAC (latch) for real. The current scheme seems IMHO specially worrisome due to the uncertainty introduced by these positive/negative multiplications

https://github.com/GaudiLabs/OpenTheremin_V3/blob/master/Open_Theremin_V3/ihandlers.cpp#L154

This conditional code path (and maybe others) adds "jitter" to the DAC sampling instant. Jitter on ADC/DAC is well known source of performance degradation.

What I had in mind was something pretty simple: just pulse LDAC on the beginning of the INT handler so it would get well tied to the external clock with minimum jitter. (delaying value by one sample won't make any difference imho)

  1. Why haven't you used the hardware's SPI? It seems that the pins are correctly mapped to the SPI port but I see all the bit-banging done by software. Why is that?

IMHO we could save some processor cycles by sparing the bit-banging work to hardware. From your comments in code this seems like a non-negligible time (9.6 us) that we may use for something else...

So why am I bothering anyway? Because I'd like to experiment with generating a chord on opentheremin, which would require advancing, reading and summing different pointers over the wavetables. Since the current code seems quite tight on available CPU cycles I will probably try optimizing it first. So i'd like to ask you first if there are any design issues I'm not aware that could explain (1) or (2).

Thanks!

Auto-Calibration Not Working

I am unable to calibrate the theremin with the Function button. I don't see any feedback on the device when I hold the button down for more than 2 seconds. Since my soldering skills are poor, I went back and tried to re-solder the connections to see if that would help, but no luck. Not sure if there are pins I didn't solder correctly either that affect the Function knob, but everything else seems to be okay.

Thank you in advance for your assistance.

".h"???

As usual, Github doesn't make it easy. I'm trying to get to a PCB layout for the theremin V3.0. The 4.0 version I finally figured out, I needed Kicad" to see the board. But I need V3! All see is files with ".h". what the f???? ?
The problem is that you guys at github think we all should know this crap through osmosis or something. In version four, could you not just have posted somewhere that you need "Kicad" to open the damned files?
OK. I'm through venting. How do you get the circuit board layout on the Theremin V3? Make it simple for me please! I know you're all smarter than me, OK?

Feature Request- Dual-Channel Mono

My OpenTheremin V3 outputs mono audio over the 3.5mm jack, which makes sense. However, it only does so on one channel (Left) which makes it a bit unpleasant for headphone playing.

Is it possible to have the mono audio output on both channels, or would that negatively impact the processing load?

Troubleshooting help

Hi there,

Not sure if you still check this or not. I recently finished putting together your board!

I plugged it in and the red LED comes on and thats it :(

I am very confident that i screwed something up but im just not sure what.

Anywhere you could suggest that I start looking? Just trying to get into calibration mode

OpenTheremin v3

Yes, I am new to this stuff. but please hear me out.
I have the PC board and all of the components for the "Open theremin" v3. But I cannot find the pictures that tell you of the component board layout, nor the schematics. Please help me in this, someone.
In the early days of "github" it was easier.

No file or directory found

Hi,

Please can you help, When I try and upload the code through Arduino IDE I get the following message

"**Arduino: 1.8.13 (Windows Store 1.8.42.0) (Windows 10), Board: "Arduino Uno"

Open_Theremin_V3:69:10: fatal error: application.h: No such file or directory

#include "application.h"

      ^~~~~~~~~~~~~~~

compilation terminated.

exit status 1

application.h: No such file or directory

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.
**

I do not know what application h is?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.