| 197 | } |
| 198 | |
| 199 | bool SourceAudioManager::onFileDrop(const File& inFile) |
| 200 | { |
| 201 | if (mProcessor->getState() == EmptyAudioAndMidiRegions || mProcessor->getState() == PopulatedAudioAndMidiRegions) { |
| 202 | mProcessor->clear(); |
| 203 | bool success = AudioUtils::loadAudioFile(inFile, mSourceAudio, mSourceAudioSampleRate); |
| 204 | |
| 205 | if (!success) { |
| 206 | mProcessor->clear(); |
| 207 | NativeMessageBox::showMessageBoxAsync( |
| 208 | MessageBoxIconType::NoIcon, |
| 209 | "Could not load the audio file.", |
| 210 | "Check your file format (Accepted formats: .wav, .aiff, .flac, .mp3, .ogg)."); |
| 211 | return false; |
| 212 | } |
| 213 | |
| 214 | // Downsample to basic pitch sample rate |
| 215 | AudioUtils::resampleBuffer( |
| 216 | mSourceAudio, mDownsampledSourceAudio, mSourceAudioSampleRate, BASIC_PITCH_SAMPLE_RATE); |
| 217 | |
| 218 | // Resample to current plugin sample rate for playback |
| 219 | if (mSourceAudioSampleRate != mSampleRate) { |
| 220 | AudioBuffer<float> tmp_buffer; |
| 221 | AudioUtils::resampleBuffer(mSourceAudio, tmp_buffer, mSourceAudioSampleRate, mSampleRate); |
| 222 | mSourceAudio = std::move(tmp_buffer); |
| 223 | mSourceAudioSampleRate = mSampleRate; |
| 224 | } |
| 225 | |
| 226 | mNumSamplesAcquiredDown = mDownsampledSourceAudio.getNumSamples(); |
| 227 | mNumSamplesAcquired = mSourceAudio.getNumSamples(); |
| 228 | mDuration = static_cast<double>(mNumSamplesAcquiredDown) / BASIC_PITCH_SAMPLE_RATE; |
| 229 | |
| 230 | mDroppedFilename = inFile.getFileNameWithoutExtension(); |
| 231 | mSourceFile = inFile; |
| 232 | |
| 233 | auto& tree = mProcessor->getValueTree(); |
| 234 | tree.setPropertyExcludingListener(this, NnId::SourceAudioNativeSrPathId, inFile.getFullPathName(), nullptr); |
| 235 | mProcessor->getTranscriptionManager()->getTimeQuantizeOptions().fileLoaded(); |
| 236 | |
| 237 | mThumbnail.clear(); |
| 238 | mThumbnailCache.clear(); |
| 239 | mThumbnail.setSource(&mDownsampledSourceAudio, BASIC_PITCH_SAMPLE_RATE, 0); |
| 240 | |
| 241 | // Launch transcription job |
| 242 | mProcessor->getTranscriptionManager()->launchTranscribeJob(); |
| 243 | |
| 244 | } else { |
| 245 | jassertfalse; |
| 246 | } |
| 247 | |
| 248 | return true; |
| 249 | } |
| 250 | |
| 251 | void SourceAudioManager::clear() |
| 252 | { |
no test coverage detected