@@ -324,13 +324,22 @@ m.key = function(char, modifiers, is_repeat, state)
324324 d = m .fine and (d / 20 ) or (m .coarse and d * 10 or d )
325325
326326 if m .map_pos == 1 then
327+ local to_remove = tab .key (pmap .rev [pm .dev ][pm .ch ][pm .cc ], n )
328+ table.remove (pmap .rev [pm .dev ][pm .ch ][pm .cc ], to_remove )
327329 pm .cc = util .clamp (pm .cc + d , 0 , 127 )
330+ table.insert (pmap .rev [pm .dev ][pm .ch ][pm .cc ], n )
328331 pmap .data [n ].cc = pm .cc
329332 elseif m .map_pos == 2 then
333+ local to_remove = tab .key (pmap .rev [pm .dev ][pm .ch ][pm .cc ], n )
334+ table.remove (pmap .rev [pm .dev ][pm .ch ][pm .cc ], to_remove )
330335 pm .ch = util .clamp (pm .ch + d , 1 , 16 )
336+ table.insert (pmap .rev [pm .dev ][pm .ch ][pm .cc ], n )
331337 pmap .data [n ].ch = pm .ch
332338 elseif m .map_pos == 3 then
339+ local to_remove = tab .key (pmap .rev [pm .dev ][pm .ch ][pm .cc ], n )
340+ table.remove (pmap .rev [pm .dev ][pm .ch ][pm .cc ], to_remove )
333341 pm .dev = util .clamp (pm .dev + d , 1 , # midi .vports )
342+ table.insert (pmap .rev [pm .dev ][pm .ch ][pm .cc ], n )
334343 pmap .data [n ].dev = pm .dev
335344 elseif m .map_pos == 4 or m .map_pos == 5 then
336345 local param = params :lookup_param (n )
0 commit comments