void JuceBoxAudioProcessor::loadSound() { Logger::writeToLog("- loadSound()."); synth.clearSounds(); if (!sampleFile.existsAsFile()) { Logger::writeToLog("\"" + sampleFile.getFullPathName() + "\" doesn't exist."); return; } AudioFormatReader* reader = formatManager.createReaderFor(sampleFile); if (reader == NULL) { Logger::writeToLog("No reader for \"" + sampleFile.getFullPathName() + "\"."); return; } Logger::writeToLog("Format: " + reader->getFormatName()); Logger::writeToLog("Sample rate: " + String(reader->sampleRate)); Logger::writeToLog("length: " + String(reader->lengthInSamples)); Logger::writeToLog("numChannels: " + String(reader->numChannels)); BigInteger notes; notes.setRange(0, 127, true); SamplerSound* sound = new SamplerSound( sampleFile.getFileNameWithoutExtension(), *reader, notes, 72 /* C5 == middle C above A-440 */, 0.0, 0.01, 20.0 /* max time, hopefully 20s is enough for any sound */); synth.addSound(sound); delete reader; }
SampleItem::SampleItem(const String &filename) { this->filename = filename; File file(filename); if (file.exists()) { shortname = file.getFileNameWithoutExtension(); FileInputStream *stream = new FileInputStream(file); WavAudioFormat format; AudioFormatReader *reader = format.createReaderFor(stream, false); if (reader) { formatName = reader->getFormatName(); sampleRate = (int)reader->sampleRate; size = (int)reader->lengthInSamples; bits = reader->bitsPerSample; delete reader; } else { sampleRate = 0; size = 0; bits = 0; } } playing = false; }
//============================================================================== MemoryMappedAudioFormatReader::MemoryMappedAudioFormatReader (const File& f, const AudioFormatReader& reader, int64 start, int64 length, int frameSize) : AudioFormatReader (nullptr, reader.getFormatName()), file (f), dataChunkStart (start), dataLength (length), bytesPerFrame (frameSize) { sampleRate = reader.sampleRate; bitsPerSample = reader.bitsPerSample; lengthInSamples = reader.lengthInSamples; numChannels = reader.numChannels; metadataValues = reader.metadataValues; usesFloatingPointData = reader.usesFloatingPointData; }
void CtrlrPanelResourceEditor::showResourceInfo(const int resourceIndex) { CtrlrPanelResource *res = resources[resourceIndex]; if (res == nullptr) return; String message; message << "Load time: " + res->getLoadedTime().toString(true, true, true, true) + "\n"; message << "Data file: " + res->getFile().getFullPathName() + "\n"; message << "Source file: " + res->getSourceFile().getFullPathName() + "\n"; message << "Source hash: " + STR(res->getHashCode()) + "\n"; AudioFormatReader *afr = res->asAudioFormat(); if (afr) { message << "Type: Audio\n"; message << "Format name: " << afr->getFormatName() << "\n"; message << "Sample rate: " << afr->sampleRate << "\n"; message << "Bits per sample: " << ((int)afr->bitsPerSample) << "\n"; message << "Length in samples: " << afr->lengthInSamples << "\n"; message << "Number of channels: " << ((int)afr->numChannels) << "\n"; message << "Metadata:\n"; message << "\t" << afr->metadataValues.getDescription(); } if (!res->asImage().isNull()) { Image i = res->asImage(); message << "Type: Image\n"; message << "Width: " + STR(i.getWidth()) + "\n"; message << "Height: " + STR(i.getHeight()) + "\n"; message << "Has alpha: " + STR(i.hasAlphaChannel()) + "\n"; } DialogWindow::LaunchOptions lo; Label *l = new Label ("", message); l->setSize (400, 150); l->setJustificationType (Justification::centred); l->setFont (Font(12.0f)); lo.content.set(l, true); lo.componentToCentreAround = this; lo.dialogBackgroundColour = Colours::whitesmoke; lo.dialogTitle = "Resource information"; lo.resizable = true; lo.useBottomRightCornerResizer = false; lo.useNativeTitleBar = true; lo.launchAsync(); }