View Issue Details

IDProjectCategoryView StatusLast Update
0000537OpenMPTFeature Requestpublic2015-01-08 15:45
ReporterAmaroq_Dricaldari Assigned To 
PrioritynoneSeveritytrivialReproducibilityhave not tried
Status newResolutionsuspended 
Platformx86OSWindowsOS Version7
Product VersionOpenMPT 1.23.03.00 (upgrade first) 
Summary0000537: Additions to MPTM format
Description

Just a list of functions that would be nice additions to the format:

  • Loop Jump (effect)

    A Loop Jump would be a Position Jump that only triggers if a song is looping, but not while playing normally. If set to play a song a certain number of times for export, and the value you set is "Play Song 3 times", then the Loop Jump would trigger twice but not a third time.

  • Loop Break (effect)

    A Pattern Break that only triggers when a song is looping, much like a Loop Jump.

  • Multi-Channel Volume/Slide (effect)

    A volume command/slide that effects all channels except for the one(s) in which it is occurring.

  • Compound Effects

    If two effects are triggered at the same time (for instance, position jump and pattern break), it will have a different effect. In the example of a Position Jump and Pattern Break triggering at the same time, the song will simultaneously jump to the position specified in the position jump and the row specified in the patten break.

  • Non-Loop Volume/Slide

    Functions similarly to the Loop Jump and Loop Break commands, except in the form of a volume slide and only triggering if a song is not looping.

  • Multi-Plugin Instruments

    Instruments that can have more than one VST plugin applied at once. For instance, flanger and Reverb.

  • Bi-Sample Instruments

    Instruments that can play two different samples (at different notes) at the same time. Useful for syncing random panning/volume variation on Multi-instrument notes, and keeping patterns tidy when changing out instruments.

  • Override Notes

    Putting a sample/instrument number next to a Note-Cut, Note-Off or Note-Fade will play that sample/instrument at a C-5 frequency while overriding the "New Note" function of the previously playing sample/instrument.

  • Left/Right Surround Panning

    If surround sound is enabled for a channel, then Initial Pan settings for that channel will not be lost.

  • Increased Global/Channel Volume resolution

    The ranges for Global Volume and Channel Volume should be increased from 0-128 and 0-64 respectively to 0-255, to allow for more precise control over volume.

  • Plugin Columns

    Two additional columns should be added for each channel to allow you to alter the plugin settings for a specific note in a specific channel, without modifying the plugin settings for the instrument itself. The plugin settings for the instrument itself would function similarly to the "Default Volume" setting for a sample or instrument.

  • External Instrument Storage/Module-Zipping

    Akin to the ITP and ITZ formats respectively.


I feel these additions would greatly increase the capabilities of an already amazing piece of software, and would be worth implementing should you have the time.

P.S.: A peer-to-peer Google Drive-esque online editing system would be a great addition for musicians who are trying to do a collaborative project.

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

Activities

Saga Musix

Saga Musix

2014-05-27 09:12

administrator   ~0001684

<blockquote>A Loop Jump would be a Position Jump that only triggers if a song is looping, but not while playing normally. If set to play a song a certain number of times for export, and the value you set is "Play Song 3 times", then the Loop Jump would trigger twice but not a third time.</blockquote>
OpenMPT will simply stop playback/rendering if song looping is disabled and you are jumping to an already played location, so why make it even more complicated and add another command which essentially just does the same?

<blockquote>A volume command/slide that effects all channels except for the one(s) in which it is occurring.</blockquote>
Again: Why? You already have global volume (Vxx) which affects all channels. What would you need the same command for except that it affects all but one channel?

<blockquote> If two effects are triggered at the same time (for instance, position jump and pattern break), it will have a different effect</blockquote>
Just to confuse the user even more? Note: Some formats (MOD, XM) already have this kind of unpredictable behaviour depending on whether the break occurs left or right to the jump, and it's annoying.

<blockquote>Instruments that can have more than one VST plugin applied at once. For instance, flanger and Reverb.</blockquote>
Already possible. In the http://wiki.openmpt.org/Manual:_General#Mix_Settings, choose the appropriate effects you want to chain together.

<blockquote>

Putting a sample/instrument number next to a Note-Cut, Note-Off or Note-Fade will play that sample/instrument at a C-5 frequency while overriding the "New Note" function of the previously playing sample/instrument.</blockquote>
What for?

<blockquote>Two additional columns should be added for each channel to allow you to alter the plugin settings for a specific note in a specific channel, without modifying the plugin settings for the instrument itself.</blockquote>
You have not understood plugins and MIDI. There is no such thing as "per-note" in the plugin world. You cannot simply apply some parameters just to one note and some to another note.

<blockquote>Akin to the ITP and ITZ formats respectively.</blockquote>
Already planned, search for MPTP/MPT Project on the issue tracker and forums.

Amaroq_Dricaldari

Amaroq_Dricaldari

2014-05-27 10:45

reporter   ~0001685

Last edited: 2014-05-27 10:49

Respectfully, I don't believe you quite understood what I actually meant. I can understand that you would not have the time to code these things for a while, but at least hear me out and try thinking of the benefits, not the downsides of experimenting. If it is alright with you, I would like to try clarifying on my ideas so that they seem less confusing.

+++

A Loop-Jump is a position jump that only plays IF a song is looping. Meaning you can have a separate end to a song if you were listening to it normally, but that end of the song would not play if the song was set to loop. Same thing with a Loop-Break. The biggest reason I support tracker formats is because you can essentially set a "Sustain Start" (for lack of better terms) for an entire song, so why not set a "Sustain End" for an entire song?

If a song is not looping, then the effect is ignored (and this skipped), with playback occurring as normal, but if the song is looping then MPT would detect the effect and activate it.

+++

As for a Non-Loop Slide, it would be so you could have a song (within a module itself and not through editing post-export) fadeout at the end when it was not looping, but to not fade out if it was looping. And if the fadeout is going too fast or too slow, you only need to change one channel's worth of data rather than Up-To-126 other channels worth of data.

+++

Compound effects do indeed seem like they could confuse the user, but MPT could be programmed to detect "conflicts" (such as B04 and C0F) and to work around them, jumping to Row 0F of Position 04.

+++

A Multi-Channel Volume slide is so that you can easily fade out multiple channels at once without fading out a few other channels (whichever channel contains Multi-Channel slide data at any point in a song will be ignored for the check, which means you can have multiple channels remain at the same volume when everything else fades in.)

+++

As for plugin columns... In FamiTracker there are two columns for FX1 and FX2. I assume those meant that FamiTracker supported VST plugins, and I thought "How hard would it be to make ModPlug capable of doing the same thing with a feature it already supports?"

--

Now the thing I mentioned about override notes... I admit was not very well thought out, sue me :/ That was more of a last-minute afterthought once I had all of my other ideas written down.

Anyway, that thing you said about Mix settings... I am gonna experiment with that now. Happy tracking.

P.S.: I am currently looking up alternate sample codecs to find a smaller-but-non-destructive alternative to FLAC. I found something that looks promising, but I have to read up on it more.

Saga Musix

Saga Musix

2014-05-27 22:07

administrator   ~0001686

<blockquote>If a song is not looping, then the effect is ignored (and this skipped), with playback occurring as normal, but if the song is looping then MPT would detect the effect and activate it.</blockquote>
But what exactly would this be useful for?
The only remotely useful usage for this I could imagine would be using OpenMPT in a live setup where you'd want to jump out of a loop eventually, but for this, OpenMPT already has useful live controls that allow you to jump to a new pattern as soon as the current pattern has finished playing.

<blockquote>And if the fadeout is going too fast or too slow, you only need to change one channel's worth of data rather than Up-To-126 other channels worth of data.</blockquote>
As already said: Global volume is the key. Of course it would be stupid to fade out every channel manually, that's what the global volume commands (Wxx/Vxx) are for.

<blockquote>As for plugin columns... In FamiTracker there are two columns for FX1 and FX2. I assume those meant that FamiTracker supported VST plugins, and I thought "How hard would it be to make ModPlug capable of doing the same thing with a feature it already supports?"</blockquote>
The last time I checked Famitracker was a NES tracker, so it wouldn't support VST plugins. What FX1 and FX2 are referring to there is probably just two "effects" as in the effect commands as you find them in OpenMPT?

Amaroq_Dricaldari

Amaroq_Dricaldari

2014-05-27 22:31

reporter   ~0001687

Regarding the loop thing, the idea I was thinking of was something along the lines of a racing game or deathmatch game with a music player where you have access to all of the music. If you set it up so that it picks a song at random and loops it, then it would keep activating the Loop Jump. If you set the music player to use the map's default music, same story. But if you have the music player only play a song once and then jump to another random song, then it would disable looping automatically.

+++

And the fadeout... I tried using a Channel Volume slide to counteract a Global Volume slide in the past, but it did not work. (Global Volume Slide was Fine -1 and Channel Volume Slide was Fine +1). The channel remained at the same volume setting and just faded out with the rest of the song.

+++

Finally, thanks for clearing that thing up about FX settings for FT, but I saw song controls (position jumps and such) in their own column before FX1 and FX2. But hey, at least now I know that you cannot apply VST effets to chiptune channels.

Thank you for taking the time to read my post by the way. It always means a lot to me when people take a look at my ideas, even if they don't make it in.

Really Weird Person

Really Weird Person

2014-05-29 19:03

reporter   ~0001689

It sounds like you might want to play more than song in your module. Randomized playing (as such games as Sorry! do) seems like something that might be a difficult thing to implement. But, having all of the music in a game can be accomplished by utilizing the 4,000-pattern sequences allowed by the application. If you use 1,024 rows in your patterns, that increases that value to 64,000. Unless you organize the game music as I sometimes do, in such a way as the listener is essentially "walked through the game" and the music is very long (or the game has a lot of music), it seems unlikely that you will use more than 64,000 patterns. My longest game play through is of Rayman, at 7,489 patterns for all 3 languages (English, French, and German). My recommendation would be to use a single sequence. But, to put all of the game's music in a single module, the application does allow each module to contain up to 50 sequences, which can be of varying lengths. Do note, however, that they are not structured like a playlist. Completing the first sequence does not begin playing the second one. You choose which sequence to play. That is why I discourage using that method. Also, there is no way to jump to different sequences. The pattern break and position jump are on a per-sequence basis. It is also odd how the position jump has yet to accommodate the 4,000-pattern sequence structure. The pattern break accommodates the 1,024-row structure, but the position jump is lacking in that area. If it was structured as the pattern break, it would allow jumping up to position 65,535 (both the position jump (Bxx) and the parameter extender (#xx) set to a value of FF). But, that is completely unrelated to what it sounds like you are trying to do (capture all of the music of a game in a single module).

Amaroq_Dricaldari

Amaroq_Dricaldari

2014-05-29 20:34

reporter   ~0001690

What I meant by a "music player" wsa having unrelated songs in separate modules, as if they were in a game's directory. A single module could have multiple songs inside, but that is only ideal for a half-dozen.

+++

Would it be possible to allow .brr sample importing, exporting and/or playback? From what I am told, even though .brr is technically a lossy format, it uses different techniques to prevent loss in quality (such as applying a filter after the sample is converted to a lower bitdepth.) Unfortunately, the only programs I have seen that can read or create .brr files are SPC emulators.

Amaroq_Dricaldari

Amaroq_Dricaldari

2015-01-08 15:26

reporter   ~0001921

Last edited: 2015-01-08 15:27

How do I set this "issue" so that nobody else will see it? I can't find a regular "delete" option.

Saga Musix

Saga Musix

2015-01-08 15:45

administrator   ~0001924

You can't, and there's no need to.

Issue History

Date Modified Username Field Change
2014-05-27 06:39 Amaroq_Dricaldari New Issue
2014-05-27 09:12 Saga Musix Note Added: 0001684
2014-05-27 10:45 Amaroq_Dricaldari Note Added: 0001685
2014-05-27 10:47 Amaroq_Dricaldari Note Edited: 0001685
2014-05-27 10:49 Amaroq_Dricaldari Note Edited: 0001685
2014-05-27 22:07 Saga Musix Note Added: 0001686
2014-05-27 22:31 Amaroq_Dricaldari Note Added: 0001687
2014-05-29 19:03 Really Weird Person Note Added: 0001689
2014-05-29 20:34 Amaroq_Dricaldari Note Added: 0001690
2015-01-08 15:25 Amaroq_Dricaldari Priority low => none
2015-01-08 15:25 Amaroq_Dricaldari Resolution open => suspended
2015-01-08 15:26 Amaroq_Dricaldari Note Added: 0001921
2015-01-08 15:27 Amaroq_Dricaldari Note Edited: 0001921
2015-01-08 15:45 Saga Musix Note Added: 0001924