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
 
}
// ***************************************************




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