MIOS - the MIDIbox Operating System

Status

   ||
   ||   Done:
   ||
  0%|   o new PIC18F instructions learned
   ||   o performance of PIC18F452 evaluated
   ||   o first concepts for an uniformed MIDI system, based
   ||     on experiences from MIDIbox controllers, sequencer, synth
   ||   o quick&dirty port of MIDIbox16e firmware in order to learn
   ||     more about the pitfalls with the new controller
   ||   o LC protocol machine (will be moved to application layer later)
   ||   o Bootstrap loader written which allows to upload the firmware
   ||     via MIDI. Performance: 1k = 400 mS, 32k (whole flash) in 13 s
   ||   o perl script written which converts .hex to .syx
   ||   o new interrupt driven, buffered MIDI Tx/Rx driver written
   ||     buffer overruns are prevented
   ||   o generic MIDI protocol machine written
   ||   o generic MIDIbox Link support implemented
   ||   o MIDI processor which allows to map up to 256 MIDI events to
   ||     control elements (Pots/Fader, Encoders, Buttons, LEDs, ...)
   ||     Result: list of 256 events is processed in 300 uS @ 40MHz
   ||     (PIC16F: more than 2 mS @ 20 MHz)
   ||   o generic shiftregister In/Out driver
   ||   o 2 exact user timer hooks for timing driven code (sequencer, 
   ||     SID softwaresynth part)
   ||   o generic rotary encoder driver. Results: 16 encoders are 
   ||     scanned within 100 uS, 64 encoders within 400 uS
   ||     (excellent performance for the MBSID Control surface :-)
   ||   o generic interrupt driven analog inputs driver, every 200 uS
   ||     one of 64 pots is sampled in background, 
   ||     w/ adjustable jitter filter, resolution: 10 bit
   ||   o unified, 2-layer LCD driver implemented:
   ||     The first layer accesses the LCD hardware directly. Currently
   ||     two hardware models are provided: graphical LCDs based on
   ||     KS0108 or compatible chips, and dotmatrix (character)
   ||     LCDs based on HD44780 or compatible. 
   ||     Other graphical LCDs will be supported later, for dotmatrix
   ||     displays (1x8, 1x16, 2x16, 2x20, 4x20, 2x40, 4x40)
   ||     no additional changes are required.
   ||     The second layer is used by the applications to print
   ||     characters, print hexadecimal and BCD values, print strings
   ||     and to show temporal info messages for some seconds.
   ||     By using only the upper layer, applications written for dotmatrix
   ||     displays will also run with graphical LCDs and vice versa, so
   ||     long as no graphical elements are used.
   ||     A X-offset for up to 4 lines can be specified in order to 
   ||     center the screen if necessary.
   ||   o an exact millisecond-counter has been integrated
   ||   o an exact millisecond-delay has been integrated
   ||   o a flexible font/picture manager has been added which
   ||     provides an indexed access to characters and
   ||     animated icons
   ||   o a motorfader driver for up to 8 unmuxed analog inputs
   ||     has been implemented. Resolution of fader positions: 10-bit. 
   ||     The motor speed is controlled by pulse-wide modulated signals 
   ||     Speed resolution: 5bit (32 speed levels)
   ||     WOW! I haven't expected that higher resolutions make such a
   ||     big difference compared to the MIDIbox MF driver which works
   ||     with the standard 7-bit resolution/16 speed levels
   ||   o a suspend function for motorfaders have been implemented. It's
   ||     usefull in conjunction with touchsensors
   ||   o memory access routines (read/write Flash/EEPROM/BankStick)
   ||     with lifetime-saving and error detection features have been
   ||     implemented
   ||   o a secondary bootstrap loader has been implemented which allows
   ||     to upload a user application during the operating system is
   ||     running. Overwrite of primary loader and OS will be prevented
   ||   o documentation of user functions started (more than 100
   ||     functions available - ca. 10000 lines of assembler code -
   ||     12k flash memory allocated by OS)
   ||   o suspend/resume functions for user and system task have been
   ||     implemented. Also a "warmboot" is supported now
   ||   o a debug interface has been implemented which is accessible
   ||     by SysEx commands. It allows to read/write the RAM and
   ||     and to call public MIOS functions. The planned Java-based
   ||     diagnostic terminal will use these commands later to 
   ||     control the operating system via remote. Btw.: on this way
   ||     the MIDIbox could also be fully controlled via TCP/IP over 
   ||     your Intranet or the Internet! ;-)
   ||   o all written routines have been sorted
   ||   o MIOS has been divided from the application layer
   ||   o the Logic/Mackie Control emulation has been ported to MIOS. 
   ||     No problems so far.
   ||     It seems that only one core module is required to perform
   ||     the complete emulation (graphical LCD, 8 motorfaders, 
   ||     9 encoders, 8 LED rings, 96 buttons, 64 LEDs), but I have to
   ||      change the wiring of my MIDIbox LC to ensure this.
   ||   o wiring changed - no performance impact noticed - perfect :)
   ||   o a Functions Reference has been generated
   ||   o first release of MIOS: done
   ||   o MIDIbox LC application (open source)
   ||   o MIDIbox HN (Houston) application (open source)
   ||   o finally the bootstrap loader and upload procedure has been
   ||     documented
   ||   o the first "toy of the week" has been released: a Magic MIDI Delay
   ||   o I've heart the first noise from my MIDIbox SID/18F :-)
   ||   o I've heart plenty more noise from my MIDIbox SID/18F
   ||     performance is great!
   ||     enough CPU power free for the control surface and some AOUTs
   ||   o an imperfection of MIOS V1.0 and the bootstrap loader has been
   ||     fixed which appeared when realtime messages like MIDI clock
   ||     and Active Sense were send during the upload of new code.
   ||     The encoder handler sometimes left out a increment due to
   ||     a missing codeline (copy&paste error ;-)
   ||     These issues are solved now in mios_v1_0b and 
   ||     mios_bootstrap_loader_v1_1 (please update!)
   ||   o Hint for MIDIbox LC users: if you notice that the motorfaders
   ||     don't move smoothly, increase the MIDI bandwidth in Logic
   ||     to 100% under Preferences->Control Surface->Settings
   ||     Now it's also recommended to increase the motorfader supply
   ||     voltage to 8V and to set the MF Calibration value to 0x0e
   ||   o MIDIbox SID (without control surface) application has
   ||     been released.
   ||   o Toy of the week: MIDIbox Tiny Control (TC)
   ||   o MIOS V1.1 has been released (see ChangeLog)
   ||   o An introduction page has been written.
   ||   o Step A of the MIDIbox SID control surface has been completed
   ||   o some more examples have been uploaded (AIN/Enc/MF)
   ||   o new release of MIDIbox LC V1.1.2
   ||   o Bugfix for MIOS bootstrap loader (new release v1.1b): incoming
   ||     Note/Controller/etc. events during startup prevented MIOS 
   ||     from booting. Now the loader ignores all MIDI messages 
   ||     with the exception of his own SysEx string
   ||   o new release MIDIbox LC V1.1.2b: horizontal bars for 2LCD option
   ||   o new release MBSID V1.4_stepA3: patch select and save function
   ||   o MIOS V1.2 has been released (see ChangeLog)
   ||   o MIOS V1.3 has been released (see ChangeLog)
   ||   o MIDIbox SID control surface Step ABC has been released
   ||   o MIOS V1.4 has been released (see ChangeLog)
   ||   o some new applications examples have been released
   ||   o the MIOS port of MIDIbox64 has been released
   ||   o MIOS V1.4b has been released (see ChangeLog)
   ||   o the MIOS port of MIDIbox64E has been released
   ||   o the MIOS port of MIDIbox MF has been released
   ||   o the MIOS port of MIDIO128 has been released
   ||   o the MIOS port of MIDImon has been released
   ||   o MIOS V1.5 has been released (see ChangeLog)
   ||   o MIOS V1.5b has been released (see ChangeLog)
   ||   o MIOS V1.6 has been released (see ChangeLog)
   ||   o the MIOS port of MIDIbox SEQ has been released
   ||   o MIOS V1.7 has been released (see ChangeLog)
   ||                
   ||
  -++-  ToDo:
   ||
   ||   o more examples
   ||   o more documentation about the available MIOS hooks
   ||   o Java GUI to convert and upload .hex files via MIDI
   ||   o a diagnostics terminal with command interface to all functions
   ||   o MIDIbox NG
   ||   o ...
   ||   o ...
   ||   o ...
   ||
100%|
   ||
   \/


Last update: 2025-04-09

Copyright © 1998-2025, Thorsten Klose. All rights reserved.