Click here to Skip to main content
15,896,912 members
Articles / Artificial Intelligence

Developing MIDI applications with DirectMusic

Rate me:
Please Sign up or sign in to vote.
4.91/5 (45 votes)
11 Apr 2008LGPL325 min read 613.8K   9.5K   147  
A wrapper class library for the DirectMusic MIDI.
/*
 __  __  _  ____  _   _________ __  ______ _  ____  __  _
|  \/  || ||  _ \| | (  /_   _//  \/_   _/| |/    \|  \| | 
| |\/| || || |_| | |  \ \ | | | <> | | |  | || <> || |\  | 
|_|  |_||_||____/|_| /___)|_| |_||_| |_|  |_|\____/|_| \_| 
					   
////////////////////////////////////////////////////////////////////////
  
  This program is free software; you can redistribute it and/or
  modify it under the terms of the GNU Lesser General Public
  License as published by the Free Software Foundation; either
  version 2.1 of the License, or (at your option) any later version.
 
  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  Lesser General Public License for more details.
 
  You should have received a copy of the GNU Lesser General Public
  License along with this library; if not, write to the Free Software
  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
 
Copyright (c) 2002-2003 by Carlos Jim�nez de Parga  
All rights reserved.
For any suggestion or failure report, please contact me by e-mail: 
cjimenez@servitel.es

Note: I would appreciate very much if you could provide a brief description of your project, 
as well as any report on bugs or errors. This will help me improve the code for the benefit of your
application and the other users  
///////////////////////////////////////////////////////////////////////
Version: 1.9.2
Module : MidiStation.h
Purpose: Defines the header implementation for the CMidiStationApp class
Date Format: Day/Month/Year
Created: CJP / 10-04-2002
History: CJP / 29-12-2003 
	
	  // 11-10-2002 Update

	  1. Solved problems with Midi port selection
	  
	  2. Improved built-in keyboard
		
	  3. Supervised the multithread-safe application	

	  4. Improved the interactive interface 
	  
	  5. Application restructured to the new CDirectMidi wrapper
	  
	  6. Added the Microsoft Software Synthesizer

	  7. Added keyboard support 
	  
	  8. Fixed bugs in classes design 
	  
      9. Improved playback thread using Events
	  
	  10. Guide line on the list control

	  // 6 - 10 - 2003 Update
	   
	  11. Added exception handling
	  
	  12. Included the piano keyboard control

	  13. Enhanced implicit multitask synchronization system
	  
      14. Simplified the class hierarchy 

	  15. Program structure grouped into new classes
	  
      16. Fixed bugs in calls to DirectMidi library

	  17. Program released under GNU (General Public License) terms	
	
	  // 29 - 12- 2003 Update
	  
	  18. Fixed running status bug

	  19. Fixed DLS port bug 
	  
	  20. Fixed message list bugs 

	  21. Loading and saving of .MDS sequenced files 

	  22. Unlimited recording 
*/

#if !defined(AFX_MIDISTATION_H__3BE1DA05_610B_11D6_B3BC_EC5E2C31CF36__INCLUDED_)
#define AFX_MIDISTATION_H__3BE1DA05_610B_11D6_B3BC_EC5E2C31CF36__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#ifndef __AFXWIN_H__
	#error include 'stdafx.h' before including this file for PCH
#endif

#include "resource.h"		// main symbols
#include "MidiStationDlg.h"
#include "GMMusicData.h" // List of GM instruments, notes and keys

/////////////////////////////////////////////////////////////////////////////
// CKeybApp:
// See Keyb.cpp for the implementation of this class
//

class CMidiStationApp : public CWinApp
{
public:
	CMidiStationApp();

// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CKeybApp)
	public:
	virtual BOOL InitInstance();
	//}}AFX_VIRTUAL

// Implementation

	//{{AFX_MSG(CMidiStationApp)
		// NOTE - the ClassWizard will add and remove member functions here.
		//    DO NOT EDIT what you see in these blocks of generated code !
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};


/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_KEYB_H__3BE1DA05_610B_11D6_B3BC_EC5E2C31CF36__INCLUDED_)

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The GNU Lesser General Public License (LGPLv3)


Written By
Software Developer
Spain Spain
I obtained my PhD degree in Computer Graphics at the National Distance Education University (UNED) in October 2019. I also hold a Ms. degree in Software Engineering and Computer Systems and a Bs. degree in Computer Science from the National Distance Education University (UNED).
I have been employed as a C++ software developer in several companies since year 2000.
I currently work as a Tutor-Professor of Symbolic Logic, Discrete Math and Java Object-Oriented Programming at UNED-Cartagena (Spain) since 2015.

Comments and Discussions