Is there any way to map note name (ex. GM Drums set)

Hello. I’m new in C++ and JUCE. I’m learning about coding C++ and how to use JUCE with watching Youtube tutorial.
I’m also interested building plug in effector and synthesizer but most I wanna achieve is making a mapper plugin like :

This is an Windows VST plugin that overrides MIDI data. Which have the feature that mapping piano roll note name.
I used this plugin very useful when using DAW in Windows but there is no alternative to this plugin on Mac…
So I decided build one. But I don’t know how to approach to that… I couldn’t notice any methods can handle it.
Is there any method to assign custom string to specific MIDI note?
If not, do I need to analyze the part where the DAW gets the note name and apply the code?

You can use a map for this–probably std::unordered_map. If you use MidiMessage as the key, then you can use it to retrieve the corresponding string.

This is just a piece of the puzzle–there is a lot more you’ll need to think through.

Thanks for replying.
By using std::unordered_map, can I make the plugin to announce to DAW which string is allocated to specific note?
But I think you might misunderstood what I want to do… I want to announce array of strings to note, not retrieving strings from note.
I found getMidiKeyName function from Steinberg’s VST3 sdk.

bool Vst2Wrapper::getMidiKeyName (VstInt32 channel, MidiKeyName* keyName)
UnitID unitId;
ProgramListID programListId;
if (mUnitInfo && getProgramListAndUnit (channel, unitId, programListId))
String128 string128 = {0};
if (mUnitInfo->getProgramPitchName (programListId, keyName->thisProgramIndex,
keyName->thisKeyNumber, string128))
String str (string128);
str.copyTo8 (keyName->keyName, 0, kVstMaxNameLen);
return true;
return false;

And draft code of MIDIMapperX’s naming function is

public override bool GetMidiKeyName(Jacobi.Vst.Core.VstMidiKeyName midiKeyName, int channel)
if (p.NoteMap.Contains((byte)midiKeyName.CurrentKeyNumber))
midiKeyName.Name = p.NoteMap[(byte)midiKeyName.CurrentKeyNumber].KeyName;
} else
midiKeyName.Name = “Note Map #” + midiKeyName.CurrentKeyNumber; // Or could return false here to use the default note name

return true;

(I copied this code from

I found getMidiKeyName is used both, and I hope this to be a key making me happy…
But another problem is that I don’t know how to include SDK’s code to JUCE project… :frowning: