comparison Source/Mappings/KeyDivision/TouchkeyKeyDivisionMappingFactory.cpp @ 7:353276611036

Move pitch wheel range into a central location in MidiKeyboardSegment, eliminating local copies in OscMidiConverter etc. Also suppress some unneeded debugging messages in TouchkeyDevice.
author Andrew McPherson <andrewm@eecs.qmul.ac.uk>
date Sun, 17 Nov 2013 13:53:21 +0000
parents 3580ffe87dc8
children 0deac2806a7b
comparison
equal deleted inserted replaced
6:36fe60d0aadb 7:353276611036
21 which triggers different actions or pitches depending on where the key 21 which triggers different actions or pitches depending on where the key
22 was struck. 22 was struck.
23 */ 23 */
24 24
25 #include "TouchkeyKeyDivisionMappingFactory.h" 25 #include "TouchkeyKeyDivisionMappingFactory.h"
26
27 const float TouchkeyKeyDivisionMappingFactory::kDefaultPitchWheelRangeSemitones = 2.0;
28 26
29 // Yarman-24 Turkish microtonal tuning: 27 // Yarman-24 Turkish microtonal tuning:
30 /* 1/1 RAST C 28 /* 1/1 RAST C
31 84.360 Nim Zengule C#/Db 29 84.360 Nim Zengule C#/Db
32 145.112 Zengule Cᵻ/Dƀ 30 145.112 Zengule Cᵻ/Dƀ
114 * C C# D D# E F F# G G# A A# B 112 * C C# D D# E F F# G G# A A# B
115 */ 113 */
116 114
117 TouchkeyKeyDivisionMappingFactory::TouchkeyKeyDivisionMappingFactory(PianoKeyboard &keyboard, MidiKeyboardSegment& segment) 115 TouchkeyKeyDivisionMappingFactory::TouchkeyKeyDivisionMappingFactory(PianoKeyboard &keyboard, MidiKeyboardSegment& segment)
118 : TouchkeyBaseMappingFactory<TouchkeyKeyDivisionMapping>(keyboard, segment), 116 : TouchkeyBaseMappingFactory<TouchkeyKeyDivisionMapping>(keyboard, segment),
119 pitchWheelRangeSemitones_(kDefaultPitchWheelRangeSemitones),
120 numSegmentsPerKey_(TouchkeyKeyDivisionMapping::kDefaultNumberOfSegments), 117 numSegmentsPerKey_(TouchkeyKeyDivisionMapping::kDefaultNumberOfSegments),
121 timeout_(TouchkeyKeyDivisionMapping::kDefaultDetectionTimeout), 118 timeout_(TouchkeyKeyDivisionMapping::kDefaultDetectionTimeout),
122 detectionParameter_(TouchkeyKeyDivisionMapping::kDefaultDetectionParameter), 119 detectionParameter_(TouchkeyKeyDivisionMapping::kDefaultDetectionParameter),
123 retriggerable_(false), 120 retriggerable_(false),
124 retriggerNumFrames_(TouchkeyKeyDivisionMapping::kDefaultRetriggerNumFrames), 121 retriggerNumFrames_(TouchkeyKeyDivisionMapping::kDefaultRetriggerNumFrames),
125 retriggerKeepsVelocity_(true), 122 retriggerKeepsVelocity_(true),
126 referenceNote_(0), globalOffsetCents_(0) 123 referenceNote_(0), globalOffsetCents_(0)
127 { 124 {
128 //setName("/touchkeys/segmentpitch"); 125 //setName("/touchkeys/segmentpitch");
129 setBendParameters();
130 }
131
132 void TouchkeyKeyDivisionMappingFactory::setMIDIPitchWheelRange(float maxBendSemitones) {
133 if(maxBendSemitones <= 0)
134 return;
135 pitchWheelRangeSemitones_ = maxBendSemitones;
136
137 setBendParameters(); 126 setBendParameters();
138 } 127 }
139 128
140 void TouchkeyKeyDivisionMappingFactory::setName(const string& name) { 129 void TouchkeyKeyDivisionMappingFactory::setName(const string& name) {
141 TouchkeyBaseMappingFactory<TouchkeyKeyDivisionMapping>::setName(name); 130 TouchkeyBaseMappingFactory<TouchkeyKeyDivisionMapping>::setName(name);
165 mapping->setDetectionParameter(detectionParameter_); 154 mapping->setDetectionParameter(detectionParameter_);
166 mapping->setRetriggerable(retriggerable_, retriggerNumFrames_, retriggerKeepsVelocity_); 155 mapping->setRetriggerable(retriggerable_, retriggerNumFrames_, retriggerKeepsVelocity_);
167 } 156 }
168 157
169 void TouchkeyKeyDivisionMappingFactory::setBendParameters() { 158 void TouchkeyKeyDivisionMappingFactory::setBendParameters() {
170 setMidiParameters(MidiKeyboardSegment::kControlPitchWheel, -pitchWheelRangeSemitones_, pitchWheelRangeSemitones_, 0.0); 159 // Range of 0 indicates special case of using global pitch wheel range
160 setMidiParameters(MidiKeyboardSegment::kControlPitchWheel, 0.0, 0.0, 0.0);
171 161
172 if(midiConverter_ != 0) { 162 if(midiConverter_ != 0) {
173 midiConverter_->setMidiPitchWheelRange(pitchWheelRangeSemitones_);
174 midiConverter_->listenToIncomingControl(MidiKeyboardSegment::kControlPitchWheel); 163 midiConverter_->listenToIncomingControl(MidiKeyboardSegment::kControlPitchWheel);
175 } 164 }
176 } 165 }