You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
OpenTheremin_V3_with_MIDI/README.md

127 lines
6.1 KiB

7 years ago
This is V1.0. If you are interested, a much enhanced V2.0 is close to delivery under "V2-Project" branch :
https://github.com/MrDham/OpenTheremin_V3_with_MIDI/tree/V2-Project
7 years ago
It will be pulled soon to this "master" branch.
7 years ago
7 years ago
## Open Theremin V3 with MIDI interface control software for Arduino UNO
7 years ago
Based on Arduino UNO Software for the Open.Theremin version 3.0 Copyright (C) 2010-2016 by Urs Gaudenz
https://github.com/GaudiLabs/OpenTheremin_V3
7 years ago
Urs makes also a very clear presentation of this MIDI feature on his website (many thanks !):
http://www.gaudi.ch/OpenTheremin/index.php?option=com_content&view=article&id=200&Itemid=121
### Don't click on the files!
Click on the "Download ZIP" Button to the right or [Click here](https://github.com/GaudiLabs/OpenTheremin_V3/archive/master.zip)
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"
7 years ago
3. In "Application.cpp", take care of selecting MIDI mode that correponds to your cituation (put "//" in front off inadequate line - MIDI through serial is selected by default here):
7 years ago
7 years ago
Serial.begin(115200); // Baudrate for midi to serial. Use a serial to midi router http://projectgus.github.com/hairless-midiserial/
7 years ago
7 years ago
//Serial.begin(31250); // Baudrate for real midi. Use din connection https://www.arduino.cc/en/Tutorial/Midi or HIDUINO https://github.com/ddiakopoulos/hiduino
7 years ago
I tested "Hiduino" and "midi to serial" modes, both are OK.
7 years ago
7 years ago
4. Selecting the correct usb port on Tools -> Serial Port
5. Select the correct arduino board from Tools -> Board
6. Upload the code by clicking on the upload button.
7 years ago
### Added and removed compare to Open Theremin V3.
7 years ago
Serial communication implemented for program monitoring purpose was removed (Particularly during calibration).
7 years ago
If you need to monitor calibration for antenna problem fixing, please use original master branch from
7 years ago
https://github.com/GaudiLabs/OpenTheremin_V3.
7 years ago
Serial port is used to send midi messages now.
### How does it works ?
7 years ago
7 years ago
PITCH :
7 years ago
It uses first note detected at volume rise to generate a NOTEON.
Then it uses PITCHBEND to reach pitch as long as pitch bend range will do.
Beyond it generates a new NOTEON followed by a NOTEOFF for the previous note (legato).
7 years ago
Pitch bend range can be configured (1, 2, 7, 12 or 24 semitones) to align with synth's maximum capabilities.
7 years ago
One exception is that I desactivated pitch bend in 1 semitone mode because portamento does a better job then.
7 years ago
7 years ago
VOLUME:
7 years ago
It generates VOLUME continuous controler, starting NOTEON and ending NOTE OFF (when playing staccato).
7 years ago
The trigger volume can be configured so as we have some volume at note attack on percussive sounds.
7 years ago
CONFIGURATION:
There is two calibration mode:
7 years ago
1. If REGISTER POT turned counter clockwise at entering in calibration mode
7 years ago
-> Runs normal calibration of antennas.
7 years ago
2. If REGISTER POT turned clockwise at entering in calibration mode
7 years ago
-> Records midi settings as per pot position BEFORE entering in calibration mode:
7 years ago
VOLUME POT : sets volume trigger level
7 years ago
PITCH POT : sets pitch bend range (1, 2, 7, 12 or 24 semitones)
7 years ago
Use exactly same pitch bend range on your synth. Maximum setting possible is recomended.
7 years ago
TIMBRE POT : sets Channel. In the absence of graduation, timbre variation may help
7 years ago
(Wave Form 1 low = CH1, WF 1 High = CH2, WF 2 Low = CH3, etc...)
7 years ago
MUTE BUTTON:
7 years ago
Sends ALL NOTE OFF on selected channel and stay in mute until it's pushed again.
7 years ago
AUDIO:
7 years ago
Audio processing from antennas to output jack, including pots, LEDs and button functions, is exactly the same as in open theremin V3.
7 years ago
7 years ago
7 years ago
### What can I do to get a theremin like glissando?
7 years ago
7 years ago
Set pitch bend range of the theremin with a high value (12 semitones or 24 semitones).
Set pitch bend range of the synth with the same value
7 years ago
Closest to real theremin settings (pitch bend range = 24 semitones):
7 years ago
7 years ago
1. Set pots like this: Volume = Min, Pitch = Max, Register = Max, Timbre = Midi channel.
7 years ago
7 years ago
2. Push button for two seconds.
7 years ago
7 years ago
3. Then set pots as for audio (Example : Volume = Mid, Pitch = Mid, Register = Wanted octave, Timbre = any)
7 years ago
7 years ago
4. Play (you can mix synth and audio if you want)
7 years ago
7 years ago
### If I do not trigger with the volume hand it also seems to trigger a new tone with the pitch antenna. Guess this is how MIDI works.
7 years ago
Yes, with settings above, if you trigger a note (with volume loop) and go in one direction (with pitch antenna) a new note will be triggered after two octaves.
This is a limitation of midi. Maybe some synth can perform pitch bend on more that 2 octaves but none of mine does...
7 years ago
7 years ago
### Tweak
In the following lines of application.cpp:
// Set key follow so as next played note will be at limit of pitch bend range
midi_key_follow = (double)(midi_bend_range) - 0.2;
The "-0.2" could be changed into another value from "0" to "-0.5" depending on how good you are to reach center of the note that you play. "0" is for very good players. "-0.5" is very permissive and generates note toggling in 1 semitone mode. "-0.2" is the limit where my favourite chromatic tuner's green LED turns off (and it is OK for me).
### LICENSE
7 years ago
Original project written by Urs Gaudenz, GaudiLabs, 2016
7 years ago
GNU license. This Project inherits this 2016 GNU License.
7 years ago
Check LICENSE file for more information
7 years ago
All text above must be included in any redistribution