Does Ardor's implementation of midnam files - honor multiple Name Sets?

I’m in the process of writing a midnam patch definition file.

As I understand it - midnam patch files are structured so that:

  • A channel list, a controller list and bank definition is contained within a Name Set.
  • With a bank definition containing the patch list.
    Another way: a Name Set defines which patches/banks and controllers are on which channels.
  • A midnam file can have multiple Name Sets.

For example an external Organ module may have one Name Set for the upper manual with associated patches and controllers on a specific channel. With another Name Set for the lower manual with associated patches and controllers on another channel. With another Name Set for the pedals with associated patches and controllers on yet another channel.

When I try to test my midnam file - Ardour imports it fine. I can add Patch Changes into a MIDI Region but I can only see the Banks & Patches in the first Name Set only.

Am I correct in thinking that Ardour only honors the first Name Set only?

To answer my own question… yes Ardour (kinda) honors multiple NameSets - but with non-intuitive behavior. Whether any PatchBanks in the additional NameSets actually work correctly depends on how the midnam file is structured. More than a few midnam files in Ardour github are affected.

This seems to be down to how Ardour deals with loading midnam files/entries when action’ed. Best shown with screenshots.

With a single NameSet all PatchBanks are shown at first activation.

With multiple NameSets at first activation only the first PatchBank is shown. Any PatchBanks in other NameSets are not shown.

The MIDI Channel needs to be changed to a Channel used within the additional NameSet … but nothing is shown until PatchBank is clicked.

Only after clicking on the PatchBank does it then show the PatchBank’s in another NameSet.
If you didn’t know this additional NameSet existed - discovering it would be almost impossible.

I don’t know how this will be handled in future versions of Ardour. However, it would be nice to be able to discover PatchBanks in additonal NameSets intuitively. As currently - you have to know they are there to be able to find and use them.

To expand on this.

It seems that Ardour does populate the PatchChange Dialog correctly for the first NameSet. However, it populates the PatchChange Dialog incorrectly for any additional NameSets. An example is with the “General MIDI” midnam file.

The first NameSet Patches are populated correctly.

However, an additional NameSet Patch is not populated correctly. Either 127/127 or 0/0 are populated into the Bank MSB and LSB entry boxes. From the midnam file - it should be 0/0 in this case.

needs a bug report at tracker.ardour.org or will be forgotten (and not making any promises that it will be addressed on any particular timeline either). Thanks.

1 Like

Thanks - I’m still digging into the issue as the structure of the midnam file seems to also have an effect.
If it is allowed - I’ll continue adding what I find here and in the bug report refer back to this thread?

better to have it all there, but not incredibly bad to just link back to here

1 Like

In the case for the MIDI.midnam it contains multiple NameSets. Where the PatchBanks within the different NameSets call out to standalone PatchNameLists outside the ChannelNameSet scope.

Likewise, if I structure my own midnam file in the same way as MIDI.midnam with standalone PatchNameLists outside the ChannelNameSet scope - I see the same issue of incorrectly populated MSB and LSB values.

Incorrect populated MSB and LSB - as per the midnam file it should be 0/0.
Screenshot_20260128_184509

      <Patch Number="0100" Name="100 Load Memory #10">
        <PatchMIDICommands>
          <ControlChange Control="0" Value="0"/>
          <ControlChange Control="32" Value="0"/>
          <ProgramChange Number="9"/>
        </PatchMIDICommands>
      </Patch>

If I structure the midnam file differently so that all PatchNameLists are within the ChannelNameSet scope with no call outs - I do get correctly populated MSB and LSB values

Correct populated MSB and LSB values.
Screenshot_20260128_184039

A temporary solution at the moment for my midnam file is to pull everything into one NameSet and have all PatchLists within that ChannelNameSet scope.

However, there are many midnam files in the Ardour github for Roland/Yamaha/General MIDI that do have this issue where in additional NameSets if the file is structured to call out to a PatchNameList outside the ChannelNameSet scope the incorrect MSB and LSB values are populated.

As requested - I will create a bug report in the tracker.

I’m now convinced that it isn’t a problem with additional ChannelNameSets specifically but a problem with use of UsesPatchNameList where the PatchNameList is outside the NameSet scope.

I have identified that all these midnam files in Ardour’s patchfile directory are affected. I have randomly selected and tested many of these Patch files and they exhibit the same incorrect population of the MSB and LSB values.

grep UsesPatchNameList * | cut -f1 -d":" | uniq -u
Digitech_DSP128plus.midnam
Dynacord_DRP_20X.midnam
EW_Hollywood_Brass_01_Generic_Brass.midnam
EW_Hollywood_Brass_02_1FH_KS_Sus_Short_C0_A#0.midnam
EW_Hollywood_Brass_03_1FH_KS_Effects_C0_A0.midnam
EW_Hollywood_Brass_04_2FH_KS_Sus_Short_C0_G0.midnam
EW_Hollywood_Brass_05_2FH_KS_Effects_C0_F#0.midnam
EW_Hollywood_Brass_06_6FH_KS_Sus_Short_C0_G#0.midnam
EW_Hollywood_Brass_07_6FH_KS_Effects_C0_A0.midnam
EW_Hollywood_Brass_08_1TP_KS_Sus_Short_C0_A0.midnam
EW_Hollywood_Brass_09_1TP_KS_Effects_C0_E0.midnam
EW_Hollywood_Brass_10_2TP_KS_Sus_Short_C0_G#0.midnam
EW_Hollywood_Brass_11_2TP_KS_Effects_C0_A0.midnam
EW_Hollywood_Brass_12_3TP_KS_Sus_Short_C0_A#0.midnam
EW_Hollywood_Brass_13_3TP_KS_Effects_C0_A0.midnam
EW_Hollywood_Brass_14_1TB_KS_Sus_Short_C0_G#0.midnam
EW_Hollywood_Brass_15_1TB_KS_Effects_C0_E0.midnam
EW_Hollywood_Brass_16_3TB_KS_Sus_Short_C#4_G#4.midnam
EW_Hollywood_Brass_17_3TB_KS_Effects_C#4_F4.midnam
EW_Hollywood_Brass_18_1CM_KS_Sus_Short_C#3_G3.midnam
EW_Hollywood_Brass_19_1TU_KS_Sus_Short_C3_G#3.midnam
EW_Hollywood_Brass_20_1TU_KS_Effects_C3_E3.midnam
EW_Hollywood_Brass_21_LB_KS_Sus_Short_C0_D0.midnam
EW_Hollywood_Brass_22_LB_KS_Effects_C3_B3.midnam
EW_Hollywood_Harp_01_Generic_Harp.midnam
EW_Hollywood_Harp_02_Harp_KS_Master_C0_G#0.midnam
EW_Hollywood_Orchestral_Percussion_01_Generic_Percussion.midnam
EW_Hollywood_Orchestral_Percussion_02_Timpani_Flt_KS.midnam
EW_Hollywood_Orchestral_Percussion_03_Timpani_Hrd_KS.midnam
EW_Hollywood_Orchestral_Woodwinds_01_Generic_Woodwinds.midnam
EW_Hollywood_Orchestral_Woodwinds_02_PF_KS_Sus_Short_C0_C1.midnam
EW_Hollywood_Orchestral_Woodwinds_03_PF_KS_Runs_FX_C0_G0.midnam
EW_Hollywood_Orchestral_Woodwinds_04_FL_KS_Sus_Short_C0_C#1.midnam
EW_Hollywood_Orchestral_Woodwinds_05_FL_KS_Runs_FX_C0_G0.midnam
EW_Hollywood_Orchestral_Woodwinds_06_FL2_KS_Sus_Short_C0_C#1.midnam
EW_Hollywood_Orchestral_Woodwinds_07_FL2_KS_Runs_FX_C0_G0.midnam
EW_Hollywood_Orchestral_Woodwinds_08_AF_KS_Sus_Short_C0_F#0.midnam
EW_Hollywood_Orchestral_Woodwinds_09_BF_KS_Sus_Short_C0_E0.midnam
EW_Hollywood_Orchestral_Woodwinds_10_OB_KS_Sus_Short_C0_A#0.midnam
EW_Hollywood_Orchestral_Woodwinds_11_OB_KS_Runs_FX_C0_G0.midnam
EW_Hollywood_Orchestral_Woodwinds_12_EH_KS_Sus_Short_C0_A#0.midnam
EW_Hollywood_Orchestral_Woodwinds_13_CL_KS_Sus_Short_C0_A#0.midnam
EW_Hollywood_Orchestral_Woodwinds_14_CL_KS_Runs_FX_C0_G0.midnam
EW_Hollywood_Orchestral_Woodwinds_15_BC_KS_Sus_Short_C0_A0.midnam
EW_Hollywood_Orchestral_Woodwinds_16_BS_KS_Sus_Short_C0_G#0.midnam
EW_Hollywood_Orchestral_Woodwinds_17_BS_KS_Runs_FX_C0_G0.midnam
EW_Hollywood_Orchestral_Woodwinds_18_CB_KS_Sus_Short_C3_G#3.midnam
EW_Hollywood_Strings_01_Generic_Strings.midnam
EW_Hollywood_Strings_02_1st_Violins_Sus_KS_C0_F#0_Ni.midnam
EW_Hollywood_Strings_03_1st_Violins_Sus_KS_C0_F#0_Ni_DIV_A.midnam
EW_Hollywood_Strings_04_1st_Violins_Sus_KS_C0_F#0_Ni_DIV_B.midnam
EW_Hollywood_Strings_05_2nd_Violins_Sus_KS_C0_G#0_Ni.midnam
EW_Hollywood_Strings_06_2nd_Violins_Sus_KS_C0_G#0_Ni_DIV_A.midnam
EW_Hollywood_Strings_07_2nd_Violins_Sus_KS_C0_G#0_Ni_DIV_B.midnam
EW_Hollywood_Strings_08_Violas_Sus_KS_C0_G0_Ni.midnam
EW_Hollywood_Strings_09_Violas_Sus_KS_C0_G0_Ni_DIV_A.midnam
EW_Hollywood_Strings_10_Violas_Sus_KS_C0_G0_Ni_DIV_B.midnam
EW_Hollywood_Strings_11_Celli_Sus_KS_C0_F#0_Ni.midnam
EW_Hollywood_Strings_12_Celli_Sus_KS_C0_F#0_Ni_DIV_A.midnam
EW_Hollywood_Strings_13_Celli_Sus_KS_C0_F#0_Ni_DIV_B.midnam
EW_Hollywood_Strings_14_Basses_Sus_KS_C4_F4_Ni.midnam
EW_Hollywood_Strings_15_Basses_Sus_KS_C4_F4_Ni_DIV_A.midnam
EW_Hollywood_Strings_16_Basses_Sus_KS_C4_F4_Ni_DIV_B.midnam
EW_Pianos_01_Bechstein_280_copy.midnam
EW_Pianos_02_Bosendorfer_290.midnam
EW_Pianos_03_Steinway_D.midnam
EW_Pianos_04_Yamaha_C7.midnam
Gotharmoon_deMoon.midnam
Korg_MicroKORG.midnam
Korg_MS2000R.midnam
Kurzweil_SP88x.midnam
Line_6_POD.midnam
MFB_503.midnam
Moog_Minitaur.midnam
Moog_Slim_Phatty.midnam
Moog_Subsequent_37.midnam
Novation_BassStationII.midnam
Roland_RD_250s.midnam
Sequential_Circuits_Prophet_600.midnam
Yamaha_DX_7.midnam

Have no idea what is happening…

Everytime - I try to submit a bug report - I get the following error: "APPLICATION ERROR #27

You have reached the allowed activity limit of 10 events within the last 3600 seconds; your action has been blocked to avoid spam, please try again later."

Even if I leave it for a day between visits - I still get the error.

Hey Roger, please take a look here: