Wednesday 29 March 2017

Buchla Preset card - DIY mixer for 208 easel

One of the best things about the Buchla Music Easel is its program card.
It's really not just for presets ... esp the original card invented by Don Buchla back in the 1970s.


I'm guessing he may have wanted us users to experiment with electronic circuits.
Why else would Don have placed a mini "breadboard" with +/- 15V rails on the program card?

The Buchla SILI-CON CELLO from 1978 is a good example of his use of breadboard circuits in a fully
functioning system. It's a shame the current BEMI program cards have removed this homage to the age of DIY electronics.

This is my latest use of the card: a DIY mixer.
(The 10U system doesn't have a dedicated mixer).

The circuit is very simple.
Just one dual op-amp (TL072)

It's a basic unity gain inverting configuration. In the first half the 4 inputs are mixed into the inverting input of a op-amp. Since the output signal from this op-amp is inverted, the 2nd op-amp  re-inverts it. 
Power goes to pins 4 & 8. The unmarked resistor on the right is 1K

Thanks to Ken Stone for the original circuit. and Justin from MetroModular for his advice.
Ken's schematics show the possibility for using this as a CV mixer & attenuverter.

Breadboarding the circuit. Just two inputs on the left without pots.
It works on +/-12V above and +/-15V below.

Might try building a mixer using the OPA2134.
It's pinout is the same as the TL072.

Saturday 25 March 2017

Momentary push buttons - Turning a LED on with a button - arduino

Momentary push buttons
These are really common in arduino projects
 
  It's a basically 2 switches
 
The vertical leads are internally connected prior to pressing the button.
 
Pressing the button will close those switches at the top & bottom of the switch.
 
 
 
 
 
 

The circuit below, doesn't use any coding. The arduino board is simply a power supply.
 
 

 
 Code 1
This is a basic code using pulldown resistors and a switch.
It's a complicated way of turning a LED on.
The idea is to use software, rather than hardware to turn the switch on.
 
Black is ground.
Red is +5V
When the button is not pressed, the pin 2 is connected to ground (via the resistor).
Pin 2 thus reads LOW
When the button is pressed, Pin 2 is connected to +5V, and thus reads a HIGH.
 

Here is the code:
//----------------..........................................
/*
  Button

  Turns on and off a light emitting diode(LED) connected to digital pin 13,
  when pressing a pushbutton attached to pin 2.

  The circuit:
  - LED attached from pin 13 to ground
  - pushbutton attached to pin 2 from +5V
  - 10K resistor attached to pin 2 from ground

  - Note: on most Arduinos there is already an LED on the board
    attached to pin 13.

  created 2005
  by DojoDave <http://www.0j0.org>
  modified 30 Aug 2011
  by Tom Igoe

  This example code is in the public domain.

  http://www.arduino.cc/en/Tutorial/Button
*/

// constants won't change. They're used here to set pin numbers:
const int buttonPin = 2;     // the number of the pushbutton pin
const int ledPin =  13;      // the number of the LED pin

// variables will change:
int buttonState = 0;         // variable for reading the pushbutton status

void setup() {
  // initialize the LED pin as an output:
  pinMode(ledPin, OUTPUT);
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin, INPUT);
}

void loop() {
  // read the state of the pushbutton value:
  buttonState = digitalRead(buttonPin);

  // check if the pushbutton is pressed. If it is, the buttonState is HIGH:
  if (buttonState == HIGH) {
    // turn LED on:
    digitalWrite(ledPin, HIGH);
  } else {
    // turn LED off:
    digitalWrite(ledPin, LOW);
  }
}

 // -----------



Basic program # 2
Slightly different way to do the same thing.
 
 

The pushbutton is part of the pulldown resistor detection system

pin 9 reads either a HIGH or LOW signal. 
Its the input
When the button is not pressed, pin 9 is connected to 5V through the resistor... Thus HIGH.
Digital pins are instructed to stay LOW and don't put out 5V to light the LEDs.

When the button is pressed, the opposite occurs.

Here is the code
// ---------------------------------------------------------

int buttonstate = 0;

void setup()
{
  pinMode(9, INPUT);
  pinMode(13, OUTPUT);
  pinMode(6, OUTPUT);
}

void loop()
{
  buttonstate = digitalRead(9);
  if (buttonstate == HIGH) {
    // when not pressed the pull up resistor is on
    digitalWrite(13, LOW);
    digitalWrite(6, LOW);
  } else {
    // helpful single-line comment here
    digitalWrite(13, HIGH);
    digitalWrite(6, HIGH);
  }
  delay(10); // Delay a little bit to improve simulation performance
}
// -------------------------------------------------------

Superbooth - Berlin - Aussie Manufacturers





Oscillosaurus
https://www.facebook.com/oscillosaurus/

Golt!
https://www.facebook.com/skewy?hc_ref=SEARCH&fref=nf 
https://www.youtube.com/watch?v=M1oTKRkTU0o

Amalgamod
https://www.facebook.com/amalgamod/

Metromodular
http://metro-modular.com/ 
https://www.facebook.com/Metro.Modular/

NonlinearCircuits
http://www.nonlinearcircuits.com/

Beast-Tek
http://www.beast-tek.com/
https://www.facebook.com/BeastTek/

Worng Electronics
https://www.facebook.com/worngelectronics/

Cat Full Of Ghosts
https://www.facebook.com/cfogElectronics/?hc_ref=SEARCH&fref=nf
http://www.catfullofghosts.com/


Friday 24 March 2017

Buchla rhythmic patches - 200e & 208

Finally getting a easel system together which combines the 208 with 200e.

I've had this beautiful 10U case (by Jason Butcher) for a few years now.


Was in a quandary as to which modules to put in. Should it be all 200/ 200& 100 combo
or 200e?
 As the case is a variation of the classic Music Easel case from the 1970s (Halliburton)
a 208 is obilgatory.

I've decided to go with 200e for now.
It's good to have something different to the standard easel configs.
Seems like a good combo.




Wednesday 22 March 2017

Critter and Guitari Cellular Automata



Links re Cellular A:
Muffs - code
Github - more code
GetLoFi - DIY kit
Critter and Guitari - website
Circuit bent CA synth
Wikipedia
Muffs 2 - Mr Coops
Muffs 3 - PCB buy

Critter & Guitari Cellular Automata Synthesizer from Critter & Guitari on Vimeo.

--------

...
 Critter and Guitari Cellular Automata Synthesizer by Owen Osborn

I'm building a DIY version kindly provided by "n167tx" (Muffs)

The parts list is on the right.
You need to download the eagle file and upload to this viewer:
http://3dbrdviewer.cytec.bg/board


Eagle has a free viewer.
Download here:
http://www.autodesk.com/products/eagle/overview

Microcontroller used:
The AtMEGA8
http://www.atmel.com/Images/Atmel-2486-8-bit-AVR-microcontroller-ATmega8_L_datasheet.pdf

The AtmelAVR ATmega8 is a low-power CMOS 8-bit microcontroller

Links re AVR programming.
1. PocketMagic
2. Instructables
3. Youtube
4. youtube 2


LCD Displays - Arduino

 Here is a basic LCD project.
A LCD is a  Liquid Crystal Display.
It uses a 16x2 LCD display. 
The exercise uses an Arduino.
Some of the older LCDs that Ive tinkered around with have a different pin out, but the basic ideas are the same.
 
 
I'm doing this project as it's good way to learn a bit about this older but proven technology.
LCD displays are often used in DIY projects, so  this info should come in useful one day.
I'll add to this page over time as I fix the odd synth. 

 LCD's are pretty commonly found in older synths. It is sometimes possible to restore older synths with newer OLEDs , but you may wish to stay as close to the original.
 

For many instruments such as the Yamaha SY99 & Korg Wavestation, there are no OLED replacements. They need LCD display replacements.
 
LCD's are different to OLEDS.
LED LCD screens use a backlight to illuminate their pixels, while OLED's pixels actually produce their own light. 
The back light commonly burns out. 
Some of these LCDs had no backlight o

 

LCDs are thicker, heavier and consume more power than OLEDS.
 
 
1.VSS = GND
2. VDD = VCC = 5V
3. Vo = display contrast pin - you will often connect the wiper of a pot to this
4. RS = register select
5. RW = Read/Write
6. E = Enable
7 to 14. D0 to D7 = data pins 
15. A = Anode - for the LED Backlight
16. K = Cathode - for the LED Backlight
 
I've used TinkerCad to test these circuits.
 
 Example 1
This LED screen  displays "Hello World"
Such a simple project.
These are the connections:
The resistor is 220 ohms
The pot is 250K ohms


/*
  LiquidCrystal Library - Hello World

 Demonstrates the use of a 16x2 LCD display.  The LiquidCrystal
 library works with all LCD displays that are compatible with the
 Hitachi HD44780 driver. There are many of them out there, and you
 can usually tell them by the 16-pin interface.

 This sketch prints "Hello World!" to the LCD
 and shows the time.

  The circuit:
 * LCD RS pin to digital pin 12
 * LCD Enable pin to digital pin 11
 * LCD D4 pin to digital pin 5
 * LCD D5 pin to digital pin 4
 * LCD D6 pin to digital pin 3
 * LCD D7 pin to digital pin 2
 * LCD R/W pin to ground
 * LCD VSS pin to ground
 * LCD VCC pin to 5V
 * 10K resistor:
 * ends to +5V and ground
 * wiper to LCD VO pin (pin 3)

 Library originally added 18 Apr 2008
 by David A. Mellis
 library modified 5 Jul 2009
 by Limor Fried (http://www.ladyada.net)
 example added 9 Jul 2009
 by Tom Igoe
 modified 22 Nov 2010
 by Tom Igoe

 This example code is in the public domain.

 http://www.arduino.cc/en/Tutorial/LiquidCrystal
 */

// include the library code:
#include <LiquidCrystal.h>

/* initialize the library with the numbers of the interface pins
we are creating a LC object
The parameters of this object should be the numbers of the Digital Input pins of the Arduino Board 
respectively to the LCD’s pins as follow: (RS, Enable, D4, D5, D6, D7).
*/
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.print("hello, world!");
}

void loop() {
  // set the cursor to column 0, line 1
  // (note: line 1 is the second row, since counting begins with 0):
  lcd.setCursor(0, 1);
  // print the number of seconds since reset:
  lcd.print(millis() / 1000);
}
 --------------------------------------------------------
Example 2
Many thanks to
www.HowToMechatronics.com
This uses the same circuit as above.
 I've changed the code a bit, so it works with the old circuit.
 


* Arduino LCD Tutorial
*
* Crated by Dejan Nedelkovski,
* www.HowToMechatronics.com
*
*/
#include <LiquidCrystal.h> // includes the LiquidCrystal Library
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Creates an LC object. Parameters: (rs, enable, d4, d5, d6, d7)
void setup() {
 lcd.begin(16,2); // Initializes the interface to the LCD screen, and specifies the dimensions (width and height) of the display }
}
void loop() {
 lcd.print("Arduino"); // Prints "Arduino" on the LCD
 delay(3000); // 3 seconds delay
 lcd.setCursor(2,1); // Sets the location at which subsequent text written to the LCD will be displayed
 lcd.print("LCD Tutorial");
 delay(3000);
 lcd.clear(); // Clears the display
 lcd.blink(); //Displays the blinking LCD cursor
 delay(4000);
 lcd.setCursor(7,1);
 delay(3000);
 lcd.noBlink(); // Turns off the blinking LCD cursor
 lcd.cursor(); // Displays an underscore (line) at the position to which the next character will be written
 delay(4000);
 lcd.noCursor(); // Hides the LCD cursor
 lcd.clear(); // Clears the LCD screen
}
 
----------------------------------------------------
 
 
Links (Paul McWhorter)
 

Monday 20 March 2017

Deluge loop sampling - Using drum & midi tracks


I think this is the best way to sample a loop using the deluge.
It maintains length & tempo as your recording is perfectly matched with the deluge.
You will need to make 3 tracks. 


 Method :
1. make 2 tracks
    a) drum - gives the length & tempo
    b) midi track - plays the synth (add your midi notes into the deluge sequencer)

2. plug Audio out from synth ---> into line in of Deluge

3. make an audio / recording track
   a) press any track pad & press select
       display will show "audio1".
   b) press learn. & press the track again
       The display will show left(dot) or stereo (dot) etc
       The dot allows you to monitor
   c) press select

4.  press record button & check colour.
      want purple / magenta.

5. Press record

6. Press play

7. press "Audition" pad or "play" to stop


***** NOTE *********
If the deluge is just sending midi clock to a synth with its own internal sequencer
you still need a midi track on the deluge to trigger your external synth. It can be left empty of notes.
The rest of the steps are the same as above.


-------------------------------------------------------------------


Recording a second audio clip


---------------------------------------------------------------


Recording alternative loops
so we can play one or the other,... but not both at the same time.

Press record & change the audition pad colour to red.

--------------------------------------------------------------------------------------



Deluge & Moog fatty

Sunday 19 March 2017

Arduino Dimmable LED - Linear Equations

 Dimmable LED Project
 
This brings up the subject of Linear Equations.
 0 to 1023 - this is the read value (potValue)
0 to 255  - this is the write value range. (LEDvalue)
 
we need to read one value range and convert to another value range. 
 
Led Val = y axis
Pot Val = x axis

m= (y2 -y1)/(x2-x1)
m = (LED Val2 - LED val 1) / (pot val2 - potVal 1)
m = (255-0) / (1023-0) = 255/1023
or
y-y1 =m(x-x1)
or
LED Val - LED val 1 =m(pot val - potVal 1)
LED Val - 0 =m(pot val - 0)
LED Val =m(pot val)
 LED Val =m * pot val
 
Thus 
LED Val = (255/1023)pot val
 

 
 The code:
------------------
// declare your variables
int potPin=A1;// 0 to 255
int gPin=6; // green pin
int potVal; // 0 to 1023 - potentiometer
float LEDVal; // will calculate it depending on potVal
 
void setup()
{
  pinMode(potPin, INPUT);
  pinMode(gPin, OUTPUT);
  Serial.begin(9600); // opens serial monitor
 
}

void loop()
{
  potVal=analogRead(potPin);
  LEDVal=(255./1023.)*potVal;
  analogWrite(gPin,LEDVal);
  Serial.println(LEDVal);
}
--------------------------------------------------------------

Thanks to Paul McWhorter (Tutorial 14)

 ---------------------------------
-------------------------------------

Ambient Electronica - Elektron - Mutables - Buchla

Some recordings taken last Friday (17/3/17).
Rory, Andrew & I are practicing for an upcoming gig.
Instruments used were an Elektron A4, Roland TR8 Drum,
some Mutable Instruments Euro modules and Buchla-Sputnik clone modules.









Friday 17 March 2017

Arduino - analogWrite() Command & PWM

 The analogWrite command writes an analog value (PWM wave) to a pin. Can be used to light a LED at varying brightnesses or drive a motor at various speeds. 
 
Earlier, we learnt how to do digital writes -- where you can set a pin to output HIGH or LOW
There are13 pins that can do this.
 
After a call to analogWrite(), the pin will generate a steady rectangular wave of the specified duty cycle until the next call to analogWrite() (or a call to digitalRead() or digitalWrite()) on the same pin.
 
PWM Pins for the uno - 3,5, 6,9,10,11. (the numbers with the ~)
So rather than only being able to out HIGH & LOW voltages as in the digitalWrite command,
the analogWrite command allows us to do voltages between 0V & 5V

 

Syntax

analogWrite(pin, value)

The resistor is 330 ohm


 The code:

--------------------------------------------------------------------

// Variables
int redPin=9; // chooses the pin
int bright=255; // sets the brightness of LED
                // changing number will change the voltage

void setup()
{
  pinMode(redPin,OUTPUT);
}

void loop()
{
  analogWrite(redPin,bright);
  // use a number between 0 and 255
  // 0 = 0V, 255 = 5V, 125 = 2.5V
  // 1, 2, 4, 16, 32,64, 128, 256
  // 2 to the power of 8
  // 258 = 8 bits resolution
 
 
}

--------------------------------


PWM (Pulse width modulation) doesn't give us a true analog voltage.
It is a technique for getting analog results with digital means.
 
It creates square waves  ie, a signal switched between on and off.
If you repeat this on-off pattern fast enough the result is as if the signal is a steady voltage 

By changing the period of time (duty cycle) the signal is on 5V vs the period its on 0V, you get an average of the voltage, and this is your "fake analog voltage".

 
If you really want an analog voltage, you can place a capacitor ... this will smooth that up/down voltage fluctuation.
1000uF is a good value to use.
 (put the -ve of the capacitor to the -ve (ground) & the +ve to +ve)


 ---------------------------------
-------------------------------------
 

Friday 3 March 2017

Distortion - Deluge

There are 3 effects classified as distortion
Saturation
Bitcrust
Decimation
Saturation
This trims the highest points on a waveform, ....introducing
harmonic content.
This doesnt work at kit level.
Range: OFF, 1-15.

Decimation
trims the sample rate of the audio.
Removes high frequencies & adds aliased waveforms
This works at sound, kit and song level..
Range: 0-50. (this effects the amount of decimation)

Bitcrush
Trims the bit-depth. & adds sharp corners to waveforms.
Increases the high frequencies.
Works at sound, kit and song level.
 Range: 0-50. (this adjusts the amount of bitcrushing)

There are 3 ways to use the distortion:
Shortcuts, Menu diving or Sound level parameter knobs.

Shortcuts
1. Clip view
2. Shift + pad
3. Turn select

Menu-diving
1. Clip view
2. Press select
3. navigate to FX section
4. Select the effect
     ‘SATu’ - saturation, ‘dECi’ - decimation, or ‘CrUS’ - bitcrusher
5. turn select knob to adjust

Sound level parameter knobs.
1. clip view
2. Press [CUSTOM 1/2] button to select the affect parameter.
3. The (UPPER) gold knob changes DECIMATION amount
4. The (LOWER) gold knob changes the BITCRUSH amount
5. You can press [AFFECT ENTIRE] to affect the entire kit.