41 CMMAMIDITempoControl::CMMAMIDITempoControl(CMMAMIDIPlayer* aPlayer) |
41 CMMAMIDITempoControl::CMMAMIDITempoControl(CMMAMIDIPlayer* aPlayer) |
42 { |
42 { |
43 iPlayer = aPlayer; |
43 iPlayer = aPlayer; |
44 iTempo = KMMAMIDIDefaultTempoInMicroBeats; |
44 iTempo = KMMAMIDIDefaultTempoInMicroBeats; |
45 |
45 |
46 LOG( EJavaMMAPI, EInfo, "MMA:CMMAMIDITempoControl::CMMAMIDITempoControl"); |
46 LOG(EJavaMMAPI, EInfo, "MMA:CMMAMIDITempoControl::CMMAMIDITempoControl"); |
47 } |
47 } |
48 |
48 |
49 CMMAMIDITempoControl::~CMMAMIDITempoControl() |
49 CMMAMIDITempoControl::~CMMAMIDITempoControl() |
50 { |
50 { |
51 LOG( EJavaMMAPI, EInfo, "MMA:CMMAMIDITempoControl::~CMMAMIDITempoControl"); |
51 LOG(EJavaMMAPI, EInfo, "MMA:CMMAMIDITempoControl::~CMMAMIDITempoControl"); |
52 } |
52 } |
53 |
53 |
54 inline void CMMAMIDITempoControl::ConstructL() |
54 inline void CMMAMIDITempoControl::ConstructL() |
55 { |
55 { |
56 LOG( EJavaMMAPI, EInfo, "MMA:CMMAMIDITempoControl::ConstructL"); |
56 LOG(EJavaMMAPI, EInfo, "MMA:CMMAMIDITempoControl::ConstructL"); |
57 |
57 |
58 iPlayer->addObserverL(this); |
58 iPlayer->addObserverL(this); |
59 iPlayer->AddStateListenerL(this); |
59 iPlayer->AddStateListenerL(this); |
60 } |
60 } |
61 |
61 |
62 const TDesC& CMMAMIDITempoControl::ClassName() const |
62 const TDesC& CMMAMIDITempoControl::ClassName() const |
63 { |
63 { |
64 LOG( EJavaMMAPI, EInfo, "MMA:CMMAMIDITempoControl::ClassName"); |
64 LOG(EJavaMMAPI, EInfo, "MMA:CMMAMIDITempoControl::ClassName"); |
65 return KMIDITempoControlName; |
65 return KMIDITempoControlName; |
66 } |
66 } |
67 |
67 |
68 |
68 |
69 TInt CMMAMIDITempoControl::TempoL() |
69 TInt CMMAMIDITempoControl::TempoL() |
70 { |
70 { |
71 LOG( EJavaMMAPI, EInfo, "MMA: CMMAMIDITempoControl: TempoL"); |
71 LOG(EJavaMMAPI, EInfo, "MMA: CMMAMIDITempoControl: TempoL"); |
72 |
72 |
73 return iTempo / KMicroBeatsInMiliBeat; |
73 return iTempo / KMicroBeatsInMiliBeat; |
74 } |
74 } |
75 |
75 |
76 TInt CMMAMIDITempoControl::SetTempoL(TInt aTempo) |
76 TInt CMMAMIDITempoControl::SetTempoL(TInt aTempo) |
77 { |
77 { |
78 LOG( EJavaMMAPI, EInfo, "MMA: CMMAMIDITempoControl: SetTempoL"); |
78 LOG(EJavaMMAPI, EInfo, "MMA: CMMAMIDITempoControl: SetTempoL"); |
79 TInt tempo = aTempo; |
79 TInt tempo = aTempo; |
80 if (tempo < KMMAMIDIMinimumTempo) |
80 if (tempo < KMMAMIDIMinimumTempo) |
81 { |
81 { |
82 tempo = KMMAMIDIMinimumTempo; |
82 tempo = KMMAMIDIMinimumTempo; |
83 } |
83 } |
84 if (tempo > KMMAMIDIMaximumTempo) |
84 if (tempo > KMMAMIDIMaximumTempo) |
85 { |
85 { |
86 tempo = KMMAMIDIMaximumTempo; |
86 tempo = KMMAMIDIMaximumTempo; |
87 } |
87 } |
88 |
88 |
89 LOG1( EJavaMMAPI, EInfo, "MMA: CMMAMIDITempoControl: SetTempoL: setting tempo %d", |
89 LOG1(EJavaMMAPI, EInfo, "MMA: CMMAMIDITempoControl: SetTempoL: setting tempo %d", |
90 tempo); |
90 tempo); |
91 |
91 |
92 // Convert tempo to micro-beats. |
92 // Convert tempo to micro-beats. |
93 tempo *= KMicroBeatsInMiliBeat; |
93 tempo *= KMicroBeatsInMiliBeat; |
94 |
94 |
95 // Set the tempo to the midi client if the player state is not REALIZED. |
95 // Set the tempo to the midi client if the player state is not REALIZED. |
143 return iPlayer->MidiClient()->MinPlaybackRateL(); |
143 return iPlayer->MidiClient()->MinPlaybackRateL(); |
144 } |
144 } |
145 |
145 |
146 void CMMAMIDITempoControl::StateChanged(TInt aState) |
146 void CMMAMIDITempoControl::StateChanged(TInt aState) |
147 { |
147 { |
148 LOG1( EJavaMMAPI, EInfo, "CMMAMIDITempoControl:: StateChanged, state = %d", aState); |
148 LOG1(EJavaMMAPI, EInfo, "CMMAMIDITempoControl:: StateChanged, state = %d", aState); |
149 |
149 |
150 // If tempo was set when the player was in REALIZED state, set the tempo |
150 // If tempo was set when the player was in REALIZED state, set the tempo |
151 // now when the player has been prefetched. |
151 // now when the player has been prefetched. |
152 if ((aState == CMMAPlayer::EPrefetched) && |
152 if ((aState == CMMAPlayer::EPrefetched) && |
153 (iTempo != KMMAMIDIDefaultTempoInMicroBeats)) |
153 (iTempo != KMMAMIDIDefaultTempoInMicroBeats)) |
154 { |
154 { |
155 CMidiClientUtility* midi = iPlayer->MidiClient(); |
155 CMidiClientUtility* midi = iPlayer->MidiClient(); |
156 TRAPD(err, midi->SetTempoL(iTempo)); |
156 TRAPD(err, midi->SetTempoL(iTempo)); |
157 |
157 |
158 ELOG1( EJavaMMAPI, "CMMAMIDITempoControl:: StateChanged, err = %d", err); |
158 ELOG1(EJavaMMAPI, "CMMAMIDITempoControl:: StateChanged, err = %d", err); |
159 |
159 |
160 if (err != KErrNone) |
160 if (err != KErrNone) |
161 { |
161 { |
162 iPlayer->PostStringEvent(CMMAPlayerEvent::EError, |
162 iPlayer->PostStringEvent(CMMAPlayerEvent::EError, |
163 KMMAMidiTempoStateChangedError); |
163 KMMAMidiTempoStateChangedError); |