J'essaie d'imprimer des numéros de note MIDI dans une étiquette d'une application audio Juce lorsqu'ils sont enfoncés. Voici le code que j'ai actuellement:Impression de numéros de note MIDI dans l'application audio juce
dans le fichier d'en-tête de 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;
};
Dans le constructer 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);
}
et enfin dans la fonction 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;
}
Quand je lance ceci, une étiquette disant "midiText" est visible, et quand j'appuie sur ak ey sur le clavier midi, le texte disparait. Des idées?
Ne sachant pas à propos Juce, [ 'setText()'] (http: // apprendre. juce.com/doc/classLabel.php#a3f0ca22cb63e924d3db23da48c210790) peut être un meilleur moyen de définir le texte que 'getTextValue()'. – MikeCAT
Quand vous dites que le texte disparaît, voulez-vous dire tout ou vous voyez simplement 'MIDI Message Received' à la place? – OMGtechy
Le message MIDI reçu ne s'imprime que sur la console, ce qui peut être ignoré (mais oui cela fonctionne bien, si c'est ce que vous demandez.) Le problème ici est ce qui est imprimé sur la fenêtre de l'application. Il commence par "midiText", puis quand une touche est pressée, le numéro de note etc. doit être affiché. Cependant tout le texte dans la fenêtre disparaît juste. – willfo