Yes it seems you vocabulary is well defined and sufficiently small (127 * 16 * 16) to be in a “WordLevel” tokenizer.

  
      huggingface.co
  
  
    

Components — tokenizers  documentation 1



  
  
    
    
  
  


You can even create your vocabulary manually which makes it easier to run.
vocab = {}
i=0
for value in range(0, 128):
    for position in range(0, 16):
      word = "Note on {value},Position_{position}"
      vocab[word] = i
      i += 1

import tokenizers
from tokenizers import pre_tokenizers

tokenizer = Tokenizer(BPE(vocab=vocab))
tokenizer.pre_tokenizer = pre_tokenizers.Whitespace()

encoded = tokenizer.encode("Note On_12,Position_16/16  Note on 45,Position_8/8")
encoded.ids # [3, 5]

The vocabulary creation I wrote seems a bit off compared to what you described but it should be close enough.
I assumed the possible values are relatively small (< 50 000) because of 128 notes + 16 tempos + 16 values which makes 32k possible values being conservative. If there’s actually an order of magnitude more, then this approach won’t work anymore.
Does that help ?