Friprogramvarusyndikatet OscPocketO – OPO Introduction Welcome to the OscPocketO - Arduino Pocket Synth! The OsckPocketO (OPO) is a family of affordable and portable sound generators running open source software! All software is running on the Arduino microcontroller, including sound generation thanks to the awesome Mozzi library This guide assumes you know how to connect, edit and send sketches to an Arduino.
Friprogramvarusyndikatet OscPocketO – OPO • an optional second detunable oscillator • the ability to save and load synth settings and patterns to EEPROM (a memory space that does not disappear when the Arduino is powered off) • functions to create patterns •...
Friprogramvarusyndikatet OscPocketO – OPO How to use it Figur 1: Overview front The OPO is controlled by switching to different modes using the SELECT button. Use the UP button to increase a value, DOWN to decrease a value, and LEFT and RIGHT to move the cursor.
Page 6
GATE. Set gate of notes played. Gate is expressed as percent of 1/16th. Figur 2: Illustrating Attack, Gate and Release SHIFT. Transpose (UP/DOWN) and Shift the sequence (LEFT/RIGHT). WAVEFORM. Set the waveform of the (first) oscillator: SIN (sine), TRI (triangle), SAW (sawtooth) and SQUARE (square). ATTACK. Set the Attack time in ms.
WAVEFORM2. Activate and set the waveform of the second oscillator: NONE, SIN (sine), TRI (triangle), SAW (sawtooth) and SQUARE (square). DETUNE2. Detune the second oscillator relative to the first. The value is in Hz and is added to the frequency of the first oscillator.
Page 8
Friprogramvarusyndikatet OscPocketO – OPO • Snare = 2 • Hihat = 4 • Clap = 8 • Crash = 16 • Tom = 32 An example: A value of 17 means that this step will play Kick (1) and Crash (16), 1 + 16 = TEMPO.
Friprogramvarusyndikatet OscPocketO – OPO Syncing several OPO machines Figur 3: Overview connections for syncing several OPO machines One OPO has to be the Conductor. This is the machine that sends synchronization data to the other OPOs called Players. 1. Setup Conductor.
Friprogramvarusyndikatet OscPocketO – OPO 2. Play Conductor. Start: Play. You can tweak sounds and switch patterns on all OPO machines. You change tempo (only) on the Conductor.
Friprogramvarusyndikatet OscPocketO – OPO How to build it Contents • Arduino Uno R3 (an extra pin list might be included, this is not used in this project) • a USB cable • LCD Keypad shield • Audio/headphone jack (3.5 mm female) •...
Page 12
Friprogramvarusyndikatet OscPocketO – OPO Figur 5: Schematic of connections and buttons Figur 6: Cables connected to pins according to schematic (not SYNC GND )
Friprogramvarusyndikatet OscPocketO – OPO Equipment • a computer running Arduino IDE • 1 pair of wire cutters • 1 pair of flat-pointy pliers • equipment for soldering ◦ Soldering iron ◦ Solder • headphones, mixer or a computer with audio in. See this tutorial for ideas on how to listen: <https://sensorium.github.io/Mozzi/learn/introductory-...
Page 15
Friprogramvarusyndikatet OscPocketO – OPO • audio/headphone jack • wires • for syncing: ◦ 3 x female - male Arduino/electronics patch cables ◦ 1 x female - female patch cable...
Friprogramvarusyndikatet OscPocketO – OPO Hardware We are going to: 1. attach the LCD Keypad shield 2. attach the Audio jack to be able to hear our synth 3. optionally attach the potentiometers to control the synth 1. LCD Keypad shield Info: Before attaching the LCD Keypad shield we need to make sure that it does not connect to pin 10 (D10) on the Arduino.
Page 17
Friprogramvarusyndikatet OscPocketO – OPO Figur 9: Back of Arduino with indicators (1) for bent pin, and (2) for pin D10 Now attach the LCD Keypad shield to the Arduino. It is easier if you first place the Arduino on a firm surface (we are later going to do some soldering, make sure that surface can handle a few burn marks.) Make sure all the pins of the shield, on both sides, aligns with...
Friprogramvarusyndikatet OscPocketO – OPO See the Problem Solving section if you have any problems. Don’t forget to disconnect the Arduino from your computer before continuing. 2. Audio jack The Audio jack is connected to D10 and GND on the Arduino.
Figur 11: Schematic with indicators of connections to solder You can now try to download the OscPocketO code to the Arduino. Connect the audio out to a headphone or a speaker. Warning: Remember that the signal level of the OPO might be a bit high (hot) so don’t plug it into your expensive stereo amplifier.
Friprogramvarusyndikatet OscPocketO – OPO • Cut the female-male patch cable in two and solder the oposite end of the female part to D11 (SYNC IN) and the male to D12 (SYNC OUT). • Cut the female-female patch cable in two and solder one half to GND. It is easiest to select the 2nd GND (where an imaginary "D14"...
TimerOne/config/known_16bit_timers.h #define AUDIO_CHANNEL_2_PIN TIMER1_A_PIN Install the OPO sketch Download the OPO from <https://oscillator.se/arduino/> (which you probably already have done as you are reading this manual). Chose which OPO you would like to run: Synth or Drums. For Synth open the code_synth/code_synth.ino or for Drums open code_drums/code_drums.ino in the Arduino...
Friprogramvarusyndikatet OscPocketO – OPO Expansions Control the filter with potentiometers Take two potentiometers. We use two 10k Ohms. Connect them according to the diagram (A1 and A2). Figur 12: Connecting the optional potentiometers for Cutoff frequency and Resonance Info: Make sure you set “Filter Mode” to “POTS”.
Friprogramvarusyndikatet OscPocketO – OPO Optional: Building without the LCD Keypad shield If you don't have a LCD Keypad shield you can build it anyway by replacing the LCD Keypad shield with a DYI keypad or: • 1 LCD Screen with 16x2 characters (compatible with Hitachi HD44780 driver) •...
Page 24
Friprogramvarusyndikatet OscPocketO – OPO Test the connections using the test code: code_test_analog_buttons.ino. See the section Problem solving: The Buttons at the end of the manual if you need help. Links • http://tronixstuff.com/2011/01/11/tutorial-using-analog-input-for-multiple-buttons Connect the LCD to the Arduino. The code that defines which pins to use can be found at...
Friprogramvarusyndikatet OscPocketO – OPO Problem solving The screen You can test the LCD screen using the sketch code_test_lcd.ino in the code_test folder. It should display "hello, world!" and a ticking time on your screen. If not you can try the following: •...
Page 26
Friprogramvarusyndikatet OscPocketO – OPO } else { aUIButton = UI_BUTTON_NONE; First the code reads the value on pin A0. This puts a value from 0 to 1023 in the variable aUIButtonValue. This value will be different depending on the pressed button.
Need help?
Do you have a question about the OPO and is the answer not in the manual?
Questions and answers