Problema con interrupt su Audio Sequencer

Ciao a tutti,
con una matrice led sto realizzando una Audio Sequencer. Il concetto che sta alla base è far corrispondere una nota ad ogni punto della matrice. Una riga della matrice scandisce il tempo (è acceso un solo led per unità di tempo) e se in quell'istante compaiono led accesi su quella colonna allora viene/vengono riprodotte la/le nota/note.
E' in pratica quello che si puo' fare con i programmi per fare musica ma invece di usare dei suoni campionati io uso delle note.

Il problema è questo:
per fissare le note devo accendere dei led sulla matrice e per farlo devo muovermi con dei bottoni. E' ovvio che io debba sollevare degli interrupt perchè non posso pretendere di spostarmi sulla matrice con i bottoni alla stessa velocità con cui si sposta la riga del tempo (cosa che si verificherebbe se non usassi gli interrupt).
Così ho usato la libreria mstimer2 che solleva ogni 100ms una funzione che "muove" i led sulla matrice se i bottoni sono premuti e accende quindi le note.
Purtroppo con questa soluzione la nota viene "suonata" a tratti. Mi spiego: se ho impostato un periodo di interrupt pari a 100ms e la nota deve durare 500ms allora sentiro' 5 pezzi di nota da 100ms l'uno.
E' ovvio che questo non è l'effetto che voglio anche se gli stacchi non si sentono tanto soprattutto se imposto un periodo di interrupt minimo (1ms).

Dite che dovrò arrendermi all'idea di dover muovere le mie note alla stessa velocità di scansione del tempo?
Vi viene in mente qualche soluzione?

grazie a tutti in anticipo