void AppCore::setNotes(int rootNote_, Mood mood_){ int * notes = getMidiNotes(rootNote_, mood_, synths.size()); for(int i = 0, len = synths.size(); i < len; ++i) { synths[i]->frequency = MusicUtils::midiToFrequency(notes[i]); } delete[] notes; }
RprMidiTake::RprMidiTake(const RprTake &take, bool readOnly) : RprMidiTemplate(take, readOnly) { try { mContext = NULL; RprNode *sourceNode = RprMidiTemplate::getMidiSourceNode(); RprTempMidiEvents tempMidiEvents; getMidiEvents(sourceNode, tempMidiEvents.get()); mContext = RprMidiContext::createMidiContext(take.getPlayRate(), getParent()->getPosition() - (take.getStartOffset() / take.getPlayRate()), getQNValue(sourceNode)); if (!getMidiNotes(tempMidiEvents.get(), mNotes, mContext)) { throw RprLibException(__LOCALIZE("Unable to parse MIDI data","sws_mbox")); } if(!getMidiCCs(tempMidiEvents.get(), mCCs, mContext)) { throw RprLibException(__LOCALIZE("Unable to parse MIDI data","sws_mbox")); } mOtherEvents.reserve(tempMidiEvents.get().size()); std::copy(tempMidiEvents.get().begin(), tempMidiEvents.get().end(), std::back_inserter(mOtherEvents)); tempMidiEvents.get().clear(); mMidiEventsOffset = clearMidiEventsFromMidiNode(sourceNode); } catch (RprMidiEvent::RprMidiException &e) { cleanup(); // Throw RprLibException so we let the user know something bad // happened. throw RprLibException(e.what(), true); } }