Mercurial > hg > touchkeys
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 } |