JFugue supports microtones. (It does it through the JavaSound API, combined with a lot of math)
Whether it can do exactly what you're looking for is another question. I believe the problem you'll run into is that each new note you play will sounds like a new note, as opposed to a bunch of notes tied together. This would be particularly noticeable when a note has an attack and decay value other than 0, or if the instrument has inherently different sounds at the start and end of a note.
In JFugue, you can set the attack and decay of a note by adding 'a' and 'd', followed by values from 0-128, after the note:
C5wa0d0
- C-note, 5th octave, whole duration, attack=0, decay=0.
The microtone helper, as currently written, allows you to define a single frequency to a string; for example, you can map 400 to "A400". Then to use this, you would say player.play("[A400]w")
(note the brackets).
One way to get what you're looking for is to define frequencies and strings for however many microtones you want, then create a Pattern using a for loop... Pattern p = new Pattern("[A400]wa0d0 [A410]wa0d0 [A420]wa0d0"...);
You can probably use a step greater than 1 Hertz for each note, because our ears can't distinguish such slight frequency differences.
If only there were a more elegant solution! But see if that helps.