Jump to content

Drum Synth- Antic 2/85, MIDIfied

Posted by k-Pack , 18 March 2017 · 741 views

Drum kit MIDI Arduino

Drum Synth/Bass Synth by Glen Gutierrez are 2 programs featured in the Antic Feb. 1985 issue.  Antic Editor: "These are the most realistic instrument simulations we've ever heard at Antic."  The Drum Synth program has been MIDIfied to except data from an Arduino+MIDI shield through the joystick port.  Now the drums can be beat from a MIDI keyboard(MKB) or sequencer.
The chart follows the data from the MIDI NOTE ON source to the Atari Computer running the Drum program.
Attached Image
The general MIDI LEVEL 1 Percussion key map was used to maintain some continuity between different midi instruments.   <https://www.midi.org...vel-1-sound-set>
The drum hit starts at the MKB.  Press the key for the drum sound you want. This sends a MIDI NOTE ON message byte to the Arduino.  The Arduino has been checking the data stream from the MKB to find a NOTE ON command for a specific MIDI Channel(channel 1 in this case).  When it detects that byte it reads the next two bytes, the note number and then the velocity.  If the velocity is above 0, the note number is used to set the patterns for the joystick port input. Any note number not mapped to a drum sound in the computer is ignored and the Arduino looks for the next NOTE ON+channel message.
When the Joystick pins has been set, the trigger is set to tell the computer to read the joystick port.  A short delay is used to give the computer a chance to read the port before it is reset.
The computer has been sitting there waiting for the trigger to change state.  If it changes while a percussion sound  is being made, it POPs out of the FOR-NEXT Loop turns off the sounds and returns to the input loop. The input loop is where the computer reads the joystick pins and looks for a number between 1 and 12.  This number is used as an index into an array(JTOK()) containing the original computer key codes mapped to the sound routines.  The key codes are then used as an index into an array that contains the subroutine line numbers for the different percussion sounds; a hold over from the original program.
A MIDI shield for Arduino can be purchased for less then the cost to build one.  It might be a good idea to get one that has a MIDI THRU port.  It gives you the option of adding additional synthesizers to your MIDI setup.
The Arduino-to-Joystick circuit is the same for the Drum-MIDI interface and the Wii-Nunchuk interface.  Don't hook up the Nunchuk and plug in a midi shield.  Digital pin assignments are a little different and are listed below.  The MIDI shield connects to D0 and D1 for serial communication with the MIDI source.  I still like using optocouplers to isolate the Arduino and computer whenever I can.
From <http://atariage.com/...atari-joystick/>
Attached Image
Attached Image
The pin assignments for this project are as follows:
Arduino    Optocoupler #    Joystick pin
D4            1                        1
D5            2                        2
D6            3                        3
D7            4                        4
D3            5                        6(trig)
                                           8 GND for Atari side of optocoupler
Pin assignments can be changed as long as the Arduino sketch is modified to match.
The ZIP File Contains
midi_drum_02 - Arduino sketch folder.
SYNDRUM3.ATR  - single density format
   SYNDRUM.BAS - original program from Antic
   SYNDRUM3.BAS - MIDIfied Program to use with Arduino interface
Attached File  SYNDRUM3.zip (21.11KB)
downloads: 47
I was going to record the drums. Running the original program will get you the same sound by pressing the keyboard keys.  I'll make the recording when I get some drum patterns programed into MMS.  Send the midi data through the MIDIMax to a second computer with an Arduino-MIDI shield interface(channel 10).  Then daisy-chain a third computer with interface(channel 11) through the THRU port.  Run the audio outputs to a mixer and record, maybe adding some FX.
That's after I find way to remove the unwanted low level hiss coming out of the Atari.
 P.S.  This is not a MIDIjoy unit.  Although I did take some inspiration from its makers.  I am going to make one, someday.

  • scottinNH likes this

I got an Atari 130XE with the MIDI MAX and MMS feeding MIDI data to an 800.  I have a couple of 2 voice drum patterns programmed into MMS and feeding one voice to MIDI Channel 10.   The 800 is keeping up with the data stream.  ROCK pattern, 4/4 time at Temp = 160.  At some point the voice is changing during the attack and you never hear the decay.  Sounds like a simple beep.  It didn't start dropping notes until somewhere around Temp=200.


That's the good news. 


The syndrum program has a problem with the tom 4 or 5.  I think, one was omitted from the program and the data is ignored and leaves a gap in the pattern.  I have to look over the program and will update in a later post. 

  • Report
Problem solved. THE Table is wrong. TOM5 should be C3 not D3. The Basic program
  • Report

Recent Comments

Latest Visitors

  • Photo
    05 Mar 2019 - 1:51
  • Photo
    01 Mar 2019 - 12:31
  • Photo
    21 Feb 2019 - 7:29
  • Photo
    18 Feb 2019 - 11:55
  • Photo
    12 Feb 2019 - 11:16
  • Photo
    04 Feb 2019 - 4:50
  • Photo
    04 Feb 2019 - 4:29
  • Photo
    04 Feb 2019 - 10:03
  • Photo
    04 Feb 2019 - 4:15
  • Photo
    03 Feb 2019 - 11:51
  • Photo
    01 Jan 2019 - 1:10
  • Photo
    13 Dec 2018 - 10:47
  • Photo
    25 Nov 2018 - 3:10
  • Photo
    20 Nov 2018 - 5:15
  • Photo
    19 Nov 2018 - 11:56
  • Photo
    05 Oct 2018 - 5:54
  • Photo
    26 Sep 2018 - 2:42
  • Photo
    25 Sep 2018 - 1:42
  • Photo
    25 Sep 2018 - 12:18
  • Photo
    24 Sep 2018 - 2:17
  • Photo
    16 Sep 2018 - 8:23
  • Photo
    16 Sep 2018 - 8:22
  • Photo
    _The Doctor__
    11 Sep 2018 - 3:15
  • Photo
    01 Sep 2018 - 8:56
  • Photo
    28 Aug 2018 - 5:29