View Issue Details

IDProjectCategoryView StatusLast Update
0001924OpenMPTlibopenmptpublic2025-10-03 15:15
Reportersound10gic Assigned To 
PrioritynormalSeverityminorReproducibilityalways
Status newResolutionopen 
Summary0001924: Support for Startrekker modules with MIDI channels
Description

Mod files from Star Trekker V1.3 with 8 channels are not recognized correctly. This is due to the Magic, which can also be called FLTM.

} else if((!memcmp(magic, "FLT", 3) || !memcmp(magic, "EXO", 3)) && (magic[3] == '4' || magic[3] == '8'))

should be


} else if((!memcmp(magic, "FLT", 3) || !memcmp(magic, "EXO", 3)) && (magic[3] == '4' || magic[3] == '8' || magic[3] == 'M')) {

If magic[3] == 'M'
result.numChannels = 8;
else
result.numChannels = static_cast<CHANNELINDEX>(magic[3] - '0');

or something like that ;-)

Steps To Reproduce

Just import an 8-Channel StarTrekker Modfile

Additional Information

Find it in soundlib/Load_mod.cpp (v0.9.0-pre.9) Line 0000203

TagsNo tags attached.
Has the bug occurred in previous versions?
Tested code revision (in case you know it)

Activities

Saga Musix

Saga Musix

2025-09-19 22:49

administrator   ~0006507

Please provide example files. I am not aware of these magic bytes, neither are any of the other module libraries that can read Startrekker modules that I checked.

sound10gic

sound10gic

2025-09-20 11:02

reporter   ~0006509

Uploaded twi Modfiles, saved with StarTrekker 1.3

mod.zip (10,994 bytes)
mod.w.c.zip (19,887 bytes)
sound10gic

sound10gic

2025-09-20 11:33

reporter   ~0006510

I experimented a bit more. If I set the mode in Star Trekker to "4," ST normally operates as a 4-channel tracker (FLT4). If I set it to "8," it operates as an 8-channel tracker, with channels 5-8 also being used as sample tracks. However, the "M" mode works a little differently. Only channels 1-4 are used as sample tracks, while channels 5-8 can only be used for MIDI notes.

Thus, the following applies:

<style>
.modes th, .modes td { text-align: center; padding: 0.2em 0.3em !important; }
</style>

<table class="modes" border="1">
<tr>
<th>Mode</th>
<th>1</th>
<th>2</th>
<th>3</th>
<th>4</th>
<th>5</th>
<th>6</th>
<th>7</th>
<th>8</th>
</tr>
<tr>
<td>4</td>
<td>Smp / Midi</td>
<td>Smp / Midi</td>
<td>Smp / Midi</td>
<td>Smp / Midi</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
</tr>
<tr>
<td>8</td>
<td>Smp / Midi</td>
<td>Smp / Midi</td>
<td>Smp / Midi</td>
<td>Smp / Midi</td>
<td>Smp / Midi</td>
<td>Smp / Midi</td>
<td>Smp / Midi</td>
<td>Smp / Midi</td>
</tr>
<tr>
<td>M</td>
<td>Smp / Midi</td>
<td>Smp / Midi</td>
<td>Smp / Midi</td>
<td>Smp / Midi</td>
<td>Midi</td>
<td>Midi</td>
<td>Midi</td>
<td>Midi</td>
</tr>
</table>

I wasn't aware of this before, as I was working exclusively with "M" mode at the time ;-)

mod-test.zip (32,774 bytes)
Saga Musix

Saga Musix

2025-09-23 12:52

administrator   ~0006512

Observations so far:

  • MIDI channel (C in the Startrekker GUI) is encoded in finetune byte. This pretty much determines if an instrument is a MIDI instrument, I think.
  • Other MIDI parameters appear to be stored in the corresponding .nt file:
    • T: transpose
    • L: note length (automatic note-off after x rows)
    • R: MIDI input channel

Commands 1xx/2xx should send tone portamentos, Cxx note velocity, and 7xx panning.

That's quite a lot of complexity to support for a barely-used feature but I will see what's possible.

Issue History

Date Modified Username Field Change
2025-09-19 16:33 sound10gic New Issue
2025-09-19 16:39 sound10gic Description Updated
2025-09-19 22:49 Saga Musix Note Added: 0006507
2025-09-20 11:02 sound10gic Note Added: 0006509
2025-09-20 11:02 sound10gic File Added: mod.zip
2025-09-20 11:02 sound10gic File Added: mod.w.c.zip
2025-09-20 11:33 sound10gic Note Added: 0006510
2025-09-20 11:33 sound10gic File Added: mod-test.zip
2025-09-23 12:52 Saga Musix Note Added: 0006512
2025-09-23 15:00 Saga Musix Summary Incomplete CheckMODMagic() => Support for Startrekker modules with MIDI channels