Sunday, 27 November 2016

Fairlight CMI - Page 9. The Keyboard Sequencer

Page 9 - The Keyboard Sequencer
Page 9 allows you to record what you play on the music keyboard.
It also allows you to record the settings of the 6 faders & 5 switches.

Multiple over dubbing can be done by merging different sequencer recordings. You can record a new sequence while replaying a previously recorded sequence.
You may play back recorded sequences at any speed without changing pitch.
Different voices may play the same sequence.

Page C (Music Composition Language) Files can be converted to page 9 sequence files.

.....
Here is Page 9 with replay file ALHUMBRA.SQ loaded.

The sequence file was loaded from this disk which can be viewed via page 2:
The sequence files have the ending ".SQ"


Here are some help sheets for page 9:
To access page 9 type
P9<return>

To access page 9 help type
H9<return>
To step through the help pages use the ADD & SUB buttons on the keyboard.


There are 4 main commands: Record, Stop, Replay, Merge.

To RECORD a sequence type:
REC,filename<return>

Eg: to record a sequence named JONO1
Type:
REC,JONO1<return>

The resulting file will be: JONO1.SQ

Recording begins when the word RECORD lights up.
The other commands are STOP, REPLAY & MERGE

To STOP  a sequence type:
S<return>

To REPLAY  a sequence type  
REP<return> (if the file has already been assigned)
Or
REP,filename<return>
or
REP,filename,xx,return>
xx = number of repetitions
Eg: REP,JONO1,48<return>    ..................replays the JONO1.SQ sequence 48 times.

To MERGE a sequence type:
M<return>
The merge function consists of replaying & recording at the same time.
A file is replayed and then re-recorded as a new file.
This allows for overdubbing.
The resulting sequence can then be selected as the reply file and the whole process, repeated.



Merge command examples:
M,BAS1,BAS2<return>
This command replays file BAS1.SQ and records a new file BAS2.SQ

M,BAS1,JONO2,8<return>
This command replays file BAS1.SQ (8 times)and records a new file JONO2.SQ




Input stream and Keyboard Numbers.
 THe CMI has 8 voice polyphony..... 8 virtual keyboards.
Key releases and depressions are sorted out into 8 input streams.
These input streams can be assigned to any of the 8 keyboard numbers through this
INPUT STREAM to KEYBOARD NUMBER table.

Use the light-pen or the alpha-numeric keyboard to highlight  the relevant number.
If using the keyboard use the <arrow> keys to tab then type:
n<set>       .................... where n = the keyboard number 0-8,

You can set up the desired keyboard configuration on page 3.

If you assign a keyboard number of zero, you will in effect turn off the input stream.
Any changes made to the INPUT STREAM to KEYBOARD NUMBER table will be saved in the record (SQ) file.

SPEED.
The sequencer measures time in units called MICROBEATS.
To change the speed use the <arrow> key to tab then type:
nnnn<set>      or nnnn<add or sub>
Range : 0 - 65535
These microbeats are set by the CMI's system clock cycles (1.00525MHz)
Thus the smaller the number, the faster the speed of the clock.
So a speed of 2000 is twice as fast as 4000

To write the current speed to the replay (SQ) file type:
SPEED<return>     or        SP<return>

A speed of 5236 = 60 BPM
A speed of 2618 = 120 BPM

CLICK
A click occurs for each beat in a pattern.

On Page R the click is always ON.
The click metronome comes out at the rear of the CMI at
a) Pin 3 of the Sync socket
b) Monitor speaker output
c) Phones output.

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

Nara, Japan

Nara. Japan's ancient capital (8th century).
Today, it's the capital of Japan’s Nara Prefecture, in south-central Honshu.


Nandaimon, the Great Southern Gate.

Main Temple, Nara.
Tōdai-ji temple.
Tōdai-ji (東大寺?, Eastern Great Temple) is a Buddhist temple complex, that was once one of the powerful Seven Great Temples, located in the city of Nara, Japan. Dates to 728 AD.
It's the world's largest wooden building.

. Daibutsu, Tōdai-ji's 15m-high bronze Buddha.


Komokuten, one of the pair of guardians in the Tōdai-ji temple.


According to the legendary history of Kasuga Shrine, a mythological god Takemikazuchi arrived in Nara on a white deer to guard the newly built capital of Heijō-kyō. Since then the deer have been regarded as heavenly animals, protecting the city and the country.
Tame sika deer (also known as spotted deer or Japanese deer) roam through the town, especially in Nara Park. (Wikipedia).



On the park's east side is the Shinto shrine Kasuga Taisha, which dates to 768 A.D. and more than 3,000 lanterns.





Saturday, 26 November 2016

Fairlight Synth - Initial pics

Thought I'd upload some pics while this baby is behaving.
At times she has a mind of her own.:-)

This is the first page you will see when the Fairlight boots: Page 1, the Index.

Page 2: Disk Control
Provides a directory of all the files currently loaded.
Type P2<return>  to access page 2.
Files with the ending ".VC" are voice or sound files.
Files that end in ".IN" are instrument files.

Type L,A,filename<return> to load a file.

eg to load a file named GONG1.VC
type L,A,GONG1 <return>
You don't need to add the .VC after the file name. 


 Typing L,A,filename<return>
actually loads the voice file into registry A.
There are 8 registries named A,B,C,D,E,F,G,H


So to load a voice file into registry B type:
 L,B,filename<return>
(after you have selected registry B)


This is Page 6
Page 6 (Waveform drawing) can be accessed by typing P6<return>

This page allows direct drawing of audio waveforms using a lightpen.

This is page 7 (Control Parameters)
This allows you to set, modify & control the parameters for each sound file such as the volume, attack, decay, portomento, etc

You can of course reach this page by typing P7.
  
And finally the famous "Page D"

It's the Voice Waveform Display.
You reach it by typing "PD<return>"
Page D shows a 3D picture of the waveforms of any voice.

There are 2 formats:
A (above) and B (below)
Format B has a much higher resolution than Format A, but is less "3D" in appearance.

To Display a waveform:

select Format A type " DA<return>"
select Format B type "DB<return>"


select (new) End Segment Type "D,e<return>"
select (new) End Seg & step Type D,e,s<return>"

where e = end segment number (32.64,128 only)
where s = step value (1,2,4 & 8)

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

Polyfusion - Sound A Round

 Polyfusion QP-1 Sound-A-Round Quad Panner.
 

Extremely rare. there were only a couple of hundred ever made. It is the Holy Grail for Polyfusion modular synth owners 
 
There is an auto and manual mode.
 
It features a joystick for real time manual control.
This allows you to move the sound from any quadrant to any other quadrant forward,  reverse, up down, etc. 
 
Automatic mode uses a built in LFO to automate panning,
 

It can also be used to redirect CV signals in your modular synth.
 
 It was made famous by Pink Floyd, who used it in their live shows to pan audio.
They used a quadraphonic sound system.
 

Thursday, 17 November 2016

LED blink Program using interrupts

 The classic LED blink program uses delay.
 
This version uses interrupts
 
Still flashes LED 13
 
 

Here is the code

/*
 * This is a interrupt version of the classic blink LED sketch
 */

// pins
const int led_pin = PB5; // PB5 is the same as pin 13


void setup() {
 
  // set LED pin to be a output
  DDRB |=(1<< led_pin);// using port B
 
}

void loop() {
 PORTB ^= (1<< led_pin);
 delay(200); // turns LED on/off
 

}
 
//7777777777777777777777777777777777777777

DDRB - The Port B Data Direction Register
 

Port registers allow for lower-level and faster manipulation of the i/o pins of the microcontroller on an Arduino board. The chips used on the Arduino board (the ATmega8 and ATmega168) have three ports:

  • B (digital pin 8 to 13)
  • C (analog input pins)
  • D (digital pins 0 to 7) 
 Port B pins can be either in or output.


Each port is controlled by three registers, which are also defined variables in the arduino language. 
The DDR register, determines whether the pin is an INPUT or OUTPUT. 
The PORT register controls whether the pin is HIGH or LOW.
The PIN register reads the state of INPUT pins set to input with pinMode(). 
 
 
 
Links
 
 
 
 
 

Tuesday, 15 November 2016

Arduino Binary Counters & MIDI - Super basic program

Though this is not directly related to music, but I think its good to know a little about bytes & bits.
Arduino's are digital devices and only understand computer language.
When you attach an analog voltage to one of the pins, it's translated into zeros and ones by a ADC.
 
Midi notes are also all about zeroes and ones. They are digital signals.


Here is a Decimal/Binary/Octal/Hex conversion table 

Binary numbers are zeros and ones. You can think of them like switches being on or off.
MIDI notes take the form of these binary numbers.
They can be divided into two types: command bytes and data bytes. 

Command bytes are always 128 or greater, or 0x80 to 0xFF in hexadecimal. 
If you convert these numbers to binary, you will see they range between
 10000000 to 11111111..... that is, the first number (MSB or most significant bit) is always a one.
This is how it knows its a Command byte.
These include things like note on, note off, pitch bend, aftertouch, continuous controller, channel pressure, .

Data bytes are always less than 127, or 0x00 to 0x7F in hex. 
If you convert these numbers to binary, you will see they range between
 00000000 to 01111111..... that is, the first number (MSB or most significant bit) is always a zero.
This is how it knows its a Data byte.
These include things like Pitch, Velocity , pitch bend amount & loudness.

MIDI commands are further broken down by the following system:

The first half of the MIDI command byte (the three bits following the MSB) sets the type of command. More info about the meaning on each of these commands is here.
10000000 = note off
10010000 = note on
10100000 = aftertouch
10110000 = continuous controller
11000000 = patch change
11010000 = channel pressure
11100000 = pitch bend
11110000 = non-musical commands

The last half of the command byte sets the MIDI channel. All the bytes listed above would be in channel 0, command bytes ending in 0001 would be for MIDI channel 1, and so on.

All MIDI messages start with a command byte, some messages contain one data byte, others contain two or more (see image above). For example, a note on command byte is followed by two data bytes: note and velocity.

--------------------------------------------------------------
Getting back to building the counter.
 This is a simple binary counter.
Just 4 LEDS., 4 resistors(330 ohms).
We use 4 digital pins.
Pretty basic, so a great learning tool.
 
Make sure that the longer lead (positive) of each LED is the one you connect to the Arduino pin and that the resistors connect the shorter lead (negative) to the GND rail.
 
I'll use digital pins 2, 3, 4, 5 
 
--------------------------------------------------------------

This is the initial code to test that the circuit works:
All 4 LEDs should light up

// variables
int pin2=2;
int pin3=3;
int pin4=4;
int pin5=5;  

void setup()
{
  // commands
  pinMode(pin2, OUTPUT);
  pinMode(pin3, OUTPUT);
  pinMode(pin4, OUTPUT);
  pinMode(pin5, OUTPUT);
}

void loop()
{
  // I want to step through each number from zero to 15
  // then I want to repeat
  digitalWrite(pin2, HIGH);
  digitalWrite(pin3, HIGH);
  digitalWrite(pin4, HIGH);
  digitalWrite(pin5, HIGH);
 
}
 

 
 --------------------------------------------------------------------------
 
The final code
Each number is written individually
This is really just an basic exercise on how to turn on/off LEDs in sequence.
A simple delay is added between each number
 
 
 
 // variables
int pin2=2;
int pin3=3;
int pin4=4;
int pin5=5;  
int waitTime=100;

void setup()
{
  // commands
  pinMode(pin2, OUTPUT);
  pinMode(pin3, OUTPUT);
  pinMode(pin4, OUTPUT);
  pinMode(pin5, OUTPUT);
}

void loop()
{
  // I want to step through each number from zero to 15
  // then I want to repeat
 
  //0
  digitalWrite(pin2, LOW);
  digitalWrite(pin3, LOW);
  digitalWrite(pin4, LOW);
  digitalWrite(pin5, LOW);
  delay(waitTime);
 
  //1
  digitalWrite(pin2, LOW);
  digitalWrite(pin3, LOW);
  digitalWrite(pin4, LOW);
  digitalWrite(pin5, HIGH);
  delay(waitTime);
 
  //2
    digitalWrite(pin2, LOW);
  digitalWrite(pin3, LOW);
  digitalWrite(pin4, LOW);
  digitalWrite(pin5, LOW);
  delay(waitTime);
 
  //3
    digitalWrite(pin2, LOW);
  digitalWrite(pin3, LOW);
  digitalWrite(pin4, HIGH);
  digitalWrite(pin5, HIGH);
  delay(waitTime);
 
  //4
    digitalWrite(pin2, LOW);
  digitalWrite(pin3, HIGH);
  digitalWrite(pin4, LOW);
  digitalWrite(pin5, LOW);
  delay(waitTime);
 
  //5
    digitalWrite(pin2, LOW);
  digitalWrite(pin3, HIGH);
  digitalWrite(pin4, LOW);
  digitalWrite(pin5, HIGH);
  delay(waitTime);
 
  //6
    digitalWrite(pin2, LOW);
  digitalWrite(pin3, HIGH);
  digitalWrite(pin4, HIGH);
  digitalWrite(pin5, LOW);
  delay(waitTime);
 
  //7
    digitalWrite(pin2, LOW);
  digitalWrite(pin3, HIGH);
  digitalWrite(pin4, HIGH);
  digitalWrite(pin5, HIGH);
  delay(waitTime);
 
  //8
    digitalWrite(pin2, HIGH);
  digitalWrite(pin3, LOW);
  digitalWrite(pin4, LOW);
  digitalWrite(pin5, LOW);
  delay(waitTime);
 
  //9
    digitalWrite(pin2, HIGH);
  digitalWrite(pin3, LOW);
  digitalWrite(pin4, LOW);
  digitalWrite(pin5, HIGH);
  delay(waitTime);
 
  //10
    digitalWrite(pin2, HIGH);
  digitalWrite(pin3, LOW);
  digitalWrite(pin4, HIGH);
  digitalWrite(pin5, LOW);
  delay(waitTime);
 
  //11
    digitalWrite(pin2, HIGH);
  digitalWrite(pin3, LOW);
  digitalWrite(pin4, HIGH);
  digitalWrite(pin5, HIGH);
  delay(waitTime);
 
  //12
    digitalWrite(pin2, HIGH);
  digitalWrite(pin3, HIGH);
  digitalWrite(pin4, LOW);
  digitalWrite(pin5, LOW);
  delay(waitTime);
 
  //13
    digitalWrite(pin2, HIGH);
  digitalWrite(pin3, HIGH);
  digitalWrite(pin4, LOW);
  digitalWrite(pin5, HIGH);
  delay(waitTime);
 
  //14
    digitalWrite(pin2, HIGH);
  digitalWrite(pin3, HIGH);
  digitalWrite(pin4, HIGH);
  digitalWrite(pin5, LOW);
  delay(waitTime);
 
  //15
  digitalWrite(pin2, HIGH);
  digitalWrite(pin3, HIGH);
  digitalWrite(pin4, HIGH);
  digitalWrite(pin5, HIGH);
  delay(waitTime);
}




Link
+ http://www.multiwingspan.co.uk/arduino.php?page=led5
 
 ---------------------------------
------------------------------------- 

Monday, 14 November 2016

3trins to banana breakout box


The 3trins mini patchbay is wonderful but at times difficult to see (esp in low light).
And I'm a big fan of bananas. .. they are stackable and fast.


My initial attempts were to build a permanent panel.
Soon ditched this in favour of one that I can plug in and remove when I like.


I'm using mini bananas:

Links:
https://www.muffwiggler.com/forum/viewtopic.php?p=2387506#2387506