Thursday, 14 April 2016

Moog Mother 32 - Sequencer shortcuts

The Moog M32 has a neat sequencer. It's a bit cryptic to initially understand the sequencer controls.
Here are some basic shortcuts.

1. Modes of operation
    There are 2 modes of operation: Keyboard & Step
    Use the Shift + KB to enter Keyboard mode
    Use the Shift + Step to enter step mode

2. Memory
       There are 64slots (8 banks containing 8 slots/patterns)
       Each slot can save a pattern of up to 32 steps.
     

   Use shift + Pattern/(Bank) and the (KB)/ (STEP) arrow keys to navigate.
You can also use the keyboard to pick your banks & slots

3. Clearing memory prior to entering notes

    To erase and initialise a  sequence.
     Shift +  reset/accent + Pattern(Bank)
 There will now be a default single note pattern in the slot you have chosen.

4. First recordings:
    To record your sequence:
    a. enter KB mode ( Shift + KB)
     b. press (Shift) +  (Rec)
         The tempo LED which is normally a flashing red, will change to solid yellow.

    c. enter your steps.
        You can change octaves with the (KB)/ (STEP) arrow keys

5. Editing the sequence
       
    You can edit individual steps either while you are entering the notes, or after.
     You can do this either while paused on a note, OR
      by pressing shift & the note (you wish to edit).

   a. Rests
   To enter rests, just press the REST button instead of a note. (indicated with LED 8)
        
    or if you are changing a existing sequence,
     Press shift & the note (you wish to edit). The lamp under the step you are editing will blink.
     Then press the rest button.

      There are 4 other parameters you can edit per step:

       b. Gate length
           To edit the gate length of an existing note,
           Press shift & the note (you wish to edit). The lamp under the step you are editing will blink.
           Use the Gate length knob to change gate length..
           As you sweep the knob, the octave lamps with change to show the gate value.
             There are 8 gate length increments.
              1 = shortest length ( 1/8) the step length
              8 = Longest = a Tie
              The sustain switch must be engaged to hear gate length changes.
   
      c. Glide
           Press shift & the note (you wish to edit). The lamp under the step you are editing will blink.
           Use the glide knob.
           LED 5 (Octave location ) will light green during editing & playback to indicate that
           glide is active per step. (The glide value is global & not set per step)

       d . Ratching (or re-trigs)
            1-4 ratchets per step. Timing is scaled to the tempo
             The number of ratchets is displayed on the Octave LEDs (yellow)
             LED 6 (Octave location ) will light green during editing & playback to indicate that
            ratching is active per step.
             Press shift & the note (you wish to edit). The lamp under the step you are editing will blink.
             Press Shift & Turn the Glide knob.

       e. Accents
           Press shift & the note (you wish to edit). The lamp under the step you are editing will blink.
           Press the accent buton
            LED 7 (Octave location ) will light green during editing & playback to indicate that
            accents are active per step.

6. To save a sequence:
     a. First pick where you want to save it.
     b. Press Run/Stop (Rec).
     c. Press (Shift)+ Run/Stop (Rec).
     d.  Press (Shift)+ Run/Stop (Rec) again, to save to the current location..

      to save to a different location, use the Left/Right arrows to choose a  new slot
      and then press (Shift) + Run/Stop (Rec). 
   




Wednesday, 13 April 2016

Basic Chord theory - major chords & chord progressions

 These are some basics of chord theory and chord progressions on a really simple level to get started on Abelton.
They’re important for developing the structure of a song.
A chord consists of two, three or more notes that are played together at the same time. 
An example of a chord is called a triad.  This uses 3 notes.
 
 A chord progression is a series of chords played in a sequence.
 
To play a chord you need a polyphonic instrument.
Monophonic instruments are not suited for chords as they are limited to producing one note at a time.
 
Chords are built from a root note. This is usually the one with the lowest pitch.
 

Examples of which include:

  • Major
  • Minor
  • Augmented
  • Diminished
I'll cover major chord structure here.
Other's will be covered in later posts 

Major chord
A major chord/triad is built from a root note, a major third and a perfect fifth.  
Major triads are characterized by a happy and uplifting sound.
 
To build one you start with the root note, then add a note 4 semitones up.
Add the next note 7 semitones from the root.
 
The C  maj chord contains three notes – C, E and G
 
 

 
The F Major chord has these notes -- : F A C
 

 
 
The G chord
 G Major: G B D
 
 

 

 A major consists of the notes, A – C# – E


 

 Chord progressions.
This is a G maj chord which progresses to a A major chord.
All I did was copy the G maj chord, paste then raise it 2 semitones to make the A major chord.
This is a very basic chord progression.
 
 

Below is a F major to D maj chord progression


C-Major Chord Progressions

the C major scale has 7 notes, which means that there are 7 chords in the key of C major.
They are:
C major,D minor,E minor,F major,G major,A minor,B dim
 
Common progressions in the chord of C major are
C-G-C ( this is called a I-V-I progression)
C-F-G
C-F-C-G
C-G-F
C-Dm-F-G
C-Am-F-G (I-vi-IV-V)
C-G-Am-F (Called a I - V- vi - IV progression)
C-Am-Dm-G 
 
---------------------------------------------------

 

F-Major Chord Progressions

The F major scale has 7 notes. They are F G A Bb C D E.
The triad chords in the key of F major are F major, G minor, A minor, Bb major, C major, D minor, and E diminished. 
You can also add sevenths to these chords. 
These could be either a major seventh or a dominant seventh.
 
F - Bb - C
F - Dm - Bb - C
Gm7 - C7 - Fmaj7
 
 


 

Tuesday, 12 April 2016

Quick & dirty DIY Buchla to Euro conversion

These are my quick and dirty DIY notes for a Buchla to Euro power converter.
This blog is my diary for ideas, projects etc that are on going. It helps me to remember details that I usually loose if I don't write down.

This will probably change as I refine the circuit. if you have any suggestions for improvements, please let me know.

Buchla provides -15,+15,+12,+5.
Euro needs +12,-12,+5.
So we need a -12V for Buchla & Euro modules to exist in the same case.
Using a L7912CV voltage regulator.
 http://www.st.com/web/en/resource/technical/document/datasheet/CD00000450.pdf


This was my first attempt using perf board.
In the first attempt, the caps were both 1uF electros

Attempt # 2 ... using a 1uf & 2.2uf cap.

I built this for a friend about a year ago and he reports that it's still happily chugging along.
It might be a good idea to add a heat sink to the regulator. C1 is required for stability. A tantalum is recommended, though in this mock up I used a straight electro.

If electrolytics are used and you are planning to run lots of euro maybe ten times (or more) value capacitors should be selected.???

AND: a high current diode from input to output (1N4001 or similar)
should be introduced to protect the device from momentary input short circuit.

29/0416
Some new pics care of Cobramatic.
Paul has used tanties and he reports no problems.
This board doesn't use a heatsink -- will see how this goes over time.

The Buchla (BEMI) power board is on the top.


Disclaimer: 
I take no responsibility if this damages any Euro or Buchla modules or starts a fire. 
Modular gear requires care and more that a casual understanding of electronics.
Don't build this if you are not totally confident with your soldering skills.
These are just working ideas that will be refined over the coming years.

Tuesday, 5 April 2016

What do you need to program a microcontroller

 Microcontrollers are getting more common in synths.
So its important to get started understanding these if you are ever to master DIY, repairs, etc.
Soldering is just the first step. once you have it on your board and are happy you don't have any shorts
you will need to program the thing.

How do I do this? There are 4 things you need.
 
1. Microcontroller
2. programmer
3. IDE (integrated development environment)
   - compiler
   - text editor
4. basic circuit building skills 


--------------
 1. Microcontroller
There are lots of companies that make microcontrollers.
Each of these companies have their own programmers, compilers,  etc.
This makes it tricky when deciding which programmer to buy, as there isn't one programmer that
works for everything.

Lets look at 2 popular companies:
Microchip & Atmel

* Microchip produces microcontrollers with three very different architectures:
   8, 16, & 32 bit
Here is their website

8-bit (8-bit data bus)]
   -PIC10 and PIC12:
  - PIC16 series 
  - PIC18
   
16-bit (16-bit data bus) 
    - PIC24F
    - PIC24H
    - ds PIC 30
    - Ds PIC 33

32-bit (32-bit data bus) 
    - PIC 32
 

Atmel were acquired my Microchip so they share the same website
You can get started here

Here is a brief list of Atmel Microcontrollers

    ATmega168PA AU Atmel Arduino IC. SKU : RM1155. ...
    ATmega328 Microcontroller for Arduino. SKU : RM2940. ...
    ATmega8 Microcontroller. ...
    ATmega16 Microcontrollers. ...
    AT89S2051 Microcontroller. ...
    ATmega16 Microcontroller with Robosapiens Boot Loader Software. ...
    ATmega168 Microcontroller. ...
    ATmega32 Microcontroller.
 
------------------------------------------

2. programmer
The programmer is the device that is used to send the code from your
computer to the chip.
 
 Each company has many programmers.
Your choice will depend on how advanced you want to get.

Here is an example of a PIC/Microchip programmer

Below is a PIC K150 ICSP Programmer Kit

 

Here is a programmer for ATmel

...------------------------------------------

3. IDE
The integrated development environment is the software application.
It consists of at least a source code editor, build automation tools and a debugger.  

Each company will have its own IDE. There are also lots of 3rd party companies
 
MPLAB is a common IDE used for PIC microcontrollers
 
Atmel Studio is a common IDE for Atmel microcontrollers 
Atmel also uses Visual Studio from Microsoft.

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

4. Basic circuit building skills

When you buy a programmer, it will come with a manual, that shows how to connect it to your microcontroller.
You need to be able to read a basic circuit diagram and probably use a breadboard .

You will need to open up the data sheet for the microcontroller in question, and make the appropriate connections.
 

Links

+ Microcontrollers... Programmers  


OLED Bitmap graphics - part 1

  Displaying a image on the OLED

The OLED is 128 x 64 pixels
Thus any image needs to be the same size
 
In the code below is a Buchla image I made from a bitmap.
 

 
The section of the code made up of hexadecimal numbers is called the bitmap array.
This is the image.
To place a new image, just replace the hexadecimal section of the code.
 
// &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

static const unsigned char PROGMEM bitmapPic[] = {

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x03, 0xCC, 0x00, 0x00, 0x00, 0x01, 0xF0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x3C, 0x18, 0x00, 0x00, 0x03, 0xFF, 0x80,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x60, 0x03, 0xC0, 0x30, 0x00, 0x03, 0xF8, 0xFC, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0xC0, 0x3C, 0x00, 0xC0, 0x03, 0xFC, 0x01, 0xC0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x03, 0x03, 0xC0, 0x01, 0x83, 0xF8, 0x00, 0x1C, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x06, 0x7C, 0x00, 0x07, 0xF8, 0x00, 0x01, 0xE0, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x0F, 0x80, 0x00, 0x08, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x07, 0x00, 0x0C, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x70, 0x07, 0xF8, 0x00, 0x00, 0x3E, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x07, 0x83, 0xF8, 0x30, 0x00, 0x07, 0xCC, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x3F, 0xFC, 0x00, 0x60, 0x00, 0x78, 0x18, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xFE, 0x00, 0x00, 0xC0, 0x07, 0x80, 0x20, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x78, 0x00, 0xC0, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x40, 0x00, 0x06, 0x0F, 0x80, 0x01, 0x83, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x60, 0x00, 0x0C, 0xF0, 0x00, 0x03, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x20, 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x03, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0x07, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0xBC, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x03, 0xC0, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x3C, 0xC0, 0xC3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x01, 0xE0, 0x41, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x0E, 0x00, 0x0F, 0x81, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x18, 0x00, 0xF0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x30, 0x0F, 0x20, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x60, 0x78, 0x10, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xC7, 0x80, 0x18, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0xF9, 0x00, 0x08, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0x80, 0x80, 0x0C, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0x00, 0xC0, 0x04, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x00, 0x40, 0x36, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x80, 0x61, 0xFE, 0x08, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x80, 0x23, 0x03, 0x0C, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xC0, 0x3E, 0x03, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x40, 0x18, 0x03, 0x06, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x60, 0x18, 0x03, 0x06, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x20, 0x30, 0x02, 0x79, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x30, 0x30, 0x07, 0x81, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x10, 0x30, 0x0C, 0x01, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x18, 0x30, 0x0C, 0x00, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x08, 0x30, 0x38, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x0C, 0x18, 0xE0, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x04, 0x1F, 0x80, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x06, 0x30, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x02, 0x20, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x03, 0x60, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x01, 0xC7, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
 
void setup() {
  Serial.begin(115200);
 
  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
    Serial.println(F("SSD1306 allocation failed"));
    for(;;);
  }
  delay(2000); // Pause for 2 seconds
 
  // Clear the buffer.
  display.clearDisplay();
 
  // Draw bitmap on the screen
  display.drawBitmap(0, 0, bitmapPic, 128, 64, 1);
  display.display();
}
 
void loop() {
// &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
 

 
 
 
 
 
//The raw code is here:

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

static const unsigned char PROGMEM bitmapPic[] = {

// place bitmap code here

};
 
void setup() {
  Serial.begin(115200);
 
  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
    Serial.println(F("SSD1306 allocation failed"));
    for(;;);
  }
  delay(2000); // Pause for 2 seconds
 
  // Clear the buffer.
  display.clearDisplay();
 
  // Draw bitmap on the screen
  display.drawBitmap(0, 0, bitmapPic, 128, 64, 1);
  display.display();
}
 
void loop() {

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

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

Saturday, 2 April 2016

ARP 2500 - Modcan'd

Playing around with some Eurorack sequencers.
The Modcan Touch is shaping up nicely as a partner for the ARP2500

Taking some samples:


It syncs perfectly with the ARP 1027 sequencer.

 The 1004-T oscillator.

The 1047 filter.

The 1046 Envelope Generator.

The patch.

i2c LCD & Arduino - part 2

 A bit more about making graphics, how to position them
and scroll through different screens / menus

Part 1 is here
 

 
 
 The code:
// **************************************


#include <Wire.h>

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
// RS, E, D4, D5, D6, D7
byte heart[] = {
  0x00,
  0x0A,
  0x1F,
  0x1F,
  0x0E,
  0x04,
  0x00,
  0x00
};

byte Speaker[] = {
0b00001,
0b00011,
0b01111,
0b01111,
0b01111,
0b00011,
0b00001,
0b00000
};

byte Sound[] = {
0b00001,
0b00011,
0b00101,
0b01001,
0b01001,
0b01011,
0b11011,
0b11000
};

byte Bell[] = {
0b00100,
0b01110,
0b01110,
0b01110,
0b11111,
0b00000,
0b00100,
0b00000
};

  byte Alien[8] = {
0b11111,
0b10101,
0b11111,
0b11111,
0b01110,
0b01010,
0b11011,
0b00000
};

byte Skull[] = {
0b00000,
0b01110,
0b10101,
0b11011,
0b01110,
0b01110,
0b00000,
0b00000
};

byte Lock[] = {
0b01110,
0b10001,
0b10001,
0b11111,
0b11011,
0b11011,
0b11111,
0b00000
};
 
void setup() {
   lcd.begin(16, 2);
  lcd.backlight();             // turn backlight on
  lcd.createChar(1, heart);    // define a symbol for memory position 1
  lcd.createChar(2, Speaker);    // define a symbol for memory position 2
  lcd.createChar(3, Sound);    // define a symbol for memory position 3
  lcd.createChar(4, Bell);    // define a symbol for memory position 4
  lcd.createChar(5, Alien);    // define a symbol for memory position 5
  lcd.createChar(6, Skull);    // define a symbol for memory position 6
  lcd.createChar(7, Lock);    // define a symbol for memory position 7

 
}
 
void loop() {
  lcd.clear();                 // clear the screen

  screen1();                   // execute screen1 function
  delay(1000);                 // pause for 1 second

  lcd.clear();                 // clear the screen

  screen2();                   // execute screen2 function
  delay(1000);                 // pause for 1 second

   lcd.clear();                 // clear the screen

  screen3();                   // execute screen3 function
  delay(1000);                 // pause for 1 second

   lcd.clear();                 // clear the screen

  screen4();                   // execute screen4 function
  delay(1000);                 // pause for 1 second
}

void screen1() {
  lcd.setCursor(0, 0);         // set the cursor to position 1, line 1
  lcd.print("I ");           // write on the screen
  lcd.write(1);                // write symbol from memory position 1
  lcd.print(" Synths");  // write on the screen

  lcd.setCursor(1, 1);         // set the cursor to position 2, line 2
  lcd.print("I ");           // write on the screen
  lcd.write(2);                // write symbol from memory position 2
  lcd.print(" Synths ");  // write on the screen
   lcd.write(5);                // write symbol from memory position 5
}

void screen2() {               
  lcd.setCursor(2, 1);         // set the cursor to position 3, line 2
  lcd.print("Buchla ");             // write on the screen
  lcd.write(3);                // write symbol from memory position 3
  lcd.print(" Rules");       // write on the screen
}

void screen3() {
  lcd.setCursor(0, 0);         // set the cursor to position 1, line 1
  lcd.print("Happy Easter");           // write on the screen
  lcd.write(1);                // write symbol from memory position 1
  lcd.write(2);                // write symbol from memory position 2
  lcd.write(3);                // write symbol from memory position 3
 
  lcd.setCursor(1, 1);         // set the cursor to position 2, line 2
  lcd.print("I ");           // write on the screen
  lcd.write(4);                // write symbol from memory position 2
  lcd.print(" Synths");  // write on the screen
}

void screen4() {
  lcd.setCursor(0, 0);         // set the cursor to position 1, line 1
  lcd.write(1);                // write symbol from memory position 1

 lcd.setCursor(2, 0);         // set the cursor to position 3, line 1
  lcd.write(2);                // write symbol from memory position 2

  lcd.setCursor(4, 0);         // set the cursor to position 5, line 1
  lcd.write(3);                // write symbol from memory position 3

   lcd.setCursor(6, 0);         // set the cursor to position 7, line 1
  lcd.write(4);                // write symbol from memory position 4

   lcd.setCursor(8, 0);         // set the cursor to position 9, line 1
  lcd.write(5);                // write symbol from memory position 5

   lcd.setCursor(10, 0);         // set the cursor to position 12, line 1
  lcd.write(6);                // write symbol from memory position 6

   lcd.setCursor(12, 0);         // set the cursor to position 14, line 1
  lcd.write(7);                // write symbol from memory position 7
 
  lcd.setCursor(1, 1);         // set the cursor to position 2, line 2
 
  lcd.write(4);                // write symbol from memory position 2
 
}
// ***************************************************




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

Saturday, 26 March 2016

Friday, 25 March 2016

Tone() function - Arduino

Arduino - The Tone function
The Tone function is an easy way to make some noise with your Arduino.
 
A basic circuit. Example 1
The resistor is 100 Ohms.
Just need a Piezo speaker, breadboard & an Uno
 
The black leads connect to GND
 
 we need just 2 arguments
  1 pin
  2 frequency in Hz - determines pitch
 
tone(Pin, Hz)
tone(piezoPin, 100)
The frequency can be any number between 0 and 65,535.
Note that most noises that can be heard with the human ears range between 2k & 5k
 

Here is the code:
//-------------------------------------
// demo of tone function

// variables
int piezoPin = 8;

void setup(){
}

void loop(){
 
  /*
  we need just 2 arguments
  1 pin
  2 frequency in Hz - determines pitch
  */
  // create a tone ... tone();
  tone(piezoPin, 100); // play around with this last number
 
}
//---------------------------------------------------
 
 Example 2
Creating a beat.
Add a duration period - the last parameter (and a delay to your code).
 
The tone function is
tone(Pin, Hz,duration in milliseconds)
tone(piezoPin, 100, 500)
 
Here is an example of your new code
 
//----------------
// demo of tone function 2

// variables
int piezoPin = 8;

void setup(){
}

void loop(){
 
  /*
  we need just 3 arguments
  1 pin
  2 frequency in Hz - determines pitch
  3 duration
  */
  // create a tone ... tone();
  tone(piezoPin, 3000, 500);
 
  delay(1500);
 
}
//-----------------------------
 
Note, to add 1 second between each sound
you need to use a duration of 500ms, and a delay of 1500ms
 
 
Limitations
Don't use analogWrite on pins 3 & 11 if you are using the tone function

 
 Links
+ https://www.programmingelectronics.com/an-easy-way-to-make-noise-with-arduino-using-tone/
+ https://www.youtube.com/watch?v=1_LMAgO14z0
 
 ---------------------------------
------------------------------------- 

Buchla 360

Sadly this is only a panel, but its a glimpse into the world of the Buchla 300.

What is it? It's part of  the Buchla 300 Series Electric Music Box.

The 300 is described as a Digital/Analogue Hybrid Music system.
I have never seen one in the flesh and wonder what they were like.

The 360 is very rare. Formally, its called the "360 Programmable Octal Signal Source".
It's a 8 Voice Digital Synthesizer with 3 oscillators and a dedicated Buchla Lowpass/Gate per voice.

The 300 series were basically computer controlled 200 systems and it marked a return to analog modular synthesis when the rest of the world was going digital. ....mid 1970s's.
It used a patch programming language (Patch IV) to control the mostly 200 modules.
What made this special was that though many of the the modules were analog, the 300 offered digital control. This same concept of patch control is found in the modern Buchla 200e.

The 300 Series Controller/Processor was programmed using the 221 Kinesthetic Input Port touch keyboard.

The 221 had two modes :Programming or Performance.
The 221 had 50 real touch sensitive keys which could function in the +0 or in the +50 performance modes.
Special keys for programming in the Patch IV language included CMND, EXEC, DEL,  KEY,  SEQ, VOLT,  FUNC,  SEQ, SUBR, JUMP,  SKIP, INTP, SET, etc. etc.
Patch IV was written in 8080 assembly language, and used 28 K bytes of
RAM & 8 K of ROM. The 300 processor was the Intel 8080. This was a 8-bit micro processor originally released in 1974.

The 8080 was the basis of the MITS Altair 8800, for which Bill Gates and Paul Allen wrote BASIC.
The rest is history.

Please let me know if there are any errors or omissions.

Tom Roberts - National Gallery of Australia

Last weekend I made a flying visit to Canberra, the National Capital of Australia.
I visited a few friends and dropped by the National Gallery to see the Tom Roberts
exhibition. Most of these pictures have been with me since I was a child.
They are part of my consciousness, and helped me understand Australia, the country that I today
call home. I was born in Malaysia.

Tom Roberts was born in England & came to Australia at the age of 13. He lived half his life outside the country. Maybe he never quite knew where he belonged. ???
The picture above is called "Coming South".
It depicts the long journey to Australia from Europe. Though I arrived by plane, the sea is still the most
common route most immigrants use.

Its a beautiful composition with a dreamy like quality in the paint. You can see the ship move... its heaving to the right. The funnel, the chimney, the foreground all tilt.

Roberts, probably had to return often to the "mother country" to further his career. But I think you can see from his paintings that his heart belonged to Australia.

This is an old friend. I've looked at this countless times before and can't get over how relaxed it all this.
It's called "Bailed Up" and depicts a highway robbery. The man on the horse to the left is slouching forward with his gun pointing to the ground. The bushranger (Captain Thunderbolt) looking into the coach may as well be asking the occupants if they are having a nice day. Captain Thunderbolt was known as the "Gentleman Bushranger".

This is William Strutt  - 1887 - "Bushrangers on St Kilda Road". I understand that this is also Captain Thunderbolt.

I think Bailed up is more an examination of the Australian Bush. The heat, the glaring light, the vertical landscape are all beautifully portrayed. It's often described as Australia's greatest landscape painting.

This is a quite complex composition. It's called "the breakaway". The rider's almost futile attempts to control his sheep is emphasized by the tilt of the land, his outstretched arm & leg.

This is known as "the BIG Picture". At 5.65m across and 3.6m tall, the work took 2.5 years to paint.
Officially titled "The Opening of the First Parliament of the Commonwealth of Australia by HRH The Duke of Cornwall and York (later HM King George V), May 9, 1901"

Poor Tom ... he had to paint 269 separate portraits. It must have felt like hard labour. Roberts himself reportedly dubbed the painting his “Frankenstein of 17 feet”.

I much prefer this smaller study:

Below we have "The Golden Fleece"
This along with "Shearing the Rams" are two iconic paintings depecting shearing... the backbone of the nation's wealth and prosperity.

In titling the first painting, "The Golden fleece" was Roberts referencing classical antiquity - Jason & the Argonauts.  Tom was heavily criticized at the time for his depection of manual labour. Critics of the time said, "well it’s a bit vulgar to paint something so realistic, a great artist should connect to the ideology of the Greeks.” (Smith). But I think the figures are noble & heroic.

In a letter to The Argus on July 1880, he wrote: “Being in the bush and feeling the delight and fascination of the great pastoral life and work I have tried to express it … the quick running of the wool carriers, the screwing of the presses, the subdued hum of the hard, fast working and the rhythmic click of the shears, the whole lit warm with the reflection of Australian sunlight.”


Just love this painting. It's Lake Como, Italy. 1913.
Robert's emphasis of the triangles & geometry , the glassy water, misty light.


All, in all, a great exhibition.If you do get a chance to visit Canberra over the Easter weekend, dont miss it. 
http://nga.gov.au/