Electronic Micro Projects by John Talbert
  • © 2021 jmt 0

Stacks Image 436
Projects with Forth Programming Platforms

After working with Forth Programming Language on the MIDI Horn I became impressed with its speed, compactness, and ease of use.

The Forth language consists of a dictionary of words (subroutines) that use stacks for storing the subroutine data. Programming in Forth is a matter of building new 'words' by combining previously built words, thus creating a hierarchical dictionary of words. The higher-level words can easily be tested by running their lower level components.

The lower level words that interact directly with the processor hardware are easily built and tested. They can also be built from assembly code for greater speed.

RSC Forth / Ohio Scientific Computer

In 1978 the TIMARA department of Oberlin Conservatory acquired an OSI (Ohio Scientific) computer. It was based on the 6502 microprocessor and had an open, expandable architecture. The following interface devices (shown in the image below) were designed and built into the OSI computer to allow computer control of TIMARA's Moog, Buchla, Arp 2600, and Putney VCS3 synthesizers:

8 DACs (8-bit digital to analog converters)
8 ADCs (8-bit analog to digital converters)
8 Pulse Detectors
8 Pulse Generators
An AY-3-8910 sound synthesizer chip

Users programmed the devices mainly through a tiny Basic language and saved their programs on cassette tapes.

In 1987 the OSI is upgraded with a 6502 microprocessor loaded with Forth, Rockwell's RSC Forth chip. The language is significantly extended with words to deal with the Hybrid Synthesizer, MIDI input and output, a Timer device, the SID synthesizer chip, and all the above devices used to control the analog synthesizers. Floppy drives are installed for user storage of Forth programs.


In 1984 the prototype for the MIDI Horn is designed and built. This is a wind controller with a pressure sensor, 8 switches, and several sliders/pedals. The controller data is fed to a single board Z8 microcomputer that interprets the data and converts it to MIDI control signals. Forth language was used for programming the device as Basic language proved to be too slow.

The final version of the
MIDI Horn is built in 1987. This is a MIDI controller instrument based on a single board microcomputer and programmed in Forth programming language. It includes a pressure sensor whose output is translated into MIDI NoteON with Note Velocity data. Four computer keyboard style pushbuttons set the Key Value based on brass fingerings. Three more pushbuttons set the octave, and one last pushbutton enters the value of the other 7 buttons as a MIDI Program Change. The back of the horn has two MIDI Controller joysticks operated by the two thumbs along with four push-on/push-off buttons.

Gary Nelson takes the MIDI Horn on the road with over 200 performances around the world. He uses the Midi Horn as the performance interface part of a 'hyperinstrument' consisting of a Macintosh computer, a set of digital synthesizers, and the software (Max/MSP) linking them all together. In a 'hyperinstrument' the controller does not necessarily play 'notes', it sends performance signals acted upon by a computer program that determines how the music is played out.

MIDI Trumpet

This is an actual trumpet retrofitted to produce MIDI signals. The instrument is still playable as a trumpet. Its sound is captured by a microphone pickup, amplified, rectified and then sent as a control voltage to a microcomputer which uses it as Key Velocity data for MIDI Note On signals. There was no pitch detection implemented. Instead, the MIDI notes are determined by switches mounted at the bottom of the three trumpet valves and 5 more mounted on the trumpet. Two slide pots and a pedal provide MIDI Controller data.

The Horn electronics are connected to a single board microcomputer programmed in Forth language.

Roland Slider Box

The Roland PG1000 was a programming unit for the powerful Roland D-50 and D-550 Synthesizers. What sets it apart from all other controllers is its abundance of slide pots, 56 in total.

Here, the Roland PG1000 is turned into a MIDI Controller by reprogramming its internal EPROM memory. Each of its 56 sliders (plus 8 additional external control voltages) can be configured from the front panel pushbuttons and LCD screen to put out any MIDI signal including MIDI Control, NoteOn/NoteOff, Program Change, NoteOn with Aftertouch, Channel Pressure, Pitch Wheel.

A compact Forth Programming platform was installed onto its internal EPROM Memory. This Forth Dictionary base was then expanded with new words to implement the MIDI functions and the slider configuration process.

A complete description of the program is contained in downloadable PDF files. Also available for download is the actual modification code for burning onto a 27C128 EPROM chip.