本文整理汇总了C++中MidiMessage::getNoteNumber方法的典型用法代码示例。如果您正苦于以下问题:C++ MidiMessage::getNoteNumber方法的具体用法?C++ MidiMessage::getNoteNumber怎么用?C++ MidiMessage::getNoteNumber使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MidiMessage
的用法示例。
在下文中一共展示了MidiMessage::getNoteNumber方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: handleMidiEvent
void Synthesiser::handleMidiEvent (const MidiMessage& m)
{
if (m.isNoteOn())
{
noteOn (m.getChannel(),
m.getNoteNumber(),
m.getFloatVelocity());
}
else if (m.isNoteOff())
{
noteOff (m.getChannel(),
m.getNoteNumber(),
true);
}
else if (m.isAllNotesOff() || m.isAllSoundOff())
{
allNotesOff (m.getChannel(), true);
}
else if (m.isPitchWheel())
{
const int channel = m.getChannel();
const int wheelPos = m.getPitchWheelValue();
lastPitchWheelValues [channel - 1] = wheelPos;
handlePitchWheel (channel, wheelPos);
}
else if (m.isController())
{
handleController (m.getChannel(),
m.getControllerNumber(),
m.getControllerValue());
}
}
示例2: RT_MIDI_send_msg_to_patch
static void RT_MIDI_send_msg_to_patch(struct Patch *patch, MidiMessage message, int64_t seq_time){
if (message.isNoteOn())
RT_PATCH_play_note(patch, message.getNoteNumber(), -1, message.getVelocity() / 127.0f, 0.0f, seq_time);
else if (message.isNoteOff())
RT_PATCH_stop_note(patch, message.getNoteNumber(), -1, seq_time);
else if (message.isAftertouch())
RT_PATCH_change_velocity(patch, message.getNoteNumber(), -1, message.getChannelPressureValue() / 127.0f, seq_time);
else {
const uint8_t *raw_data = message.getRawData();
int len = message.getRawDataSize();
R_ASSERT_RETURN_IF_FALSE(len>=1 && len<=3);
uint32_t msg;
if (len==3)
msg = MIDI_msg_pack3(raw_data[0],raw_data[1],raw_data[2]);
else if (len==2)
msg = MIDI_msg_pack2(raw_data[0],raw_data[1]);
else if (len==1)
msg = MIDI_msg_pack1(raw_data[0]);
else
return;
RT_PATCH_send_raw_midi_message(patch, msg, seq_time);
}
}
示例3: processBlock
void SoftSynthAudioProcessor::processBlock (AudioSampleBuffer& buffer, MidiBuffer& midiMessages)
{
MidiBuffer processedMidi;
int time;
MidiMessage m;
for (MidiBuffer::Iterator i(midiMessages); i.getNextEvent(m, time);) {
if (m.isNoteOn()) {
m = MidiMessage::noteOn(m.getChannel(), m.getNoteNumber(), m.getVelocity());
synth.keyPressed(m.getNoteNumber(), m.getVelocity());
} else if (m.isNoteOff()) {
m = MidiMessage::noteOff(m.getChannel(), m.getNoteNumber(), m.getVelocity());
synth.keyReleased(m.getNoteNumber());
}
processedMidi.addEvent(m, time);
}
auto synthBuffer = synth.getNextBuffer(buffer.getNumSamples());
float *leftData = buffer.getWritePointer(0);
float *rightData = buffer.getWritePointer(1);
for (int i = 0; i < buffer.getNumSamples(); ++i) {
leftData[i] = synthBuffer[i];
rightData[i] = synthBuffer[i];
}
midiMessages.swapWith(processedMidi);
}
示例4: processIncomingMessage
bool MidiControlAction::processIncomingMessage(const MidiMessage& message)
{
if (isLearning)
{
isLearning = false;
messageTemplate = message;
return true;
}
else if (message.isForChannel(messageTemplate.getChannel()))
{
if (messageTemplate.isNoteOnOrOff() && message.isNoteOnOrOff() && message.getNoteNumber() == messageTemplate.getNoteNumber())
{
// toggle!
if (message.isNoteOn() && message.getNoteNumber() == messageTemplate.getNoteNumber())
{
getMappedComponent()->setValue(getMappedComponent()->getValue() >= 0.5f?0.f:1.f);
getMappedComponent()->triggerAsyncUpdate();
}
return true;
}
else if (messageTemplate.isController() && message.isController() && messageTemplate.getControllerNumber() == message.getControllerNumber())
{
//setValue(message.getControllerValue() / 127.0f);
getMappedComponent()->setValue(message.getControllerValue() / 127.0f);
getMappedComponent()->triggerAsyncUpdate();
return true;
}
}
return false;
}
示例5: processNextAudioBlock
void RubberbandAudioSource::processNextAudioBlock()
{
const int numRequired = m_stretcher->getSamplesRequired();
if ( numRequired > 0 )
{
AudioSourceChannelInfo info;
info.buffer = &m_inSampleBuffer;
info.startSample = 0;
info.numSamples = qMin( m_inSampleBuffer.getNumFrames(), numRequired );
m_source->getNextAudioBlock( info, m_midiBuffer );
if ( m_midiBuffer.isEmpty() )
{
m_stretcher->process( m_inSampleBuffer.getArrayOfReadPointers(), info.numSamples, false );
}
else
{
MidiBuffer::Iterator iterator( m_midiBuffer );
MidiMessage message;
int startFrame = info.startSample;
int numFramesLeftToGo = info.numSamples;
while ( numFramesLeftToGo > 0 )
{
int eventPos;
const bool isEventValid = iterator.getNextEvent( message, eventPos ) &&
message.isNoteOn() &&
eventPos < info.numSamples;
const int numFramesToProcess = isEventValid ? eventPos - startFrame : numFramesLeftToGo;
if ( numFramesToProcess > 0 )
{
for ( int chanNum = 0; chanNum < m_numChans; chanNum++ )
{
m_inFloatBuffer[ chanNum ] = m_inSampleBuffer.getReadPointer( chanNum, startFrame );
}
m_stretcher->process( m_inFloatBuffer, numFramesToProcess, false );
}
if ( isEventValid )
{
m_noteTimeRatio = m_noteTimeRatioTable.value( message.getNoteNumber(), 1.0 );
m_stretcher->setTimeRatio( m_globalTimeRatio * m_noteTimeRatio );
}
startFrame += numFramesToProcess;
numFramesLeftToGo -= numFramesToProcess;
}
}
}
else // numRequired == 0
{
m_stretcher->process( m_inSampleBuffer.getArrayOfReadPointers(), 0, false );
}
}
示例6: processNextMidiEvent
void MidiKeyboardState::processNextMidiEvent (const MidiMessage& message)
{
if (message.isNoteOn())
{
noteOnInternal (message.getChannel(), message.getNoteNumber(), message.getFloatVelocity());
}
else if (message.isNoteOff())
{
noteOffInternal (message.getChannel(), message.getNoteNumber(), message.getFloatVelocity());
}
else if (message.isAllNotesOff())
{
for (int i = 0; i < 128; ++i)
noteOffInternal (message.getChannel(), i, 0.0f);
}
}
示例7: handleIncomingMidiMessage
void MIDIMostRecentNoteInternal::handleIncomingMidiMessage (MidiInput* source, const MidiMessage& message) throw()
{
if(port_ != 0 && port_ != source) return;
if(message.isForChannel(midiChannel_) == false) return;
if(message.isNoteOn() == false) return;
setNormalisedValue(message.getNoteNumber() / 127.f);
}
示例8: processMidiMessage
void MidiManager::processMidiMessage(const MidiMessage& midi_message, int sample_position) {
if (midi_message.isProgramChange()) {
current_patch_ = midi_message.getProgramChangeNumber();
File patch = LoadSave::loadPatch(current_bank_, current_folder_, current_patch_,
synth_, *gui_state_);
PatchLoadedCallback* callback = new PatchLoadedCallback(listener_, patch);
callback->post();
return;
}
if (midi_message.isNoteOn()) {
engine_->noteOn(midi_message.getNoteNumber(),
midi_message.getVelocity() / (mopo::MIDI_SIZE - 1.0),
0, midi_message.getChannel() - 1);
}
else if (midi_message.isNoteOff())
engine_->noteOff(midi_message.getNoteNumber());
else if (midi_message.isAllNotesOff())
engine_->allNotesOff();
else if (midi_message.isSustainPedalOn())
engine_->sustainOn();
else if (midi_message.isSustainPedalOff())
engine_->sustainOff();
else if (midi_message.isAftertouch()) {
mopo::mopo_float note = midi_message.getNoteNumber();
mopo::mopo_float value = (1.0 * midi_message.getAfterTouchValue()) / mopo::MIDI_SIZE;
engine_->setAftertouch(note, value);
}
else if (midi_message.isPitchWheel()) {
double percent = (1.0 * midi_message.getPitchWheelValue()) / PITCH_WHEEL_RESOLUTION;
double value = 2 * percent - 1.0;
engine_->setPitchWheel(value, midi_message.getChannel());
}
else if (midi_message.isController()) {
int controller_number = midi_message.getControllerNumber();
if (controller_number == MOD_WHEEL_CONTROL_NUMBER) {
double percent = (1.0 * midi_message.getControllerValue()) / MOD_WHEEL_RESOLUTION;
engine_->setModWheel(percent, midi_message.getChannel());
}
else if (controller_number == BANK_SELECT_NUMBER)
current_bank_ = midi_message.getControllerValue();
else if (controller_number == FOLDER_SELECT_NUMBER)
current_folder_ = midi_message.getControllerValue();
midiInput(midi_message.getControllerNumber(), midi_message.getControllerValue());
}
}
示例9: handleIncomingMidiMessage
void VoicerUGenInternal::handleIncomingMidiMessage (MidiInput* /*source*/, const MidiMessage& message) throw()
{
if(message.isForChannel(midiChannel_) == false) return;
if(message.isNoteOnOrOff())
{
const ScopedLock sl(lock);
sendMidiNote(message.getChannel(), message.getNoteNumber(), message.getVelocity());
}
else if(message.isController())
{
if((message.getControllerNumber() == 123) && (message.getControllerValue() == 0))
{
const ScopedLock sl(lock);
initEvents();
}
getController(message.getControllerNumber()) =
(message.getControllerValue() * (1.f / 127.f));
}
else if(message.isPitchWheel())
{
getPitchWheel() = (jlimit(-8191, 8191, message.getPitchWheelValue() - 8192) * (1.f / 8191.f));
}
else if(message.isChannelPressure())
{
getChannelPressure() = (message.getChannelPressureValue() * (1.f / 127.f));
}
else if(message.isAftertouch())
{
getKeyPressure(message.getNoteNumber()) =
(message.getAfterTouchValue() * (1.f / 127.f));
}
else if(message.isProgramChange())
{
getProgram() = (message.getProgramChangeNumber());
}
else if(message.isAllNotesOff())
{
const ScopedLock sl(lock);
initEvents();
}
}
示例10: sendCurrentNoteToBuffer
void Loop::sendCurrentNoteToBuffer(MidiBuffer& buffer, int sample_number, int velocity)
{
MidiMessage m = this->getEventPointer(currentIndex)->message;
//playingNote[m.getNoteNumber()][m.getChannel()-1][0] = jlimit(0,127,m.getNoteNumber()+getTransposition());
m.setNoteNumber(jlimit(0,127,m.getNoteNumber()+getTransposition()));
m.setVelocity((((float)velocity*midiScaler * velocitySensitivity) + (1.f-velocitySensitivity)));
if (outChannel>0) m.setChannel(outChannel);
buffer.addEvent(m,sample_number);
indexOfLastNoteOn=currentIndex;
}
示例11: it
void Tunefish4AudioProcessor::processEvents(MidiBuffer &midiMessages, eU32 messageOffset, eU32 frameSize)
{
MidiBuffer::Iterator it(midiMessages);
MidiMessage midiMessage;
int samplePosition;
it.setNextSamplePosition(messageOffset);
while (it.getNextEvent(midiMessage, samplePosition))
{
if (samplePosition >= messageOffset + frameSize)
break;
if (midiMessage.isNoteOn())
{
eU8 velocity = midiMessage.getVelocity();
eU8 note = midiMessage.getNoteNumber();
eTfInstrumentNoteOn(*tf, note, velocity);
}
else if (midiMessage.isNoteOff())
{
eU8 note = midiMessage.getNoteNumber();
eTfInstrumentNoteOff(*tf, note);
}
else if (midiMessage.isAllNotesOff())
{
eTfInstrumentAllNotesOff(*tf);
}
else if (midiMessage.isPitchWheel())
{
eS32 bend_lsb = midiMessage.getRawData()[1] & 0x7f;
eS32 bend_msb = midiMessage.getRawData()[2] & 0x7f;
eTfInstrumentPitchBend(*tf, ((eF32(bend_msb) / 127.0f) - 0.5f) * 2.0f,
((eF32(bend_lsb) / 127.0f) - 0.5f) * 2.0f);
}
}
}
示例12: handleMidiEvent
void Synthesiser::handleMidiEvent (const MidiMessage& m)
{
const int channel = m.getChannel();
if (m.isNoteOn())
{
noteOn (channel, m.getNoteNumber(), m.getFloatVelocity());
}
else if (m.isNoteOff())
{
noteOff (channel, m.getNoteNumber(), m.getFloatVelocity(), true);
}
else if (m.isAllNotesOff() || m.isAllSoundOff())
{
allNotesOff (channel, true);
}
else if (m.isPitchWheel())
{
const int wheelPos = m.getPitchWheelValue();
lastPitchWheelValues [channel - 1] = wheelPos;
handlePitchWheel (channel, wheelPos);
}
else if (m.isAftertouch())
{
handleAftertouch (channel, m.getNoteNumber(), m.getAfterTouchValue());
}
else if (m.isChannelPressure())
{
handleChannelPressure (channel, m.getChannelPressureValue());
}
else if (m.isController())
{
handleController (channel, m.getControllerNumber(), m.getControllerValue());
}
else if (m.isProgramChange())
{
handleProgramChange (channel, m.getProgramChangeNumber());
}
}
示例13: getMidiNumber
const String getMidiNumber(const MidiMessage &m)
{
if (m.isAftertouch())
{
return (String::formatted (" No:[%4d]", m.getNoteNumber()));
}
if (m.isController())
{
return (String::formatted (" No:[%4d]", m.getControllerNumber()));
}
if (m.isNoteOnOrOff())
{
return (String::formatted (" No:[%4d]", m.getNoteNumber()));
}
if (m.isProgramChange())
{
return (String::formatted (" No:[%4d]", m.getProgramChangeNumber()));
}
return (" No:[----]");
}
示例14: getMidiMessageDescription
String ZenMidiVisualiserComponent::getMidiMessageDescription(const MidiMessage& m)
{
if (m.isNoteOn()) return "Note on: " + S(m.getNoteNumber()) + " (" + MidiMessage::getMidiNoteName(m.getNoteNumber(), true, true, 3) + ") Vel: " + S(m.getVelocity());
if (m.isNoteOff()) return "Note off: " + S(m.getNoteNumber()) + " (" + MidiMessage::getMidiNoteName(m.getNoteNumber(), true, true, 3) + ")";
if (m.isProgramChange()) return "Program change (Number): " + String(m.getProgramChangeNumber());
if (m.isPitchWheel()) return "Pitch wheel: " + String(m.getPitchWheelValue());
if (m.isAftertouch()) return "After touch: " + MidiMessage::getMidiNoteName(m.getNoteNumber(), true, true, 3) + ": " + String(m.getAfterTouchValue());
if (m.isChannelPressure()) return "Channel pressure: " + String(m.getChannelPressureValue());
if (m.isAllNotesOff()) return "All notes off";
if (m.isAllSoundOff()) return "All sound off";
if (m.isMetaEvent()) return "Meta event";
if (m.isController())
{
String temp = MidiMessage::getControllerName(m.getControllerNumber());
String name = "Controller [" + S(m.getControllerNumber()) + "]";
if (!temp.isEmpty())
name += " " + temp;
return name + ": " + String(m.getControllerValue());
}
return String::toHexString(m.getRawData(), m.getRawDataSize());
}
示例15: handleEvent
void RecordNode::handleEvent(int eventType, MidiMessage& event, int samplePosition)
{
if (isRecording)
{
if (isWritableEvent(eventType))
{
if (*(event.getRawData()+4) > 0) // saving flag > 0 (i.e., event has not already been processed)
{
uint8 sourceNodeId = event.getNoteNumber();
int64 timestamp = timestamps[sourceNodeId] + samplePosition;
m_eventQueue->addEvent(event, timestamp, eventType);
}
}
}
}