View Issue Details

IDProjectCategoryView StatusLast Update
0000569OpenMPTGeneralpublic2024-12-02 11:41
Reportermanx Assigned Tomanx  
PrioritynormalSeverityminorReproducibilityN/A
Status assignedResolutionopen 
Target VersionOpenMPT 1.33 / libopenmpt 0.9 (goals) 
Summary0000569: Unicode strings in CSoundFile.
Description

Use Unicode strings for all strings (samples/instrument/channel/pattern names and other general metadata) in CSoundFile.

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

Relationships

related to 0000570 resolvedmanx OpenMPT UNICODE build 
related to 0001565 resolvedmanx Jester's epilepsy.mod breaks the openmpt123 user interface 
related to 0000783 new cross-platform OpenMPT 

Activities

manx

manx

2022-02-16 15:21

administrator   ~0005093

We should also re-consider the charset used for .MOD because of compatibility with earlier OpenMPT versions. See discussion in 0001565 .

cs127

cs127

2024-12-02 11:30

reporter   ~0006244

How would this affect saving files?
Will the strings be in UTF-8? (maybe in MPTM only?)

manx

manx

2024-12-02 11:41

administrator   ~0006245

How would this affect saving files?

In a first step, not at all or barely. We are currently tracking the encoding used inside CSoundFile explicitly, and the encoding used to save files is determined by the saving code (either implicitly because it is the same as the internal encoding, or explicitly).

Will the strings be in UTF-8? (maybe in MPTM only?)

That's a totally separate concern. For MPTM, this requires inventing a new chunk that signals UTF8 encoding, and in particular requires the loader to handle that (which is the more difficult part, because of the order in which things are done there).

All in all, this issue requires (or is related to) a massive amount of refactoring because of the way sample names are not stored with the sample they belong to (i.e. inventing some hypothetical SampleRef class that handles the relationship better than the current code). Just replacing the current char buffers for the sample names with strings has large implications for debug build performance. We had discussed using a std::map for the names due to that in the past.

I would not consider this issue to be very important or high priority at the moment due to the various inter-dependencies related to it.

Issue History

Date Modified Username Field Change
2014-08-14 10:58 manx New Issue
2014-08-14 10:58 manx Status new => assigned
2014-08-14 10:58 manx Assigned To => manx
2014-08-19 08:00 manx Relationship added child of 0000570
2014-12-12 00:02 Saga Musix Target Version OpenMPT 1.24.01.00 / libopenmpt 0.2-beta8 (upgrade first) => OpenMPT 1.?? (long term goals)
2017-08-22 12:22 manx Relationship replaced related to 0000570
2021-12-07 14:53 manx Target Version OpenMPT 1.?? (long term goals) => OpenMPT 1.31.01.00 / libopenmpt 0.7.0 (upgrade first)
2021-12-18 09:29 manx Relationship added related to 0000783
2022-02-16 15:20 manx Relationship added related to 0001565
2022-02-16 15:21 manx Note Added: 0005093
2023-04-10 08:22 manx Target Version OpenMPT 1.31.01.00 / libopenmpt 0.7.0 (upgrade first) => OpenMPT 1.32 / libopenmpt 0.8 (goals)
2024-10-26 18:03 manx Target Version OpenMPT 1.32 / libopenmpt 0.8 (goals) => OpenMPT 1.33 / libopenmpt 0.9 (goals)
2024-12-02 11:30 cs127 Note Added: 0006244
2024-12-02 11:41 manx Note Added: 0006245