OpenMPT 1.26 releases

Started by Saga Musix, April 27, 2016, 00:31:46

Previous topic - Next topic

Saga Musix

After about half a year of work, OpenMPT 1.26 is now almost ready for release.
Many new and improved features are waiting to explored, and countless bug fixes also made it into this release.
A lot of refactoring has been done behind the scenes which allowed for some new features especially in libopenmpt - such as support for most DMO plugins, also on non-Windows platforms.

Some of the most exciting improvements in OpenMPT probably include:

  • a much improved Find & Replace
  • support for Ogg Vorbis and Opus sample import
  • built-in Ogg Vorbis and Opus export (without the need of external DLLs as before)
  • floating-point processing for DMO plugins (so no more clipping at the plugin boundaries)
  • more fine-grained compatibility settings for legacy modules
  • per-sequence restart position in MPTM files
  • full support for the Echo DSP in DigiBooster Pro files
  • an option to merge identical patterns
  • fixed SF2 sample frequency import
  • and the ability to distinguish left and right modifier keys (Ctrl, Alt, Shift, Win)
You can grab the latest test builds here:
32-bit: https://buildbot.openmpt.org/builds/auto/openmpt-win32/
64-bit: https://buildbot.openmpt.org/builds/auto/openmpt-win64/

I'd especially appreciate some extensive testing of the new Find & Replace settings (find ranges, replace arithmetics) since this stuff is very new and untested, and a lot of code had to be written for these features to work.

If all goes well, OpenMPT 1.26 will be released within the next few weeks.


v1.26.01.00 (April 2015, revision 6298)
---------------------------------------
General tab
   [Imp] In the plugin "Output To" box, there is now also an option to add a new plugin to which the output should be routed.
   [Imp] Cloning an instrument plugin also creates a new module instrument for it, if necessary.
   [Mod] When cloning plugins, slightly offset the cloned editor window to not confuse it with the original window.

Pattern tab
   [New] Find & Replace can now find ranges of data (e.g. notes C-5 to D-6) and replace them also with relative values or percentages (http://bugs.openmpt.org/view.php?id=742).
   [Imp] Find & Replace now works better with PC events (http://bugs.openmpt.org/view.php?id=44).
   [Imp] Double-clicking an empty order list cell creates a new pattern.
   [Mod] Make Play Row behaviour consistent with cursor movement behaviour if "Continuous Scroll" is disabled: When "Cursor Wrap in Pattern Editor" is disabled, the cursor remains on the last row when reaching the pattern end (http://bugs.openmpt.org/view.php?id=753).
   [Mod] When jumping around during live playback and crossing a pattern border, reset all voices.
   [Fix] Note Properties: Pre-select correct item in plugin parameter list if plugin has more than 100 parameters.
   [Fix] Recording automation from plugin parameters in IT/XM modules wrote incorrect Zxx parameters.
   [Fix] With "follow song" enabled, the order list selection is no longer modified on pattern transitions.
   [Fix] <jsY Redraw issues with right-click drawing in the parameter editor.

Sample tab
   [New] Ogg Vorbis and Opus sample loading support.
   [New] New shortcuts: Zoom to sample start (1) / end (2), trim to loop end (Ctrl+Shift+T).
   [Imp] Loop cross-fader now also works with sustain loops.
   [Imp] MP3-compressed WAV samples are now also tried to be decoded using Media Foundation rather than just mpg123.
   [Fix] Sample tuner was broken for XM modules.
   [Fix] Stereo IMA ADPCM WAV samples were not read correctly.
   [Fix] Splitting a stereo sample into two mono samples didn't update the tree view.
   [Fix] When extracting a single sample from an SF2 bank, import the sample name rather than the patch name (http://bugs.openmpt.org/view.php?id=758).

Instrument tab
   [New] Added keyboard shortcuts for selecting loop points and moving envelope points by one beat.
   [Imp] Draw selected loop points in different colour.
   [Imp] Show fade-out length in ticks when hovering its edit field.
   [Imp] When entering a MIDI program > 128, automatically convert it to a program + bank combination.
   [Imp] Show plugin program name when hovering MIDI program / bank input fields.
   [Imp] Update status bar when moving envelope points around using the keyboard.
   [Fix] Preview the correct note when pressing octave keys (tx eightbitbubsy).

Tree view
   [Imp] Speed up display of very long order lists.
   [Fix] When removing a plugin, all other plugins were removed from the tree view as well, despite still being present in the module.

VST / DMO Plugins
   [New] Disable the remove button in the plugin manager for DMO plugins, as it confused several users how to re-add the removed plugins.
   [New] Shift-clicking a plugin editor toggle button closes all other editors (tx coda).
   [Imp] When opening an instrument plugin editor, check if the currently selected instrument would be suitable input instrument for the plugin, rather than just the first instrument that uses this plugin.
   [Imp] If available (on DirectX 9 and newer), DMO plugins now process in floating-point precision rather than 16-bit PCM.
   [Mod] Editing integer parameters of DMO plugins should be easier now.
   [Mod] Always send both LSB and MSB of bank select. Otherwise some synths (e.g. Roland XV-5080) ignore it.
   [Fix] Plugin editor position was not restored properly on multi-monitor setups.
   [Fix] Possible drift in precision for DMO plugins that query the current play time.
   [Fix] Only the first VST plugin in a module got informed about transport changes.

VST::Specific Plugin Fixes
   [Fix] Image-Line Sawer does not like MIDI CC 121 and 123, so do not send them when resetting playback (tx mallo).
   [Fix] Superior Drummer did not load its samples until playback starts (http://bugs.openmpt.org/view.php?id=750).

Playback
   [Mod] Instead of having one "compatible playback" per file, every playback quirk now has its own flag. This includes a dialog to edit these flags. These flags should not be edited manually, except for the "Set Defaults" functionality.
   [Mod] For old files made with MPT / OpenMPT before v1.24, re-enable periods in linear slide mode. This fixes for example the drum line sample in Zanoma's "Late At Night".
   [Fix] Volume column offset + retrigger effect combination was broken for looped samples and could lead to crashes.
   [Fix] Playing a sample at a sample rate close to the mix rate could lead to small clicks when using vibrato.
   [Fix] Bass Expansion DSP was not applied to rear channels (broken since the dawn of time).
   [Fix] Possible crash with excessive portmento down in some formats.

MPTM
   [New] Each sequence now has its own restart position.
   [Fix] Extra fine portamento didn't work properly with custom tunings. EEx / FEx now changes the pitch by x finetune steps on the first tick (http://bugs.openmpt.org/view.php?id=731).

IT
   [Fix] Even after fixing it in OpenMPT 1.18, instrument Pitch/Pan Separation was only half as deep as it should be.
   [Fix] Portamento with no active note still applied the portamento effect if the previous note just stopped playing on the previous tick.

IT::Compatible Playback Mode
   [Fix] Default volume of the instrument is recalled if an instrument number is next to a note-off.
   [Fix] Resuming sample playback using a note without instrument number after a note cut was broken.
   [Fix] Remember new instrument number for next instrument-less note even when sample playback is stopped.

XM
   [Fix] Some probably hex-edited XM files (e.g. cybernostra weekend.xm) were not loaded correctly.
   [Fix] MadTracker 2 plays portamento-ed notes even if previously no note was playing. Disable this FT2 compatibility fix for XMs made with MadTracker (fixes m3_cha.xm).
   [Fix] Skale Tracker plays notes with out-of-range offset commands. Disable this FT2 compatibility fix for XMs made with Skale Tracker.
 
XM::Compatible Playback Mode
   [Fix] Portamento with no active note still played the new note if the previous note just stopped playing on the previous tick (fixes u-k3symb.xm).

S3M
   [New] Added support for old vibrato style which cannot be enabled in the ScreamTracker UI and is probably not used by any modules anyway.
   [Fix] Pattern loop start resets on pattern transitions (http://bugs.openmpt.org/view.php?id=757).

MOD
   [New] Support for ProTracker 3.6 IFF-style modules (http://bugs.openmpt.org/view.php?id=752)
   [Fix] Try to detect NoiseTracker files disguising as ProTracker MODs and fix Dxx pattern commands for such files (http://bugs.openmpt.org/view.php?id=749, fixes 1.11song2.mod and 2-3song6.mod).
   [Fix] Properly import finetune of His Master's Noise Tracker modules (fixes abridge.mod, questioff.mod and others, http://bugs.openmpt.org/view.php?id=749)
   [Fix] Some trimmed MOD files were not loaded correctly (fixes quartex.mod).
   [Fix] Infinite pattern loops were not handled properly.
   [Fix] With Amiga limits enabled, do not go below period 113, independent of finetune setting.

Other formats
   [New] DBM: Added support for echo DSP.
   [New] Added built-in MO3 support that does not rely on the closed-source UNMO3.
   [Fix] Various Ultimate SoundTracker heuristic fixes (http://bugs.openmpt.org/view.php?id=751).
   [Fix] MDL: The tail of compressed samples was slightly off in OpenMPT 1.25.
   [Fix] J2B: Properly import non-existing patterns.
   [Fix] Files with lots of NUL bytes at the start are no longer falsely detected as Ultimate SoundTracker modules.
   [Fix] Possible crashes with malformed AMF, AMS, DBM, IT, MDL, MED, MPTM, MT2, PSM and MMCMP-, XPK- and PP20-compressed files.

Module cleanup
   [New] Add option to merge identical patterns (http://bugs.openmpt.org/view.php?id=738).
   [Fix] Detecting unused samples in instrument mode will now get slightly less confused about instrument-less notes.

Stream Export
   [Imp] Ogg Vorbis and Opus support is now built-in and no longer requires an external library.
   [Imp] Add a new "MP3 (compatible)" export file type that is implemented only via libmp3lame and is the same as the old libmp3lame CBR mode with strictly ID3v1 tags only.
   [Mod] Relax Lame CBR mode restrictions: Allow bitreservoir, do not enforce ISO padding and bitreservoir restrictions, write out lame info tag, always use ID3v2.
   [Reg] Only show a single MP3 encoder. If libmp3lame ist available, it is by far the best option. If the user provided a BladeEnc.dll, they almost certainly want it preferred to any ACM encoder. Selecting a different encoder is still possible by disabling the components of higher priority encoders.
   [Reg] Remove hidden setting Export.MP3LameAllowID3v2inCBR (now always true for "MP3 / CBR" and always false for "MP3 (compatible) / CBR").

Misc
   [New] Added hidden setting Misc.DistinguishModifiers to distinguish between left and right modifiers (e.g. to create FT2-like play pattern shortcuts).
   [New] Update check: Add possibility to ignore automatic notifications for a specific OpenMPT version.
   [Imp] SF2: Try to load instruments with left and right layer as stereo samples.
   [Imp] Add browse item in example song and template module menus (http://bugs.openmpt.org/view.php?id=220).
   [Mod] When saving a module file, do not change its extension. Prompt for a new filename when saving a file loaded from an import-only format (http://bugs.openmpt.org/view.php?id=762).
   [Mod] Update check: Use HTTPS by default. On Windows XP and older, always fall back to HTTP as TLS 1.0 is disabled by default on these systems.
   [Fix] MIDI Export: Note cuts were exported incorrectly and bloated the MIDI size (http://bugs.openmpt.org/view.php?id=746).
   [Fix] SF2: Many soundfont samples were completely detuned since OpenMPT 1.20.
   [Fix] Sometimes a wrong MIDI input device was remembered (http://bugs.openmpt.org/view.php?id=756).
   [Fix] Creating / loading a looped 16-bit stereo sample shorter than 4 samples could lead to a crash.
   [Reg] The bandwidth of the polyphase 8-tap resampling filter is no longer configurable and fixed at the previous default of 97% now. The setting only affected the upsampling part of the filter and not the downsampling part, which was rather unintuitive. The bandwidth stays configurable for the XMMS-ModPlug filter.

Bundled plugins
   [New] DigiBooster Pro Echo DSP is now a built-in plugin that can also be used in module types other than DBM.

Third-Party Libraries
   [Mod] Update lhasa (v0.3.1).

Installer/release package
   [Fix] Note Off shortcut was missing in US_mpt-ft2_classic.mkb / US_mpt-it2_classic.mkb keymaps (tx Garian).
   [Mod] Added FT2-like "play pattern from start" / "play song from pattern start" shortcuts to US_mpt-ft2_classic.mkb.
» No support, bug reports, feature requests via private messages - they will not be answered. Use the forums and the issue tracker so that everyone can benefit from your post.

LPChip

This release will have my other demo song bundled too, right? Voyage Home?
"Heh, maybe I should've joined the compo only because it would've meant I wouldn't have had to worry about a damn EQ or compressor for a change. " - Atlantis
"yes.. I think in this case it was wishful thinking: MPT is makng my life hard so it must be wrong" - Rewbs

Saga Musix

That's of course the most important part of the release, right? :P
But yes, that is going to be added - given that you fix the stuck notes on channels 14 and 15 starting from the end of pattern 2...
» No support, bug reports, feature requests via private messages - they will not be answered. Use the forums and the issue tracker so that everyone can benefit from your post.

LPChip

Quote from: Saga Musix on April 27, 2016, 22:28:52
That's of course the most important part of the release, right? :P
But yes, that is going to be added - given that you fix the stuck notes on channels 14 and 15 starting from the end of pattern 2...

I wasn't aware there are any stuck notes. I'll fix them though, np.
"Heh, maybe I should've joined the compo only because it would've meant I wouldn't have had to worry about a damn EQ or compressor for a change. " - Atlantis
"yes.. I think in this case it was wishful thinking: MPT is makng my life hard so it must be wrong" - Rewbs

RyanBram

Hi, Everyone.

I write here especially just to express my appreciation and gratitude for the hardwork of Saga and many of OpenMPT contributors. I tested the Release Candidate for OpenMPT and latest library for OpenMPT123. So far most feature mentioned is work flawlessly (especially the MO3 decoder).

I am really curious to see them officially released.

Best regards,
RyanBram

Saga Musix

As always, a lot of the improvements are due to manx as well - not just me.

Some more changes that were added in the last few days:
- The MIDI Input / Output plugin is now built right into OpenMPT - it is no longer an external VST plugin.
- Some DNA and NNA checks were broken if no instrument number was found next to a note.
- The plugin manager now also offers the possibility to search for plugins by their vendor name.
» No support, bug reports, feature requests via private messages - they will not be answered. Use the forums and the issue tracker so that everyone can benefit from your post.

Diamond

Quote from: Saga Musix on April 29, 2016, 01:40:40
- The MIDI Input / Output plugin is now built right into OpenMPT - it is no longer an external VST plugin.

Nice.  Thanks to both you and Manx for all the great work.

Combinebobnt

The soundfont import pitch correction works great

monsterovich

#8
2016 year... OpenMPT is still Windows ONLY.  :P

Good job, anyway.

Quotefixed SF2 sample frequency import

Finally!!!

Saga Musix

Ah cool, I heard you just volunteered to rewrite essentially all of OpenMPT's GUI (which is basically 90% of the OpenMPT code that is not libopenmpt)? ;)
In more serious news, we might get some better Wine support soon by directly talking to Linux audio drivers rather than Wine's emulation layers, which should allow for lower-latency playback on all Wine-supported platforms.
» No support, bug reports, feature requests via private messages - they will not be answered. Use the forums and the issue tracker so that everyone can benefit from your post.

monsterovich

#10
Quote from: Saga Musix on May 09, 2016, 10:43:02
In more serious news, we might get some better Wine support soon by directly talking to Linux audio drivers rather than Wine's emulation layers, which should allow for lower-latency playback on all Wine-supported platforms.

This sounds like some kind of magic, because I don't know how is this possible.  Anyway, dealing with linux audio drivers through wine is not a good idea. It seems that you are trying to use this strange thing called "winelib" which can generate a native binary file after the build. Wine wiki authors named this process " Good fluck with MFC code in wine". Or what do you want, tell me your secrets.

So, I still want to see a multi-platform module editor library with ability to export to files, I think it's the true future of OpenMPT.

PROTIP: in linux, use alsa instead of pulseaudio, PA is the worst sort of crap.

manx


Quote from: monsterovich on May 09, 2016, 13:12:22
Quote from: Saga Musix on May 09, 2016, 10:43:02
In more serious news, we might get some better Wine support soon by directly talking to Linux audio drivers rather than Wine's emulation layers, which should allow for lower-latency playback on all Wine-supported platforms.

This sounds like some kind of magic, because I don't know how is this possible.

It will be done in rather the same way as Wine itself implements most Windows APIs, i.e. use Wine development tools to build a Wine DLL (roughly speaking a hybrid library that can be loaded by Win32 code running on Wine, which then itself can load and call any native library on the host system).

Work-in-progress screenshot (this will almost certainly not be in 1.26.01 though):


Quote from: monsterovich on May 09, 2016, 13:12:22
Anyway, dealing with linux audio drivers through wine is not a good idea. It seems that you are trying to use this strange thing called "winelib" which can generate a native binary file after the build.

Winelib is related as this is the environment the Wine DLL we build will use.

Quote from: monsterovich on May 09, 2016, 13:12:22
Wine wiki authors named this process " Good fluck with MFC code in wine".

Well, I'm not trying to compile OpenMPT and MFC against winelib, but just a small wrapper that deals with audio APIs. MFC may be possible, but it will be just too much work and almost certainly not worth the effort (would probably require porting OpenMPT to an even earlier MFC than VS2008, like e.g. VC6, and then fixing VC6 MFC to build against winelib) (and I think the resulting binary would not be legally distributable).

Quote from: monsterovich on May 09, 2016, 13:12:22
So, I still want to see a multi-platform module editor library with ability to export to files, I think it's the true future of OpenMPT.

A module editor library is possibly what might come out of an effort to split GUI from non-GUI tracker parts, which would be required for porting OpenMPT to a GUI framework other than MFC anyway. It's roughly guessing even 80% of the work that needs to be done there. Anyway, this is waaaay future work. I opened a bug at the issue tracker which lists all the issues that AT THE VERY LEAST need resolving before any of this will happen: https://bugs.openmpt.org/view.php?id=783

Quote from: monsterovich on May 09, 2016, 13:12:22
PROTIP: in linux, use alsa instead of pulseaudio, PA is the worst sort of crap.

Well, I politely beg to differ, as this is just FUD.
On any modern Linux desktop (this means at the very least all of Debian, Ubuntu, Suse, RedHat and all derivatives since about 10 years ago), PulseAudio is installed and correctly set up by default. What WILL cause problems in this situation, is using the ALSA emulation layer to talk to PulseAudio. Additionally, PulseAudio is the only viable solution that allows seamless switching between output devices (i.e. disconnecting your USB soundcard and continue using the internal one or even switching from ALSA to Bluetooth audio).
Supporting PulseAudio natively to provide a better out-of-the-box experience than with any Wine driver (although, since they merged wine-pulseaudio in Wine-1.8 or Wine-1.6-ubuntu, things have gotten way better than before) is the one single major goal behind the effort implementing the Wine wrapper at all.
Having said that, we will probably also support anything supported by the PortAudio library on Linux, because we are already using PortAudio on Windows for WDM-KS, WASAPI and WaveRT backends. Basically this means direct ALSA support (through PortAudio).
JACK support will be very difficult though, as the strict scheduling requirements imposed (and enforced) by jack (no blocking whatsoever in the audio callback thread) are difficult to meet in the Wine Wrapper and in OpenMPT running on Wine itself.

All of this wlll be, in the first iteration at least, Linux-only and VERY EXPERIMENTAL. FreeBSD will probably follow (because it will be rather simple).
If someone wants to buy me a somewhat modern MacMini, I'll also try implementing OSX support ;).

monsterovich

#12
QuoteOn any modern Linux desktop (this means at the very least all of Debian, Ubuntu, Suse, RedHat and all derivatives since about 10 years ago), PulseAudio is installed and correctly set up by default.

And users have problems with PssshAudio since 2006:

- No sound!
- Random audio glitches.
- Sound disappearing. *
- High or 100% CPU load. *
- Bad sound quality. *

* - I have/had these.

So, It's not safe/recommended to use PA in the serious audio software like OpenMPT. I prefer to use OpenMPT->Alsa directly.

Quote
PulseAudio is the only viable solution that allows seamless switching between output devices (i.e. disconnecting your USB soundcard and continue using the internal one or even switching from ALSA to Bluetooth audio).

It just does this automatically and it's all.

QuoteSupporting PulseAudio natively to provide a better out-of-the-box experience than with any Wine driver (although, since they merged wine-pulseaudio in Wine-1.8 or Wine-1.6-ubuntu, things have gotten way better than before)

Pulseaudio just was crappy and had missing features, so they wrote a separate audio driver to make it work with wine. But It still doesn't work properly even for me. (See problems above) Google knows that

QuoteHaving said that, we will probably also support anything supported by the PortAudio library on Linux, because we are already using PortAudio on Windows for WDM-KS, WASAPI and WaveRT backends. Basically this means direct ALSA support (through PortAudio).

This, please, and don't let Lennart break my audio.

Really Weird Person

#13
I downloaded the code for this build after reading the manual (as I hadn't worked with the code in quite a while) and, upon attempting to build it, received 5 errors (4 of which look similar to each other).

Severity   Code   Description   Project   File   Line   Suppression State
Error   LNK2019   unresolved external symbol "public: class CSoundFile const * __cdecl CViewPattern::GetSoundFile(void)const " (?GetSoundFile@CViewPattern@@QEBAPEBVCSoundFile@@XZ) referenced in function "private: bool __cdecl CViewPattern::IsLiveRecord(void)const " (?IsLiveRecord@CViewPattern@@AEBA_NXZ)   OpenMPT   C:\...\build\vs2015\Draw_pat.obj   1   

There is the first error. The next 3 look similar to that. The last error is: Severity   Code   Description   Project   File   Line   Suppression State
Error   LNK1120   2 unresolved externals   OpenMPT   C:\...\bin\x64\mptrack.exe   1   

Help on fixing these would be much appreciated. I am using Visual Studio 2015 on Windows 10.

Saga Musix

Does removing the inline keyword from GetSoundFile() in View_pat.h help?
» No support, bug reports, feature requests via private messages - they will not be answered. Use the forums and the issue tracker so that everyone can benefit from your post.