VIC MIDI (World of Commodore 2015)
-
Upload
leif-bloomquist -
Category
Technology
-
view
558 -
download
1
Transcript of VIC MIDI (World of Commodore 2015)
![Page 1: VIC MIDI (World of Commodore 2015)](https://reader035.fdocuments.net/reader035/viewer/2022062607/58a444bf1a28ab41618b6655/html5/thumbnails/1.jpg)
Jim Brain and Leif Bloomquist
World of Commodore 2015December 5, 2015Toronto, Canada
VIC MIDI
![Page 2: VIC MIDI (World of Commodore 2015)](https://reader035.fdocuments.net/reader035/viewer/2022062607/58a444bf1a28ab41618b6655/html5/thumbnails/2.jpg)
Project Goals
Make the Commodore VIC-I (6560) chip’s distinctive sound available to electronic musicians.
Easy integration with sequencers, synthesizers, or tracking software using MIDI1.
1Musical Instrument Digital Interface
![Page 3: VIC MIDI (World of Commodore 2015)](https://reader035.fdocuments.net/reader035/viewer/2022062607/58a444bf1a28ab41618b6655/html5/thumbnails/3.jpg)
History Sometime in the 1980s: A schematic for a VIC-20 MIDI
interface was published in “Electronics, the Maplin Magazine”
No commercial MIDI interfaces were ever released for the VIC!
![Page 4: VIC MIDI (World of Commodore 2015)](https://reader035.fdocuments.net/reader035/viewer/2022062607/58a444bf1a28ab41618b6655/html5/thumbnails/4.jpg)
History cont’d 2006: David Viens and François Leveillé in Montreal had
built a prototype based on the Maplin article, but never completed the software.
Early 2009: A conversation with Rob Adlers and Syd Bolton leads to a search for a MIDI Interface for the VIC.
Mid 2009: I find David and Francois’ project through the “VIC-20 Denial” forums and offer to take over development.
1Musical Instrument Digital Interface
![Page 5: VIC MIDI (World of Commodore 2015)](https://reader035.fdocuments.net/reader035/viewer/2022062607/58a444bf1a28ab41618b6655/html5/thumbnails/5.jpg)
First Prototype
![Page 6: VIC MIDI (World of Commodore 2015)](https://reader035.fdocuments.net/reader035/viewer/2022062607/58a444bf1a28ab41618b6655/html5/thumbnails/6.jpg)
History cont’d
Late 2009: I approach Jim Brain from Retro Innovations about creating a small production run.
Prototypes and code evolve for several years…
![Page 7: VIC MIDI (World of Commodore 2015)](https://reader035.fdocuments.net/reader035/viewer/2022062607/58a444bf1a28ab41618b6655/html5/thumbnails/7.jpg)
2013
2011
2012
![Page 8: VIC MIDI (World of Commodore 2015)](https://reader035.fdocuments.net/reader035/viewer/2022062607/58a444bf1a28ab41618b6655/html5/thumbnails/8.jpg)
2015
![Page 9: VIC MIDI (World of Commodore 2015)](https://reader035.fdocuments.net/reader035/viewer/2022062607/58a444bf1a28ab41618b6655/html5/thumbnails/9.jpg)
The VIC-20’s Voices
Square Wave output (except Noise) Some overlap between voices
![Page 10: VIC MIDI (World of Commodore 2015)](https://reader035.fdocuments.net/reader035/viewer/2022062607/58a444bf1a28ab41618b6655/html5/thumbnails/10.jpg)
Implementation One MIDI Channel per Voice
Channel 1 = Alto (36874) Channel 2 = Tenor (36875) Channel 3 = Soprano (36876) Channel 4 = Noise (36877)
Polyphony Mode Channel 5 = Polyphony Mode (round-robins through voices)
Master Volume is set through Controller #7 (Coarse Volume) on any channel
![Page 11: VIC MIDI (World of Commodore 2015)](https://reader035.fdocuments.net/reader035/viewer/2022062607/58a444bf1a28ab41618b6655/html5/thumbnails/11.jpg)
Implementation (Continued)
Note On commands use a lookup table to match MIDI Note# to the closest match for that voice.
Controller #1 (Course Modulation) does a direct “POKE” to the corresponding Voice register based on MIDI Channel.
Note Off, All Notes Off commands on a specific channel are used to silence that voice.
MIDI “Running Status” supported
PAL, NTSC, and VIC-specific lookup tables Bank Select (Controller #0)
![Page 12: VIC MIDI (World of Commodore 2015)](https://reader035.fdocuments.net/reader035/viewer/2022062607/58a444bf1a28ab41618b6655/html5/thumbnails/12.jpg)
Still remaining to do: MIDI Out only sends one note at a time. Needs
multi-press, multi-note capability
Viznut’s waveforms don’t trigger reliably yet
More testing of Polyphony mode
![Page 13: VIC MIDI (World of Commodore 2015)](https://reader035.fdocuments.net/reader035/viewer/2022062607/58a444bf1a28ab41618b6655/html5/thumbnails/13.jpg)
Software 6502 Assembler
Cross-compiled using DASM
Code is open-source, MIT License
Available on GitHub:https://github.com/LeifBloomquist/VICMIDI
Developer and User Support Forum: http://www.jammingsignal.com (click FORUMS)
![Page 14: VIC MIDI (World of Commodore 2015)](https://reader035.fdocuments.net/reader035/viewer/2022062607/58a444bf1a28ab41618b6655/html5/thumbnails/14.jpg)
Other features Flashable
MIDI IN, Out, Through support
RS-232 Support (if installed)
UltiMem capable (512kB ROM, 128kB RAM)
UART can be set to any base address in IO2 or IO3
UltiMem can be enabled/disabled
MIDI/RS232 can be enabled/disabled
![Page 15: VIC MIDI (World of Commodore 2015)](https://reader035.fdocuments.net/reader035/viewer/2022062607/58a444bf1a28ab41618b6655/html5/thumbnails/15.jpg)
Demo Time!