mmlibs/mmfw/MIDI/src/midiclientutility.cpp
author hgs
Wed, 13 Oct 2010 12:45:32 +0100
changeset 2 5c1df44f2eed
parent 0 b8ed18f6c07b
permissions -rw-r--r--
2010wk42_01
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     1
// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     2
// All rights reserved.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     3
// This component and the accompanying materials are made available
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     4
// under the terms of "Eclipse Public License v1.0"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     5
// which accompanies this distribution, and is available
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     7
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     8
// Initial Contributors:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    10
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    11
// Contributors:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    12
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    13
// Description:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    14
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    15
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    16
#include <midiclientutility.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    17
#include "midiclientutilitybody.h"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    18
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    19
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    20
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    21
Static factory function for creating a MIDI client utility object.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    22
This function is synchronous, unlike the other factory functions,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    23
because it doesn't need to perform any MIDI resource initialisation.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    24
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    25
@param aObserver
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    26
       Reference to an object to receive callbacks on completion of asynchronous functions.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    27
@param aPriority
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    28
       The Priority Value - this client's relative priority. This is a value between EMdaPriorityMin and 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    29
       EMdaPriorityMax and represents a relative priority. A higher value indicates a more important request.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    30
@param aPref
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    31
       The Priority Preference - an additional audio policy parameter. The suggested default is 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    32
       EMdaPriorityPreferenceNone. Further values are given by TMdaPriorityPreference, and additional 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    33
       values may be supported by given phones and/or platforms, but should not be depended upon by 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    34
       portable code.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    35
@param aUseSharedHeap
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    36
	   Select if the underlying controller will have its own heap or share a single heap with other
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    37
	   controller instances.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    38
	   The default behaviour, or if this value is EFalse, is that each controller is created with
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    39
	   its own heap. The alternative, if the value is ETrue, is that controllers share a special
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    40
	   heap with other controllers created the same way. Each heap uses a chunk, so this avoids
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    41
	   situations where the number of chunks per process is limited. The default behaviour is
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    42
	   generally to be preferred, and should give lower overall memory usage. However, if many
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    43
	   controllers are to be created for a particular thread, then ETrue should be provided to
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    44
	   prevent running out of heaps or chunks.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    45
@return Fully constructed utility object ready to have an OpenXxxx() function called.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    46
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    47
Note: The Priority Value and Priority Preference are used primarily when deciding what to do when
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    48
several audio clients attempt to play or record simultaneously. In addition to the Priority Value and Preference, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    49
the adaptation may consider other parameters such as the SecureId and Capabilities of the client process. 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    50
Whatever, the decision  as to what to do in such situations is up to the audio adaptation, and may
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    51
vary between different phones. Portable applications are advised not to assume any specific behaviour. 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    52
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    53
EXPORT_C CMidiClientUtility* CMidiClientUtility::NewL(MMidiClientUtilityObserver& aObserver, TInt aPriority, TInt aPref, TBool aUseSharedHeap)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    54
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    55
	CMidiClientUtility* self = new(ELeave) CMidiClientUtility();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    56
	CleanupStack::PushL(self);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    57
	self->iBody = CMidiClientUtility::CBody::NewL(self, aObserver, aPriority, aPref, aUseSharedHeap );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    58
	CleanupStack::Pop(self);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    59
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    60
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    61
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    62
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    63
Static factory function for creating a MIDI client utility object.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    64
This function is synchronous, unlike the other factory functions,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    65
because it doesn't need to perform any MIDI resource initialisation
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    66
The underlying controller that is created will be given its own heap.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    67
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    68
@param aObserver
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    69
       Reference to an object to receive callbacks on completion of asynchronous functions.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    70
@param aPriority
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    71
       The Priority Value - this client's relative priority. This is a value between EMdaPriorityMin and 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    72
       EMdaPriorityMax and represents a relative priority. A higher value indicates a more important request.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    73
@param aPref
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    74
       The Priority Preference - an additional audio policy parameter. The suggested default is 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    75
       EMdaPriorityPreferenceNone. Further values are given by TMdaPriorityPreference, and additional 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    76
       values may be supported by given phones and/or platforms, but should not be depended upon by 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    77
       portable code.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    78
@return Fully constructed utility object ready to have an OpenXxxx() function called.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    79
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    80
Note: The Priority Value and Priority Preference are used primarily when deciding what to do when
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    81
several audio clients attempt to play or record simultaneously. In addition to the Priority Value and Preference, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    82
the adaptation may consider other parameters such as the SecureId and Capabilities of the client process. 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    83
Whatever, the decision  as to what to do in such situations is up to the audio adaptation, and may
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    84
vary between different phones. Portable applications are advised not to assume any specific behaviour. 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    85
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    86
EXPORT_C CMidiClientUtility* CMidiClientUtility::NewL(MMidiClientUtilityObserver& aObserver, TInt aPriority, TInt aPref)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    87
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    88
	return NewL( aObserver, aPriority, aPref, EFalse );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    89
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    90
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    91
CMidiClientUtility::~CMidiClientUtility()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    92
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    93
	delete iBody;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    94
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    95
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    96
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    97
Asynchronous function to open a file containing MIDI data and perform
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    98
initialisation ready for playback
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    99
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   100
@param aFileName Name of the MIDI file to open
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   101
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   102
EXPORT_C void CMidiClientUtility::OpenFile(const TDesC& aFileName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   103
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   104
	iBody->OpenFile(aFileName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   105
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   106
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   107
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   108
Asynchronous function to open a file containing MIDI data and perform
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   109
initialisation ready for playback
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   110
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   111
@param aFile Open shared protected session handle to the midi file to read
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   112
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   113
EXPORT_C void CMidiClientUtility::OpenFile(const RFile& aFile)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   114
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   115
	iBody->OpenFile(const_cast<RFile&>(aFile));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   116
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   117
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   118
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   119
Asynchronous function to open a file containing MIDI data and perform
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   120
initialisation ready for playback
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   121
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   122
@param aFileSource TFileSource object which references either a filename or a
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   123
file handle to the midi file to read
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   124
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   125
EXPORT_C void CMidiClientUtility::OpenFile(const TMMSource& aSource)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   126
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   127
	iBody->OpenFile(aSource);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   128
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   129
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   130
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   131
Asynchronous function to open a descriptor containing MIDI data and perform
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   132
initialisation ready for playback
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   133
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   134
@param aDescriptor descriptor containing MIDI data
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   135
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   136
EXPORT_C void CMidiClientUtility::OpenDes(const TDesC8& aDescriptor)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   137
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   138
	iBody->OpenDes(aDescriptor);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   139
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   140
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   141
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   142
Asynchronous function to open a URL containing MIDI data and perform
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   143
initialisation ready for playback
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   144
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   145
@param  aUrl
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   146
        Uniform Resource Locator for a MIDI data stream
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   147
@param  aIapId
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   148
        Identifier of the Internet Access Point to use -
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   149
        available from CommDB, the comms connections database.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   150
        Defaults to using the default access point, as defined by CommDB
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   151
@param  aMimeType
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   152
        Mime type of the MIDI data stream to be played.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   153
        Defaults to nothing in which case the an attempt will be made to recognise the type of the MIDI data automatically.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   154
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   155
EXPORT_C void CMidiClientUtility::OpenUrl(const TDesC& aUrl,TInt aIapId,const TDesC8& aMimeType)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   156
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   157
	iBody->OpenUrl(aUrl, aIapId, aMimeType);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   158
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   159
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   160
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   161
Asynchronous function to initiate or resume playback of a previously opened resource.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   162
Also used to start an internal timer to establish a zero-time for the media stream
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   163
time relative to which commands with timestamps are timed against
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   164
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   165
EXPORT_C void CMidiClientUtility::Play()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   166
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   167
	iBody->Play();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   168
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   169
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   170
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   171
Stops playback of a resource but does not change the current position or release any resources.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   172
Pauses the internal timer if no resource is open
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   173
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   174
@param aFadeOutDuration
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   175
       Length of time over which the volume is faded out from the current settings to zero.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   176
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   177
EXPORT_C void CMidiClientUtility::Stop(const TTimeIntervalMicroSeconds& aFadeOutDuration)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   178
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   179
	iBody->Stop(aFadeOutDuration);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   180
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   181
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   182
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   183
Asynchronous function which closes any currently open resources, such as files, descriptors or URLs in use.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   184
Does nothing if there is nothing currently open.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   185
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   186
EXPORT_C void CMidiClientUtility::Close()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   187
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   188
	iBody->Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   189
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   190
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   191
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   192
Gets the current state of the MIDI client utility with regard to MIDI resources
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   193
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   194
@return The current state of the utility
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   195
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   196
EXPORT_C TMidiState CMidiClientUtility::State() const
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   197
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   198
	return iBody->State();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   199
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   200
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   201
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   202
Synchronous function to play a single note.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   203
Multiple calls to this function will be accommodated as far as the MIDI engine can
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   204
manage. The same functionality could be implemented using the SendMessage function
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   205
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   206
@param aChannel 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   207
       Logical channel to play note on. 0 <= aChannel <= 15.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   208
@param aNote 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   209
       Note to play. 0 <= aNote <= 127
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   210
@param aDuration 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   211
       Length of time to play note for.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   212
@param aNoteOnVelocity 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   213
       Velocity with which to start the note. 0 <= aNoteOnVelocity <= 127.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   214
@param aNoteOffVelocity 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   215
       Velocity with which to stop the note. 0 <= aNoteOffVelocity <= 127.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   216
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   217
EXPORT_C void CMidiClientUtility::PlayNoteL(TInt aChannel,TInt aNote,const TTimeIntervalMicroSeconds& aDuration,TInt aNoteOnVelocity,TInt aNoteOffVelocity)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   218
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   219
	iBody->PlayNoteL(aChannel, aNote, aDuration, aNoteOnVelocity, aNoteOffVelocity);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   220
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   221
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   222
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   223
Synchronous function to play a single note at a specified time.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   224
Multiple calls to this function will be accommodated as far as the MIDI engine can
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   225
manage. The same functionality could be implemented using the SendMessage function
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   226
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   227
@param aChannel 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   228
       Logical channel to play note on. 0 <= aChannel <= 15.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   229
@param aNote 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   230
       Note to play. 0 <= aNote <= 127
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   231
@param aStartTime 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   232
       specifies the time at which to start playing the note,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   233
       relative to the MIDI resource playing time or the time elapsed since Play() was called if no resource is present
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   234
@param aDuration
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   235
       Length of time to play note for.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   236
@param aNoteOnVelocity 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   237
       Velocity with which to start the note. 0 <= aNoteOnVelocity <= 127.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   238
@param aNoteOffVelocity
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   239
       Velocity with which to stop the note. 0 <= aNoteOffVelocity <= 127.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   240
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   241
EXPORT_C void CMidiClientUtility::PlayNoteL(TInt aChannel,TInt aNote,const TTimeIntervalMicroSeconds& aStartTime,const TTimeIntervalMicroSeconds& aDuration,TInt aNoteOnVelocity,TInt aNoteOffVelocity)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   242
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   243
	iBody->PlayNoteL(aChannel, aNote, aStartTime, aDuration, aNoteOnVelocity, aNoteOffVelocity);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   244
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   245
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   246
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   247
Stops the playback of all notes on the given channel,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   248
by means of an All Notes Off MIDI message
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   249
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   250
@param aChannel 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   251
       Logical channel to stop notes on. 0 <= aChannel <= 15
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   252
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   253
EXPORT_C void CMidiClientUtility::StopNotes(TInt aChannel)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   254
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   255
	iBody->StopNotes(aChannel);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   256
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   257
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   258
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   259
Synchronous function to commence playback of a note.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   260
Multiple calls to this function will be accommodated as far as the MIDI engine can manage
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   261
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   262
@param aChannel 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   263
       Logical channel to play note on. 0 <= aChannel <= 15
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   264
@param aNote 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   265
       Note to play. 0 <= aNote <= 127
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   266
@param aVelocity 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   267
       Velocity with which to start the note.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   268
       The legal integer range is 0 <= aVelocity <= 127, but the value zero
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   269
       actually causes the message to be interpreted as a Note Off message
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   270
       instead of a Note On.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   271
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   272
EXPORT_C void CMidiClientUtility::NoteOnL(TInt aChannel,TInt aNote,TInt aVelocity)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   273
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   274
	iBody->NoteOnL(aChannel, aNote, aVelocity);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   275
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   276
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   277
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   278
Synchronous function to terminate playback of a note. If no corresponding note
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   279
is found then no error is raised.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   280
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   281
@param aChannel 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   282
       Logical channel on which the note is playing. 0 <= aChannel <= 15.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   283
@param aNote 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   284
       Note to terminate. 0 <= aNote <= 127.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   285
@param aVelocity 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   286
       Velocity with which to stop the note. 0 <= aVelocity <= 127. There is no 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   287
	   standard behaviour corresponding with note off velocity.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   288
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   289
EXPORT_C void CMidiClientUtility::NoteOffL(TInt aChannel,TInt aNote,TInt aVelocity)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   290
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   291
	iBody->NoteOffL(aChannel, aNote, aVelocity);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   292
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   293
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   294
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   295
Gets the current playback rate factor of the currently open MIDI resource.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   296
The playback rate is independent from tempo,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   297
i.e., it can be used to give an overall speed factor for playback
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   298
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   299
@return Current playback rate in percent times 1000,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   300
        i.e., 100000 means original playback speed, 200000 means double speed,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   301
        and 50000 means half speed playback
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   302
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   303
EXPORT_C TInt CMidiClientUtility::PlaybackRateL() const
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   304
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   305
	return iBody->PlaybackRateL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   306
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   307
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   308
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   309
Sets the playback rate for the playback of the current MIDI resource.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   310
The playback rate is independent from tempo,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   311
i.e., it can be used to give an overall speed factor for playback.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   312
May be called whether playback is in progress or not.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   313
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   314
@param aRate 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   315
       Playback rate in percent times 1000,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   316
       i.e., 100000 means original playback speed, 200000 means double speed,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   317
       and 50000 means half speed playback
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   318
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   319
EXPORT_C void CMidiClientUtility::SetPlaybackRateL(TInt aRate)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   320
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   321
	iBody->SetPlaybackRateL(aRate);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   322
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   323
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   324
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   325
Gets the maximum playback rate in milli-percentage from the MIDI engine.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   326
@see SetPlaybackRate() for milli-percentage details
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   327
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   328
@return Maximum playback rate supported by MIDI player
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   329
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   330
EXPORT_C TInt CMidiClientUtility::MaxPlaybackRateL() const
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   331
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   332
	return iBody->MaxPlaybackRateL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   333
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   334
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   335
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   336
Gets the minimum playback rate in milli-percentage from the MIDI engine.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   337
@see SetPlaybackRate() for milli-percentage details.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   338
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   339
@return Minimum playback rate supported by MIDI player.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   340
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   341
EXPORT_C TInt CMidiClientUtility::MinPlaybackRateL() const
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   342
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   343
	return iBody->MinPlaybackRateL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   344
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   345
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   346
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   347
Gets the current tempo of the currently open MIDI resource. The tempo is independent
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   348
from the playback rate, i.e., the resulting playback speed will be affected by both.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   349
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   350
@return Tempo at the current position of the currently open resource in microbeats per minute,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   351
        i.e. BPM * 1000000. Filled in by the controller framework
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   352
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   353
EXPORT_C TInt CMidiClientUtility::TempoMicroBeatsPerMinuteL() const
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   354
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   355
	return iBody->TempoMicroBeatsPerMinuteL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   356
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   357
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   358
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   359
Sets the tempo at which the current MIDI resource should be played.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   360
May be called whether playback is in progress or not.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   361
The tempo is independent from the playback rate,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   362
i.e., the resulting playback speed will be affected by both
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   363
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   364
@param aMicroBeatsPerMinute 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   365
       Tempo in microbeats per minute (BPM*1000000) to set
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   366
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   367
EXPORT_C void CMidiClientUtility::SetTempoL(TInt aMicroBeatsPerMinute)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   368
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   369
	iBody->SetTempoL(aMicroBeatsPerMinute);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   370
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   371
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   372
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   373
Gets the pitch shift in use for the currently open MIDI resource
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   374
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   375
@return Pitch shift in cents, i.e. semitones * 100. One octave equals 1200 cents
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   376
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   377
EXPORT_C TInt CMidiClientUtility::PitchTranspositionCentsL() const
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   378
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   379
	return iBody->PitchTranspositionCentsL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   380
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   381
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   382
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   383
Sets the pitch shift to apply to the currently open MIDI resource.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   384
May be called during playback
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   385
aCents parameter is not checked - if the value is out of range, it is expected KErrArgument is return by MIDI engine.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   386
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   387
@param aCents 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   388
       Pitch shift in cents, i.e. semitones * 100. One octave equals 1200 cents
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   389
@return Actual pitch shift applied -
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   390
        may differ from the requested value due to limitations of the MIDI engine
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   391
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   392
EXPORT_C TInt CMidiClientUtility::SetPitchTranspositionL(TInt aCents)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   393
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   394
	return iBody->SetPitchTranspositionL(aCents);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   395
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   396
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   397
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   398
Gets the length of the currently open MIDI resource in micro-seconds
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   399
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   400
@return Duration in microseconds (seconds * 1000000).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   401
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   402
EXPORT_C TTimeIntervalMicroSeconds CMidiClientUtility::DurationMicroSecondsL() const
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   403
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   404
	return iBody->DurationMicroSecondsL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   405
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   406
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   407
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   408
Gets the length of the currently open MIDI resource in micro-beats
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   409
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   410
@return Duration in microbeats (beats * 1000000).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   411
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   412
EXPORT_C TInt64 CMidiClientUtility::DurationMicroBeatsL() const
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   413
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   414
	return iBody->DurationMicroBeatsL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   415
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   416
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   417
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   418
Gets the number of tracks present in the currently open MIDI resource
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   419
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   420
@return Number of tracks
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   421
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   422
EXPORT_C TInt CMidiClientUtility::NumTracksL() const
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   423
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   424
	return iBody->NumTracksL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   425
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   426
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   427
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   428
Mutes or unmutes a particular track
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   429
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   430
@param aTrack
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   431
       Index of the track to mute - 0 <= aTrack < NumTracksL().
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   432
@param aMuted
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   433
       ETrue to mute the track, EFalse to unmute it.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   434
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   435
EXPORT_C void CMidiClientUtility::SetTrackMuteL(TInt aTrack,TBool aMuted) const
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   436
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   437
	iBody->SetTrackMuteL(aTrack, aMuted);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   438
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   439
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   440
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   441
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   442
Gets the MIME type of the MIDI resource currently open
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   443
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   444
@return Descriptor containing the MIDI mime type
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   445
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   446
EXPORT_C const TDesC8& CMidiClientUtility::MimeTypeL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   447
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   448
	return iBody->MimeTypeL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   449
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   450
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   451
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   452
Gets the current temporal position of the MIDI resource being played.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   453
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   454
@return Microseconds relative to the start of the resource
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   455
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   456
EXPORT_C TTimeIntervalMicroSeconds CMidiClientUtility::PositionMicroSecondsL() const
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   457
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   458
	return iBody->PositionMicroSecondsL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   459
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   460
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   461
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   462
Change the position of the currently playing MIDI resource to the given position.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   463
May be called whenever a MIDI resource is open
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   464
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   465
@param aPosition
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   466
       Temporal position to move to. Clamped to (0, DurationMicroSecondsL()).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   467
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   468
EXPORT_C void CMidiClientUtility::SetPositionMicroSecondsL(const TTimeIntervalMicroSeconds& aPosition)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   469
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   470
	iBody->SetPositionMicroSecondsL(aPosition);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   471
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   472
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   473
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   474
Gets the current metrical position of the MIDI resource being played
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   475
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   476
@return Microbeats (BPM*1000000) relative to the start of the resource
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   477
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   478
EXPORT_C TInt64 CMidiClientUtility::PositionMicroBeatsL() const
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   479
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   480
	return iBody->PositionMicroBeatsL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   481
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   482
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   483
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   484
Change the position of the currently playing MIDI resource to the given position.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   485
May be called whenever a MIDI resource is open.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   486
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   487
@param aMicroBeats 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   488
       Metrical position to move to. Clamped to (0, DurationMicroBeatsL()).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   489
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   490
EXPORT_C void CMidiClientUtility::SetPositionMicroBeatsL(TInt64 aMicroBeats)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   491
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   492
	iBody->SetPositionMicroBeatsL(aMicroBeats);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   493
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   494
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   495
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   496
Sets the frequency at which MMIDIClientUtilityObserver::MmcuoSyncUpdateL(…) is called
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   497
to allow other components to synchronise with playback of this MIDI resource
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   498
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   499
@param aMicroSeconds 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   500
       Temporal interval to callback at. Used in preference to aMicroBeats if both are set
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   501
@param aMicroBeats 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   502
       Metrical interval to callback at. Set both parameters to zero to cancel.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   503
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   504
EXPORT_C void CMidiClientUtility::SetSyncUpdateCallbackIntervalL(const TTimeIntervalMicroSeconds& aMicroSeconds,TInt64 aMicroBeats)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   505
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   506
	iBody->SetSyncUpdateCallbackIntervalL(aMicroSeconds, aMicroBeats);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   507
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   508
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   509
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   510
Sends a single MIDI message to the MIDI engine
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   511
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   512
@param aMidiMessage 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   513
       Descriptor containing the MIDI message data.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   514
       If there are several MIDI messages in the buffer, only the first one is processed
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   515
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   516
EXPORT_C TInt CMidiClientUtility::SendMessageL(const TDesC8& aMidiMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   517
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   518
	return iBody->SendMessageL(aMidiMessage);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   519
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   520
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   521
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   522
Sends a single MIDI message, with time stamp, to the MIDI engine
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   523
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   524
@param aMidiMessage 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   525
       Descriptor containing the MIDI message data.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   526
       If there are several MIDI messages in the buffer, only the first one is processed
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   527
@param aTime 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   528
       The time at which to execute the message, relative to the MIDI resource playing
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   529
       time or the time elapsed since Play() was called if no resource is present
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   530
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   531
EXPORT_C TInt CMidiClientUtility::SendMessageL(const TDesC8& aMidiMessage,const TTimeIntervalMicroSeconds& aTime)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   532
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   533
	return iBody->SendMessageL(aMidiMessage, aTime);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   534
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   535
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   536
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   537
Sends a mip message to the MIDI engine. This is a convenience function,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   538
because the same functionality could be achieved with the SendMessage() function
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   539
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   540
@param aEntry 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   541
       Array of logical {channel, MIP} value pairs to send, highest priority first
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   542
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   543
EXPORT_C void CMidiClientUtility::SendMipMessageL(const RArray<TMipMessageEntry>& aEntry)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   544
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   545
	iBody->SendMipMessageL(aEntry);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   546
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   547
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   548
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   549
Gets the number of standard or custom sound banks currently available
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   550
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   551
@param aCustom 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   552
       Specifies whether to reference a custom or standard sound bank
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   553
@return Number of custom or standard sound banks available
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   554
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   555
EXPORT_C TInt CMidiClientUtility::NumberOfBanksL(TBool aCustom) const
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   556
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   557
	return iBody->NumberOfBanksL(aCustom);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   558
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   559
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   560
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   561
Gets the identifier of a sound bank. Bank identifier (aka bank number) is a
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   562
14-bit value consisting of MIDI bank MSB and LSB values
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   563
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   564
@param  aCustom 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   565
        Specifies whether to reference a custom or standard sound bank
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   566
@param  aBankIndex
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   567
        Index of sound bank where 0 <= aBankIndex < NumberOfBanksL(…)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   568
@return Identifier of the specified bank occupying, at most, 14 bits
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   569
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   570
EXPORT_C TInt CMidiClientUtility::GetBankIdL(TBool aCustom, TInt aBankIndex) const
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   571
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   572
	return iBody->GetBankIdL(aCustom, aBankIndex);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   573
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   574
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   575
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   576
Loads one or more custom sound banks from a file into memory for use.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   577
If several banks are loaded with consequent LoadCustomBanksL() function calls,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   578
the banks are combined if the bank sets have colliding bank numbers
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   579
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   580
@param aFileName 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   581
       Name of the file containing the custom sound bank
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   582
@param aBankCollectionIndex 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   583
       Identifier of the custom sound bank loaded, occupying no more than 14 bits
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   584
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   585
EXPORT_C void CMidiClientUtility::LoadCustomBankL(const TDesC& aFileName, TInt& aBankCollectionIndex)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   586
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   587
	iBody->LoadCustomBankL(aFileName, aBankCollectionIndex);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   588
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   589
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   590
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   591
Removes a custom sound bank from memory.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   592
Only valid for sound banks previously loaded from file.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   593
Once unloaded the custom sound bank is no longer available for use.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   594
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   595
@param aBankCollectionIndex 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   596
       Identifier of the custom sound bank to unload,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   597
       occupying no more than 14 bits
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   598
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   599
EXPORT_C void CMidiClientUtility::UnloadCustomBankL(TInt aBankCollectionIndex)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   600
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   601
	iBody->UnloadCustomBankL(aBankCollectionIndex);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   602
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   603
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   604
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   605
Query if a bank has been loaded to the memory
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   606
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   607
@param aBankCollectionIndex 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   608
       Identifier of the custom sound bank to check if it's in memory or not
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   609
@return ETrue if the specified bank is in memory, EFalse otherwise
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   610
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   611
EXPORT_C TBool CMidiClientUtility::CustomBankLoadedL(TInt aBankCollectionIndex) const
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   612
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   613
	return iBody->CustomBankLoadedL(aBankCollectionIndex);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   614
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   615
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   616
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   617
Removes all custom sound banks from memory.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   618
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   619
EXPORT_C void CMidiClientUtility::UnloadAllCustomBanksL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   620
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   621
	iBody->UnloadAllCustomBanksL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   622
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   623
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   624
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   625
Gets the number of instruments available in a given sound bank
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   626
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   627
@param aBankId 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   628
       Identifier of sound bank to reference, occupying no more than 14 bits
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   629
@param aCustom 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   630
       Specifies whether to reference a custom or standard sound bank
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   631
@return Count of the number of instruments available for the specified sound bank
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   632
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   633
EXPORT_C TInt CMidiClientUtility::NumberOfInstrumentsL(TInt aBankId,TBool aCustom) const
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   634
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   635
	return iBody->NumberOfInstrumentsL(aBankId, aCustom);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   636
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   637
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   638
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   639
Gets the identifier of an instrument.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   640
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   641
@param aBankId 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   642
       Identifier of the sound bank to reference, occupying no more than 14 bits.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   643
@param aCustom 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   644
       Specifies whether to reference a custom or standard sound bank.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   645
@param aInstrumentIndex 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   646
       Index of the instrument to reference where 0 <= aInstrumentIndex < NumberOfInstrumentsL(). 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   647
@return Identifier of specified instrument.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   648
        This may differ from the index since the index simply enumerates the instruments,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   649
        whereas identifiers may not be contiguous, especially where certain instruments
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   650
        correspond to General MIDI-defined instruments but not all instruments are
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   651
        present. Instrument identifiers are between 0 and 127 inclusive.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   652
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   653
EXPORT_C TInt CMidiClientUtility::GetInstrumentIdL(TInt aBankId,TBool aCustom,TInt aInstrumentIndex) const
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   654
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   655
	return iBody->GetInstrumentIdL(aBankId, aCustom, aInstrumentIndex);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   656
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   657
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   658
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   659
Gets the name of the given instrument.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   660
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   661
@param  aBankId
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   662
        Identifier of the bank that the instrument belongs to, occupying no more than 14 bits
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   663
@param  aCustom
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   664
        Specifies whether to reference a custom or standard sound bank
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   665
@param  aInstrumentId
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   666
        Identifier of the instrument under scrutiny. 0 <= iInstrumentId <= 127.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   667
@return Buffer containing the name of the specified instrument.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   668
        If it has no name then an empty descriptor is returned
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   669
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   670
EXPORT_C HBufC* CMidiClientUtility::InstrumentNameL(TInt aBankId, TBool aCustom, TInt aInstrumentId) const
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   671
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   672
	return iBody->InstrumentNameL(aBankId, aCustom, aInstrumentId);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   673
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   674
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   675
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   676
Sets a logical channel to use the given instrument.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   677
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   678
@param aChannel 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   679
       Logical channel to set the instrument for. 0 <= aChannel <= 15
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   680
@param aBankId 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   681
       Identifier of the bank that the instrument belongs to,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   682
       occupying no more than 14 bits.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   683
       The bank ID is a concatenation of MIDI bank MSB and LSB values
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   684
@param aInstrumentId 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   685
       Identifier of the instrument under scrutiny. 0 <= iInstrumentId <= 127.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   686
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   687
EXPORT_C void CMidiClientUtility::SetInstrumentL(TInt aChannel,TInt aBankId,TInt aInstrumentId)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   688
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   689
	iBody->SetInstrumentL(aChannel, aBankId, aInstrumentId);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   690
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   691
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   692
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   693
Loads an individual instrument from file into custom sound bank memory for use.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   694
The bank and instrument ids given in the file can be mapped into different bank
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   695
and instrument ids in memory
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   696
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   697
@param aFileName 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   698
       Name of the file containing the instrument
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   699
@param aFileBankId 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   700
       Identifier of the bank in the file from which to load the instrument,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   701
       occupying no more than 14 bits
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   702
@param aFileInstrumentId 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   703
       Identifier of the instrument to load. 0 <= aInstrumentId <= 127
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   704
@param aMemoryBankId 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   705
       Identifier of the custom bank in memory to load the instrument into,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   706
       occupying no more than 14 bits.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   707
@param aMemoryInstrumentId 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   708
       Identifier of the instrument in memory to load the new
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   709
       instrument into. 0 <= aInstrumentId <= 127.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   710
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   711
EXPORT_C void CMidiClientUtility::LoadCustomInstrumentL(const TDesC& aFileName,TInt aFileBankId,TInt aFileInstrumentId,TInt aMemoryBankId,TInt aMemoryInstrumentId)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   712
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   713
	iBody->LoadCustomInstrumentL(aFileName, aFileBankId, aFileInstrumentId, aMemoryBankId, aMemoryInstrumentId);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   714
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   715
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   716
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   717
Removes an instrument from custom sound bank memory.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   718
Only valid for instruments previously loaded from file.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   719
Once unloaded the instrument is no longer available for use
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   720
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   721
@param aCustomBankId 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   722
       Identifier of the custom sound bank containing
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   723
       the instrument to unload, occupying no more than 14 bits.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   724
@param aInstrumentId 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   725
       Identifier of the instrument to unload. 0 <= aInstrumentId <= 127
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   726
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   727
EXPORT_C void CMidiClientUtility::UnloadCustomInstrumentL(TInt aCustomBankId,TInt aInstrumentId)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   728
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   729
	iBody->UnloadCustomInstrumentL(aCustomBankId, aInstrumentId);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   730
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   731
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   732
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   733
Gets the name of a particular percussion key corresponding to a given note.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   734
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   735
@param aNote 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   736
       Note to query. 0 <= aNote <= 127
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   737
@param aBankId 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   738
       Identifier of the bank that the instrument belongs to, occupying no more than 14 bits.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   739
       The bank ID is a concatenation of MIDI bank MSB and LSB values.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   740
@param aCustom 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   741
       Specifies whether to reference a custom or standard sound bank
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   742
@param aInstrumentId 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   743
       Identifier of an instrument
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   744
@return Descriptor containing the name of the percussion key.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   745
        If the key does not have a name then an empty descriptor is returned
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   746
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   747
EXPORT_C HBufC* CMidiClientUtility::PercussionKeyNameL(TInt aNote, TInt aBankId, TBool aCustom, TInt aInstrumentId) const
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   748
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   749
	return iBody->PercussionKeyNameL(aNote, aBankId, aCustom, aInstrumentId);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   750
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   751
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   752
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   753
Get the stop time currently set for the MIDI resource
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   754
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   755
@param aStopTime 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   756
       Time at which playback will stop, relative to the start of the resource
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   757
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   758
EXPORT_C void CMidiClientUtility::StopTimeL(TTimeIntervalMicroSeconds& aStopTime) const
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   759
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   760
	iBody->StopTimeL(aStopTime);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   761
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   762
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   763
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   764
Sets the stop time to use for the currently open MIDI resource
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   765
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   766
@param aStopTime 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   767
       Time at which playback will stop, relative to the start of the resource.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   768
       Clamped to 0 and the duration of the resource
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   769
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   770
EXPORT_C void CMidiClientUtility::SetStopTimeL(const TTimeIntervalMicroSeconds& aStopTime)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   771
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   772
	iBody->SetStopTimeL(aStopTime);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   773
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   774
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   775
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   776
Set the number of times to repeat the current MIDI resource.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   777
After Stop() has been called, repeat number of times and the trailing silence are reset
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   778
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   779
@param aRepeatNumberOfTimes 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   780
       Number of time to repeat the resource during playback.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   781
       This includes the first playing
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   782
@param aTrailingSilence 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   783
       Time in microseconds to pause between repeats
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   784
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   785
EXPORT_C void CMidiClientUtility::SetRepeatsL(TInt aRepeatNumberOfTimes, const TTimeIntervalMicroSeconds& aTrailingSilence)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   786
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   787
	iBody->SetRepeatsL(aRepeatNumberOfTimes, aTrailingSilence);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   788
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   789
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   790
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   791
Gets the number of currently active voices.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   792
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   793
@return The number of currently active voices
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   794
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   795
EXPORT_C TInt CMidiClientUtility::PolyphonyL() const
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   796
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   797
	return iBody->PolyphonyL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   798
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   799
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   800
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   801
Gets the maximum number of logical channels supported by the MIDI engine.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   802
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   803
@return  The maximum number of logical channels that the MIDI engine supports, 0 <= aChannels <=15.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   804
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   805
EXPORT_C TInt CMidiClientUtility::ChannelsSupportedL() const
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   806
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   807
	return iBody->ChannelsSupportedL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   808
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   809
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   810
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   811
Get the current volume setting of a logical channel
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   812
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   813
@param aChannel 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   814
       Logical channel to query. 0 <= aChannel <= 15.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   815
@return Volume currently set on the specified channel in decibels
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   816
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   817
EXPORT_C TReal32 CMidiClientUtility::ChannelVolumeL(TInt aChannel) const
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   818
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   819
	return iBody->ChannelVolumeL(aChannel);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   820
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   821
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   822
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   823
Gets the Maximum volume setting that may be applied to a logical channel
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   824
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   825
@return Maximum volume setting. Minimum value is -infinity dB, which is the
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   826
       smallest possible value that TReal32 supports.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   827
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   828
EXPORT_C TReal32 CMidiClientUtility::MaxChannelVolumeL() const
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   829
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   830
	return iBody->MaxChannelVolumeL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   831
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   832
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   833
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   834
Set the volume of a channel.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   835
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   836
@param aChannel 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   837
       Logical channel to set the volume on. 0 <= aChannel <= 15
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   838
@param aVolume 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   839
       Volume currently set on the specified channel in decibels. The minimum
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   840
       channel volume supported value is -infinity dB, which is the smallest
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   841
       possible value that TReal32 supports. 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   842
	   The maximum channel volume can be set via MaxChannelVolumeL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   843
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   844
EXPORT_C void CMidiClientUtility::SetChannelVolumeL(TInt aChannel,TReal32 aVolume)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   845
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   846
	iBody->SetChannelVolumeL(aChannel, aVolume);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   847
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   848
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   849
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   850
Set the muting state of a channel without changing its volume setting.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   851
When unmuted the channel goes back to its previous volume setting
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   852
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   853
@param aChannel 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   854
       Logical channel to set the mute state of. 0 <= aChannel <= 15.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   855
@param aMuted 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   856
       ETrue to mute the channel, EFalse to unmute it.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   857
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   858
EXPORT_C void CMidiClientUtility::SetChannelMuteL(TInt aChannel,TBool aMuted)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   859
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   860
	iBody->SetChannelMuteL(aChannel, aMuted);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   861
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   862
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   863
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   864
Gets the overall volume of the MIDI client.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   865
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   866
@return The current overall volume setting
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   867
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   868
EXPORT_C TInt CMidiClientUtility::VolumeL() const
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   869
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   870
	return iBody->VolumeL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   871
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   872
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   873
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   874
Maximum volume setting that may be applied overall.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   875
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   876
@return Maximum volume setting. Minimum value is always zero which is silent
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   877
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   878
EXPORT_C TInt CMidiClientUtility::MaxVolumeL() const
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   879
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   880
	return iBody->MaxVolumeL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   881
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   882
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   883
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   884
Set the overall volume of the MIDI client.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   885
This setting scales all channel volumes respectively so the actual volume
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   886
that a channel is played at is (overall volume * channel volume / max volume).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   887
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   888
@param aVolume 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   889
       Overall volume setting to use
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   890
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   891
EXPORT_C void CMidiClientUtility::SetVolumeL(TInt aVolume)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   892
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   893
	iBody->SetVolumeL(aVolume);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   894
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   895
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   896
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   897
Length of time over which the volume is faded up from zero to the current settings
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   898
when playback is started.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   899
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   900
@param aRampDuration 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   901
       Duration of the ramping period.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   902
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   903
EXPORT_C void CMidiClientUtility::SetVolumeRampL(const TTimeIntervalMicroSeconds& aRampDuration)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   904
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   905
	iBody->SetVolumeRampL(aRampDuration);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   906
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   907
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   908
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   909
Get the current stereo balance value
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   910
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   911
@return Balance value ranging from KMMFBalanceMaxLeft to KMMFBalanceMaxRight
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   912
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   913
EXPORT_C TInt CMidiClientUtility::GetBalanceL() const
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   914
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   915
	return iBody->GetBalanceL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   916
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   917
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   918
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   919
Set the current stereo balance value
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   920
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   921
@param aBalance 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   922
       Balance value to set. Defaults to KMMFBalanceCenter to restore equal left-right balance
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   923
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   924
EXPORT_C void CMidiClientUtility::SetBalanceL(TInt aBalance)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   925
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   926
	iBody->SetBalanceL(aBalance);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   927
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   928
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   929
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   930
Set the priority with which this client plays MIDI data
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   931
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   932
@param  aPriority
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   933
        The Priority Value.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   934
@param  aPref
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   935
        The Priority Preference.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   936
        
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   937
@see CMidiClientUtility::NewL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   938
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   939
EXPORT_C void CMidiClientUtility::SetPriorityL(TInt aPriority, TInt aPref)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   940
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   941
	iBody->SetPriorityL(aPriority, aPref);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   942
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   943
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   944
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   945
Get the number of meta data entries currently known about in the currently open
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   946
resource. XMF,SMF meta data are part of the XMF,SMF file header and can thus be examined
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   947
before playback. If there is no XMF,SMF resource open, will return zero.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   948
Standard MIDI file meta data entries encountered during playback will be passed back
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   949
via MMIDIClientUtilityObserver::MmcuoMetaDataEntryFound()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   950
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   951
@return Number of XMF meta data entries currently known about
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   952
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   953
EXPORT_C TInt CMidiClientUtility::NumberOfMetaDataEntriesL() const
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   954
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   955
	return iBody->NumberOfMetaDataEntriesL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   956
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   957
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   958
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   959
Retrieve the specified XMF,SMF meta data entry.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   960
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   961
@param aMetaDataIndex 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   962
       Index of the meta data entry to retrieve
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   963
@return Meta data entry. Ownership is passed to the client.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   964
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   965
EXPORT_C CMMFMetaDataEntry* CMidiClientUtility::GetMetaDataEntryL(TInt aMetaDataIndex) const
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   966
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   967
	return iBody->GetMetaDataEntryL(aMetaDataIndex);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   968
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   969
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   970
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   971
Synchronously pass implementation-specific commands to the MIDI engine
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   972
and receive a response
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   973
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   974
@param aDestination 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   975
       Recipient of the message. Should be initialised with KUidInterfaceMIDI
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   976
       and a TInt describing the server-side object to which the command should be delivered.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   977
       The TInt will usually be KMMFObjectHandleController, to deliver the message to the
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   978
       controller plugin, which is the default value.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   979
@param aFunction 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   980
       Index of the function to perform
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   981
@param aDataTo1 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   982
       First command data buffer to send, eg command parameters
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   983
@param aDataTo2 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   984
       Second command data buffer to send, eg data parameters
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   985
@param aDataFrom 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   986
       Buffer to receive data in response to the command.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   987
       The user must ensure that it is large enough to hold all the data returned.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   988
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   989
EXPORT_C void CMidiClientUtility::CustomCommandSyncL(const TMMFMessageDestinationPckg& aDestination, TInt aFunction, const TDesC8& aDataTo1, const TDesC8& aDataTo2, TDes8& aDataFrom)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   990
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   991
	iBody->CustomCommandSyncL(aDestination, aFunction, aDataTo1, aDataTo2, aDataFrom);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   992
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   993
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   994
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   995
Synchronously pass implementation-specific commands to the MIDI engine.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   996
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   997
@param aDestination 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   998
       Recipient of the message. Should be initialised with KUidInterfaceMIDI
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   999
       and a TInt describing the server-side object to which the command should be delivered.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1000
       The TInt will usually be KMMFObjectHandleController, to deliver the message to the
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1001
       controller plugin, which is the default value.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1002
@param aFunction 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1003
       Index of the function to perform
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1004
@param aDataTo1 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1005
       First command data buffer to send, eg command parameters
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1006
@param aDataTo2 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1007
       Second command data buffer to send, eg data parameters
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1008
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1009
EXPORT_C void CMidiClientUtility::CustomCommandSyncL(const TMMFMessageDestinationPckg& aDestination, TInt aFunction, const TDesC8& aDataTo1, const TDesC8& aDataTo2)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1010
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1011
	iBody->CustomCommandSyncL(aDestination, aFunction, aDataTo1, aDataTo2);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1012
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1013
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1014
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1015
Asynchronously pass implementation-specific commands to the MIDI engine
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1016
and receive a response
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1017
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1018
@param aDestination 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1019
       aDestination Recipient of the message. Should be initialised with KUidInterfaceMIDI
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1020
       and a TInt describing the server-side object to which the command should be delivered.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1021
       The TInt will usually be KMMFObjectHandleController, to deliver the message to the
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1022
       controller plugin, which is the default value.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1023
@param aFunction 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1024
       Index of the function to perform
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1025
@param aDataTo1 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1026
       First command data buffer to send, eg command parameters
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1027
@param aDataTo2 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1028
       Second command data buffer to send, eg data parameters
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1029
@param aDataFrom 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1030
       Buffer to receive data in response to the command.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1031
       The user must ensure that it is large enough to hold all the data returned.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1032
@param aStatus
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1033
       Status flag belonging to an active object that will have it's RunL() called
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1034
       when this request complete
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1035
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1036
EXPORT_C void CMidiClientUtility::CustomCommandAsync(const TMMFMessageDestinationPckg& aDestination, TInt aFunction, const TDesC8& aDataTo1, const TDesC8& aDataTo2, TDes8& aDataFrom, TRequestStatus& aStatus)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1037
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1038
	iBody->CustomCommandAsync(aDestination, aFunction, aDataTo1, aDataTo2, aDataFrom, aStatus);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1039
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1040
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1041
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1042
Asynchronously pass implementation-specific commands to the MIDI engine
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1043
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1044
@param aDestination 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1045
       aDestination Recipient of the message. Should be initialised with KUidInterfaceMIDI
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1046
       and a TInt describing the server-side object to which the command should be delivered.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1047
       The TInt will usually be KMMFObjectHandleController, to deliver the message to the
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1048
       controller plugin, which is the default value.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1049
@param aFunction 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1050
       Index of the function to perform
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1051
@param aDataTo1 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1052
       First command data buffer to send, eg command parameters
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1053
@param aDataTo2 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1054
       Second command data buffer to send, eg data parameters
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1055
@param aStatus 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1056
       Status flag belonging to an active object that will have it's RunL() called
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1057
       when this request complete
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1058
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1059
EXPORT_C void CMidiClientUtility::CustomCommandAsync(const TMMFMessageDestinationPckg& aDestination, TInt aFunction, const TDesC8& aDataTo1, const TDesC8& aDataTo2, TRequestStatus& aStatus)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1060
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1061
	iBody->CustomCommandAsync(aDestination, aFunction, aDataTo1, aDataTo2, aStatus);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1062
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1063
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1064
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1065
Gets a controller's DRM custom command implementation.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1066
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1067
@return A pointer to a controller's DRM custom command implementation or NULL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1068
		if the interface can not be obtained
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1069
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1070
EXPORT_C MMMFDRMCustomCommand* CMidiClientUtility::GetDRMCustomCommand()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1071
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1072
	return iBody->GetDRMCustomCommand();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1073
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1074
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1075
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1076
Set the max polyphony the engine can handle
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1077
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1078
@param aMaxNotes 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1079
       Max polyphony level,  0 <= PolyphonyL() <= aMaxNotes
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1080
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1081
EXPORT_C void CMidiClientUtility::SetMaxPolyphonyL(TInt aMaxNotes)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1082
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1083
	iBody->SetMaxPolyphonyL(aMaxNotes);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1084
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1085
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1086
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1087
Gets the number of times the current opened resources has to be repeated
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1088
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1089
@return The number of time the current opened resources has to be repeated
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1090
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1091
EXPORT_C TInt CMidiClientUtility::GetRepeats() const
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1092
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1093
	return iBody->GetRepeats();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1094
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1095
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1096
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1097
Loads one or more custom sound banks from a descriptor into memory for use.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1098
If several banks are loaded with consequent LoadCustomBanksL() function calls,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1099
the banks are combined if the bank sets have colliding bank numbers
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1100
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1101
@param aBankData 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1102
       Descriptor containing the custom sound bank
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1103
@param aBankId 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1104
       Identifier of the custom sound bank loaded, occupying no more than 14 bits.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1105
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1106
EXPORT_C void CMidiClientUtility::LoadCustomBankDataL(const TDesC8& aBankData,TInt& aBankId)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1107
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1108
	iBody->LoadCustomBankDataL(aBankData, aBankId);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1109
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1110
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1111
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1112
Loads an individual instrument from descriptor into custom sound bank memory for use.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1113
The bank and instrument ids given in the descriptor can be mapped into different bank
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1114
and instrument ids in memory
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1115
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1116
@param aInstrumentData 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1117
       Descriptor containing the instrument
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1118
@param aBankDataId 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1119
       Identifier of the bank in the descriptor from which to load the instrument,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1120
       occupying no more than 14 bits
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1121
@param aInstrumentDataId 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1122
       Identifier of the instrument to load. 0 <= aInstrumentId <= 127
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1123
@param aMemoryBankId 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1124
       Identifier of the custom bank in memory to load the instrument into,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1125
       occupying no more than 14 bits
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1126
@param aMemoryInstrumentId 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1127
       Identifier of the instrument in memory to load the new
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1128
       instrument into. 0 <= aInstrumentId <= 127.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1129
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1130
EXPORT_C void CMidiClientUtility::LoadCustomInstrumentDataL(const TDesC8& aInstrumentData, TInt aBankDataId, TInt aInstrumentDataId, TInt aMemoryBankId, TInt aMemoryInstrumentId)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1131
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1132
	iBody->LoadCustomInstrumentDataL(aInstrumentData, aBankDataId, aInstrumentDataId, aMemoryBankId, aMemoryInstrumentId);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1133
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1134
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1135
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1136
Tell the MIDI engine to use a custom bank or a standard bank
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1137
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1138
@param aCustom 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1139
       If Etrue the custom bank in memory is used otherwise the standard bank
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1140
       is used leaving the custom bank in memory
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1141
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1142
EXPORT_C void CMidiClientUtility::SetBankL(TBool aCustom)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1143
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1144
	iBody->SetBankL(aCustom);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1145
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1146
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1147
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1148
Gets the muting status of a specific track
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1149
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1150
@param aTrack 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1151
       The track to query
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1152
@return The mute status of the track.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1153
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1154
EXPORT_C TBool CMidiClientUtility::IsTrackMuteL(TInt aTrack) const
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1155
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1156
	return iBody->IsTrackMuteL(aTrack);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1157
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1158
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1159
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1160
Gets the muting status of a specific channel
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1161
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1162
@param aChannel 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1163
       The channel to query
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1164
@return The mute status of the channel
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1165
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1166
EXPORT_C TBool CMidiClientUtility::IsChannelMuteL(TInt aChannel) const
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1167
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1168
	return iBody->IsChannelMuteL(aChannel);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1169
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1170
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1171
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1172
Gets the instrument assigned to a specified channel
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1173
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1174
@param aChannel 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1175
       Logical channel, 0 <= aChannel <= 15.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1176
@param aInstrumentId 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1177
       Identifier of the instrument assigned to aChannel. 0 <= iInstrumentId <= 127
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1178
@param aBankId 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1179
       Identifier of the bank that the instrument belongs to, occupying no more than 14 bits
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1180
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1181
EXPORT_C void CMidiClientUtility::GetInstrumentL(TInt aChannel, TInt& aInstrumentId, TInt& aBankId)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1182
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1183
	iBody->GetInstrumentL(aChannel, aInstrumentId, aBankId);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1184
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1185
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1186
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1187
Get the maximum polyphony level that the engine can handle
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1188
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1189
@return The maximum number of simultaneous notes the engine can handle.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1190
		0 <= PolyphonyL() <= MaxPolyphonyL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1191
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1192
EXPORT_C TInt CMidiClientUtility::MaxPolyphonyL() const
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1193
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1194
	return iBody->MaxPolyphonyL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1195
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1196