Saturday 3 August 2013

RMIF Elsita MIDI to trigger interface

  

The RMIF Elsita is a soviet analog drum machine, circa 1989.  It has 4 identical channels, designed to be triggered from electronic drum pads but on mine these have worn to the point where they do not reliably trigger the channels.  There is also a 180-degree, 5 pin DIN socket labelled sequencer (секвенсор in Russian Cyrillic).  I cannot find any evidence that a sequencer was ever manufactured.  Although it is the same port type as MIDI, it is not a MIDI input.  I haven't found anywhere I can get the schematics for free, but by taking the casing off and analyzing the circuit I determined that the middle pin was ground, and the other pins were trigger inputs for each channel.  

I have built a 4 channel MIDI to trigger circuit using an Arduino.   When it receives a MIDI note on command C1, D1, E1 and F1 (note numbers 36, 38, 40 and 41) and velocity is more than 0, outputs 1-4 (arduino pins 9-12) go high for a predetermined time - note length is ignored.  As RMIF provided the sequencer input jack I decided to put this in an external case rather than do any internal modifications.




It would be easy to modify this code to accommodate more channels, the Arduino UNO/duemilanove has up to 12 digital outputs we could use, ignoring the RX and TX pins.  I chose the note numbers that are used by Audio Damage Tattoo, I turn the synth audio out off and use the sequencer to control the Elsita.
 

The board is a barebones arduino board with an opto-isolated MIDI input and 5 pins for the sequencer output.  I simply cut a MIDI cable in half and soldered one end to the MIDI input, the other to the sequencer output.  Looking at the MIDI cable as above with the pins along the top the pinout goes pin3-CH2, pin5-CH4, pin2-GND, pin4-CH3, pin1-CH1.  

I have provided the code, schematic and board layout in Cadsoft EAGLE format and as images.  I will be uploading a number of projects to this blog, and I aim to make it as easy as possible for you to replicate it at home.  My designs will be single sided only, so you can etch it at home - either with a CNC mill or with chemical etching.  I have designed my own DRC file specific to my mill which enlarges pads and changes them all to squares as I find it mills better this way - you may need to change the to make it suitable for your own mill.  I provide the schematic so that you can make it on bread board or vero board if you cannot etch boards yourself, but I cant provide layouts as I have no need for breadboard any more.  If you have any problems leave a comment and I will do my best to help.  Good luck!

elsita trig files - eagle files and arduino .ino file




 
 /*
4 channel midi to gate trigger for analog drum machines.
 midi notes C1, D1, E1 and F1 (midi numbers 36, 38, 40 and 41) cause digital
 pins 9, 10 11 and 12 (15, 16 ,17 and 18 on the atmega168/328 ic) to be high.
 velocity is ignored, the digital outputs being high for all velocities except 
 zero (note off).  Note length is ignored.  You may need to change trigtime
 to a value more suitable to your device.  Add further channels if required.
 code by analog monster analogmonster@live.com
 http://analog-monster.blogspot.co.uk/
 uses arduino midi library by Francois BEST
 */

#include <MIDI.h>  // Add Midi Library
#define CH1 9 //define pins per channel
#define CH2 10 
#define CH3 11 
#define CH4 12 
int trigtime=100;


void setup() {
  pinMode (CH1, OUTPUT); // Set Arduino board pin 9 to output
  pinMode (CH2, OUTPUT); // Set Arduino board pin 10 to output
  pinMode (CH3, OUTPUT); // Set Arduino board pin 11 to output
  pinMode (CH4, OUTPUT); // Set Arduino board pin 12 to output
  digitalWrite(CH1,LOW);
  digitalWrite(CH2,LOW);
  digitalWrite(CH3,LOW);
  digitalWrite(CH4,LOW);
  MIDI.begin(MIDI_CHANNEL_OMNI); // Initialize the Midi Library, all channels
  MIDI.setHandleNoteOn(trig); // call trig when note on received
  
}

void trig(byte channel, byte pitch, byte velocity) {
  if (pitch == 36 && velocity > 0){
for(int i=0; i<trigtime; i++){
  digitalWrite(CH1,HIGH);}
  digitalWrite(CH1,LOW);}
  
  if (pitch == 38 && velocity > 0){
for(int j=0; j<trigtime; j++){
  digitalWrite(CH2,HIGH);}
  digitalWrite(CH2,LOW);}
  
  if (pitch == 40 && velocity > 0){
for(int k=0; k<trigtime; k++){
  digitalWrite(CH3,HIGH);}
  digitalWrite(CH3,LOW);}
  
  if (pitch == 41 && velocity > 0){
for(int l=0; l<trigtime; l++){
  digitalWrite(CH4,HIGH);}
  digitalWrite(CH4,LOW);}
  
 
}
void loop() { // Main loop
  MIDI.read(); // read Midi Commands 
}

4 comments:

  1. Very nice job on this. If I were able to do that, I would also sequence it from Tattoo.
    would love to buy one if you have a spare!

    ReplyDelete
  2. Thanks alot. I have done a few different versions of this as I have many pre midi drum machines I want to trigger over midi. Sadly I dont have any spare boards because I made this one myself but there are 2 companies I have used for manufacture that I have been very happy with - oshpark and seeedstudio. you can download the .brd file from the link above and upload it straight to the oshpark website. you would get 3 boards for $23.30, which is very reasonable. The parts would also be very cheap. If you are willing to wait for a while I could build it for you. If you want to talk more email me at analogmonster at live dot com

    ReplyDelete
  3. Gambling in Las Vegas, NV - Mapyro
    A map showing gambling activities 충청남도 출장안마 in Las Vegas, NV. 대구광역 출장샵 to the casinos 안양 출장샵 are 남원 출장샵 the restaurants and bars and cafes, 시흥 출장안마 and some of them just aren't

    ReplyDelete