bool SamplerProcessor::addSample(String path, int root_note, int note_low, int note_high, Array<int>& group, PlaySettings* p, std::pair<int, int> v, RoundRobinPlayback* r, int rr){ ScopedPointer<AudioFormatReader> audioReader(formatManager.createReaderFor(File(path))); if (audioReader == nullptr){ return false; } BigInteger allNotes; for (int i = note_low; i<note_high; i++){ allNotes.setBit(i); } SampleSound* ss; synth.addSound(ss = new SampleSound("demo sound", *audioReader, allNotes, root_note, 0.0, 0.0, 10.0, group, fx_selector, tf_selector, this, v)); ss->setSampleStart(p->getSampleStart()); ss->setReleaseStart(p->getReleaseStart()); ss->setReleaseTime(p->getReleaseTime()); ss->setReleaseCurve(p->getReleaseCurve()); ss->setLoopMode(p->getLoopMode()); ss->setReleaseMode(p->getReleaseMode()); ss->setLoopStart(p->getLoopStart()); ss->setLoopEnd(p->getLoopEnd()); ss->setXfadeLength(p->getXfadeLength()); ss->setXfadeCurve(p->getXfadeCurve()); ss->setRoundRobinProcessor(r); if (rr != -1){ ss->setRoundRobin(rr); } groups[group[0]]->add(ss); audioReader = nullptr; return true; }
void DrumMachine::setDrumSound(String soundName, File sample) { WavAudioFormat wavFormat; ScopedPointer<AudioFormatReader> audioReader(wavFormat.createReaderFor(new FileInputStream(sample), true)); BigInteger notes; notes.setRange(lastNote, 1, true); synth.addSound(new SamplerSound(soundName, *audioReader, notes, lastNote, // root midi note 0.0, // attack time 0.0, // release time 10.0 // maximum sample length )); soundToNote.set(soundName, lastNote++); }