| 98 | } |
| 99 | |
| 100 | void TranscriptionManager::_runModel() |
| 101 | { |
| 102 | mBasicPitch.setParameters(mProcessor->getParameterValue(ParameterHelpers::NoteSensitivityId), |
| 103 | mProcessor->getParameterValue(ParameterHelpers::SplitSensitivityId), |
| 104 | mProcessor->getParameterValue(ParameterHelpers::MinimumNoteDurationId)); |
| 105 | mBasicPitch.transcribeToMIDI( |
| 106 | mProcessor->getSourceAudioManager()->getDownsampledSourceAudioForTranscription().getWritePointer(0), |
| 107 | mProcessor->getSourceAudioManager()->getNumSamplesDownAcquired()); |
| 108 | |
| 109 | mNoteOptions.setParameters( |
| 110 | mProcessor->getParameterValue(ParameterHelpers::EnableNoteQuantizationId) > 0.5f, |
| 111 | static_cast<NoteUtils::RootNote>(mProcessor->getParameterValue(ParameterHelpers::KeyRootNoteId)), |
| 112 | static_cast<NoteUtils::ScaleType>(mProcessor->getParameterValue(ParameterHelpers::KeyTypeId)), |
| 113 | static_cast<NoteUtils::SnapMode>(mProcessor->getParameterValue(ParameterHelpers::KeySnapModeId)), |
| 114 | static_cast<int>(mProcessor->getParameterValue(ParameterHelpers::MinMidiNoteId)), |
| 115 | static_cast<int>(mProcessor->getParameterValue(ParameterHelpers::MaxMidiNoteId))); |
| 116 | |
| 117 | auto post_processed_notes = mNoteOptions.process(mBasicPitch.getNoteEvents()); |
| 118 | |
| 119 | mTimeQuantizeOptions.setParameters( |
| 120 | mProcessor->getParameterValue(ParameterHelpers::EnableTimeQuantizationId) > 0.5f, |
| 121 | static_cast<TimeQuantizeUtils::TimeDivisions>(mProcessor->getParameterValue(ParameterHelpers::TimeDivisionId)), |
| 122 | mProcessor->getParameterValue(ParameterHelpers::QuantizationForceId)); |
| 123 | |
| 124 | mPostProcessedNotes = mTimeQuantizeOptions.quantize(post_processed_notes); |
| 125 | |
| 126 | Notes::dropOverlappingPitchBends(mPostProcessedNotes); |
| 127 | Notes::mergeOverlappingNotesWithSamePitch(mPostProcessedNotes); |
| 128 | |
| 129 | // For the synth |
| 130 | auto single_events = SynthController::buildMidiEventsVector(mPostProcessedNotes); |
| 131 | mProcessor->getPlayer()->getSynthController()->setNewMidiEventsVectorToUse(single_events); |
| 132 | |
| 133 | mProcessor->setStateToPopulatedAudioAndMidiRegions(); |
| 134 | } |
| 135 | |
| 136 | void TranscriptionManager::_updateTranscription() |
| 137 | { |
nothing calls this directly
no test coverage detected