Welcome to MIDI Player for SansGUI
MIDI Player for SansGUI has been created to demonstrate a couple of new SansGUI version 1.1 features, which 1) allow an external process simulator to work in concert with an in-process simulator, and 2) allow the users to chart data dynamically. In this example, the external process simulator is a console-based Musical Instrument Digital Interface, or MIDI, player that feeds MIDI streams into the Windows multimedia facility and displays MIDI events in the console. While processing the MIDI events, it also writes the MIDI channel numbers and data to a shared memory area (as two integers) for the in-process simulator to read. Acting as a monitor, the in-process simulator distributes the data to the corresponding channel components (parts), based on the user selected channel numbers associated with these components. The data in the channel components are then plotted using the dynamic charting feature in SansGUI without any extra programming effort from the simulation developer's side.
Communication between the external MIDI player and the in-process monitor is asynchronous, meaning that the former keeps pumping out data (a producer) while the latter reads the data (a consumer) with a user-definable interval, without the knowledge of the former. You can implement synchronous inter-process communication if the nature of your application requires it. While you are enjoying the MIDI music and the dynamic display, please be reminded that the external process simulator can be a control process or a simulated process of a real system, an existing application with its own GUI, or a legacy program of any kind, written in any programming language or environment.
Introduction: shows how to use MIDI Player for SansGUI and its program elements.
Developer's Corner: explains how this project was created and how the class functions are implemented.
This program requires the SansGUI Run-Time Environment version 1.1 or later. The demonstration version of SansGUI (SGdemo, available from ProtoDesign's web site) can be used to run the pre-built project or create new ones of your own. With the SGdemo edtion, however, you cannot save your work for future access. Optionally, the SansGUI Development Environment in the Professional Edition and the Student Edition can be used to modify the Schema Definition and extend the MIDI Player's capability.
Before installing MIDI Player for SansGUI, you need to have the SansGUI Run-Time Environment installed on your computer. The MIDI Player utility program is distributed in a self-extracting archive executable file in the SansGUI software distribution CD and from ProtoDesign's web site. To install it, simply run the executable file and follow the instructions. An important note is that the files should be installed into the SansGUI directory structure. That is, during the installation process, it will ask you where to install MIDI Player for SansGUI in an Unzip to folder: field. You need to indicate where your SansGUI installation directory is. If the shown directory matches the one you chose when you installed SansGUI, you can simply use the default value here; otherwise, click on the Browse... button to locate the SansGUI installation directory. The SansGUI installation directory is the one containing SansGUI Release.txt and License.txt files. Using this MIDI Player utility program with a SansGUI version earlier than 1.1 is not supported.
File |
Description |
lib\MIDIplay_1_0.sgo |
MIDI Player Object Library |
sim\MIDIplay_1_0.dll |
MIDI Player in-process simulator |
sim\MIDIplay_1_0.exe |
MIDI Player external process simulator |
doc\MIDIplay\*.* |
On-line documentation files |
doc\MIDIplay\Generate\*.* |
Picture files for on-line documentation |
samples\MIDIplay\MIDIplay.sgs |
Schema Definition of MIDI Player |
samples\MIDIplay\*.ico |
Icon files for MIDI Player classes |
samples\MIDIplay\MIDIplay_1_0\*.* |
MIDI Player (in-process) project for MSVC++ |
samples\MIDIplay\MIDIplay_1_0F\*.* |
MIDI Player (in-process) project for CVF |
samples\MIDIplay\MIDIplay_1_0_0_0\*.* |
C/C++ and Fortran (in-process) source files |
samples\MIDIplay\MIDIplay_1_0X\*.* |
MIDI Player external process project and code |
samples\MIDIplay\Piano.sgp |
Example to play 2 channel MIDI files |
samples\MIDIplay\Ch16.sgp |
Example to play 16 channel MIDI files |
SJent.mid |
Sample MIDI file of Scott Joplin's The Entertainer |
Please go to the next section, titled Introduction, of this manual.
We have included SGent.mid, Scott Joplin's The Entertainer for testing. The sequencer of this MIDI file is unknown. To download more MIDI music for playing and enjoyment, you can visit:
Please be aware of the copyright ownership of the MIDI music.
In order to obtain your permanent license key, you need to register your computer. Please check the section on Permanent License Key in the Getting Started guide and visit the following web page:
http://protodesign-inc.com/register.htm
For technical assistance on SansGUI, please contact:
mailto:support@protodesign-inc.com
http://sansgui.com/support.htm or
http://protodesign-inc.com/support.htm
Phone: (630) 759-9930
Fax: (630)759-4759
For other services offered by ProtoDesign, Inc., please contact:
mailto:info@protodesign-inc.com
http://protodesign-inc.com/services.htm
Phone: (630) 759-9930
Fax: (630) 759-4759
Copyright © 2002-2003 ProtoDesign, Inc. All rights reserved.
Portion Copyright © 1998 Jörg König. All rights reserved.
The external process MIDI Player program uses a modified CMIDI class library, which was originally created and copyrighted by Jörg König. We thank him for giving us the permission to use and distribute a modified version of his MIDI.h and MIDI.cpp files. The original code sample was posted at: http://codeguru.earthweb.com/multimedia/midi.shtml. You can contact him at Joerg.Koenig@rhein-neckar.de or J.Koenig@adg.de.
The MIDI Player for SansGUI utility program and its documentation are copyrighted by ProtoDesign, Inc. and are provided "AS-IS" without warranty of any kind, express or implied. Neither ProtoDesign, Inc. nor its distributors will be held liable for any damage caused or alleged to be caused either directly or indirectly by this software.
Redistribution of the utility program in its original form without modification is permitted. In addition, you are encouraged to create full-feature MIDI Players based upon this demonstration program, using the SansGUI Modeling and Simulation Environment. You can distribute, commercially or non-commercially, your extended work provided that:
The Simulator Identification in the Schema Definition has been modified to indicate your new program name and your organization.
The name of ProtoDesign, Inc. may not be used to endorse or promote products derived from this software without prior written permission from us.
The use of MIDI.h and MIDI.cpp files is adhered to the copyright notice in the headers of the files written by their original author, Jörg König.
The SansGUI Software and its documentation, on-line and printed, are copyrighted by ProtoDesign, Inc. The use of these materials are restricted by the license agreement accepted by the user during the software installation process.
SansGUI and its logo is a registered trademark and ProtoDesign and its logo is a registered service mark of ProtoDesign, Inc. Microsoft Windows is a trademark of Microsoft Corporation. All other trademarks are owned by the respective companies.
MIDI Player for SansGUI Version 1.0
Copyright © 2002-2003 ProtoDesign, Inc. All rights reserved.