research/opl/novoices
Simon Howard 122074db7b Findings from instrument priority investigation.
Subversion-branch: /research
Subversion-revision: 1667
2009-09-12 16:56:37 +00:00
..
e1m1-cropped.mid Research data into how Doom behaves when it runs out of voices. 2009-09-01 19:17:36 +00:00
gen-priorities Findings from instrument priority investigation. 2009-09-12 16:56:37 +00:00
gen-sequence Research data into how Doom behaves when it runs out of voices. 2009-09-01 19:17:36 +00:00
gen-sequence2 Research data into how Doom behaves when it runs out of voices. 2009-09-01 19:17:36 +00:00
gen-sequence5 Add most recent novoices findings. 2009-09-12 15:46:06 +00:00
novoices.mid Research data into how Doom behaves when it runs out of voices. 2009-09-01 19:17:36 +00:00
novoices.processed.txt Research data into how Doom behaves when it runs out of voices. 2009-09-01 19:17:36 +00:00
novoices2.mid Research data into how Doom behaves when it runs out of voices. 2009-09-01 19:17:36 +00:00
novoices2.processed.txt Research data into how Doom behaves when it runs out of voices. 2009-09-01 19:17:36 +00:00
novoices5.mid Add most recent novoices findings. 2009-09-12 15:46:06 +00:00
novoices5.processed.txt Add most recent novoices findings. 2009-09-12 15:46:06 +00:00
priorities.mid Findings from instrument priority investigation. 2009-09-12 16:56:37 +00:00
priorities.processed.txt Findings from instrument priority investigation. 2009-09-12 16:56:37 +00:00
priorities.results.txt Findings from instrument priority investigation. 2009-09-12 16:56:37 +00:00
README Findings from instrument priority investigation. 2009-09-12 16:56:37 +00:00

Investigating how Doom decides on a voice to discard when it runs out
of OPL voices.

Findings so far:

 * The instrument affects the voice that is released (different instruments
   give different results).  It is the instrument data that is significant,
   not the instrument number (identical instruments behave the same - 87/88)
 * Sometimes notes are not turned off when they should be.  Sometimes notes
   are turned off when they should not be (bug?)
 * DMX maintains a linked list of the most recently-allocated voices.  These
   are searched backwards when finding a voice to free, so the most recently
   allocated voices are the first to be freed.
 * Different MIDI channels have different "priorities", somehow affected
   by the instrument in use on that channel.
 * When no voices are available, the will search back through the allocated
   voices list and discard the most recently used voice from a channel of
   a lower priority to the channel for the new note.
 * If no lower-priority voices are available, a voice from the same
   channel will be discarded.
 * If no voices from lower priority channels are available, and none from
   the same channel, the first voice in the list is discarded, ignoring
   priority.
 * Priority seems to be determined by MIDI instrument number - lower
   instruments have a higher priority than higher instruments, so instrument
   0 defeats 1, 1 defeats 2, etc.
 * If a double voice instrument is played, and there are no free voices,
   a voice will be sacrificed to play the first voice of the instrument,
   but the second voice will not be played.