Esempio n. 1
0
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;
}
Esempio n. 2
0
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);
    }
}