|
/*
__ __ _ ____ _ _________ __ ______ _ ____ __ _
| \/ || || _ \| | ( /_ _// \/_ _/| |/ \| \| |
| |\/| || || |_| | | \ \ | | | <> | | | | || <> || |\ |
|_| |_||_||____/|_| /___)|_| |_||_| |_| |_|\____/|_| \_|
////////////////////////////////////////////////////////////////////////
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
///////////////////////////////////////////////////////////////////////
Version: 1.9.1
Module : Record.h
Purpose: Defines the header implementation for the CRecord class
Created: CJP / 4-10-2002
History: CJP / 3-24-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
*/
#ifndef CRECORD_H
#define CRECORD_H
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
const DWORD TOTAL_MEMORY = 10000 ; // Maximum memory size for recording (~80KB)
class CRecord
{
typedef struct Msg // Structure to store midi messages
{
DWORD dwMsg; // MIDI 1.0 message
DWORD dwTime; // Note duration in milliseconds
};
SYSTEMTIME Start; // Record start time
SYSTEMTIME Current; // Record current time
Msg NoteArray[TOTAL_MEMORY]; // Array of messages
DWORD nIndex,nTotal,nMsgRecorded; // Index of the message in the array
public:
CRecord();
~CRecord();
void GetStartTime(); // Reset the recording
void StoreMidiMsg(DWORD dwMsg); // Store a given midi message in current time
DWORD GetIndex(); // Get the index in the array
DWORD GetStoredMessage(); // Get stored Midi DWORD pointed by the index
DWORD GetTotalMsgMemory(); // Returns the total memory allocated for recording
void ResetIndex(); // Set the index to 0 (Start)
void StepIndex(); // Step the index one unit
DWORD GetTotalRecorded(); // Returns number of messages recorded
DWORD GetTime(DWORD dwIndex); // Returns the time of a given index
};
#endif
|
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.
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.