Я пытаюсь напечатать номера нот миди на ярлыке в звуковом приложении Juce при нажатии. Вот код, который я в настоящее время:Печать номеров нот midi в звуковом приложении juce
в файле заголовка MainComponent:
class MainComponent : public Component,
public MidiInputCallback
{
public:
//==============================================================================
MainComponent();
~MainComponent();
void resized() override;
void handleIncomingMidiMessage (MidiInput*, const MidiMessage&);
private:
//==============================================================================
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MainComponent)
AudioDeviceManager audioDeviceManager;
Label midiLabel;
};
В строителю MainComponent.cpp:
MainComponent::MainComponent()
{
setSize (500, 400);
audioDeviceManager.setMidiInputEnabled("USB Axiom 49 Port 1", true);
audioDeviceManager.addMidiInputCallback (String::empty, this);
//midiLabel
midiLabel.setText("midiText", sendNotification);
addAndMakeVisible(midiLabel);
}
и, наконец, в функции handleIncomingMidiMessage:
void MainComponent::handleIncomingMidiMessage(MidiInput*, const MidiMessage&)
{
DBG("MIDI Message Recieved\n");
//display label text
String midiText;
MidiMessage message;
if (message.isNoteOnOrOff()) {
midiText << "NoteOn: Channel " << message.getChannel();
midiText << ":Number" << message.getNoteNumber();
midiText << ":Velocity" << message.getVelocity();
}
midiLabel.getTextValue() = midiText;
}
Когда я запускаю это, отображается надпись «midiText», и когда я нажимаю ak ey на midi клавиатуре, текст исчезает. Есть идеи?
Не зная о Juce, [ 'SetText()'] (Http: // учиться. juce.com/doc/classLabel.php#a3f0ca22cb63e924d3db23da48c210790) может быть лучшим способом установить текст, чем 'getTextValue()'. – MikeCAT
Когда вы говорите, что текст исчезает, вы имеете в виду все это, или просто видите вместо этого «Сообщение MIDI»? – OMGtechy
Полученное MIDI-сообщение выводится только на консоль, поэтому его можно игнорировать (но да, это нормально, если это то, о чем вы просите.) Проблема здесь в том, что печатается в окне приложения. Он начинается с «midiText», затем, когда нажата клавиша, должен отображаться номер ноты и т. Д. Однако весь текст в окне просто исчезает. – willfo