Releases: izzyreal/vmpc-juce
VMPC2000XL v0.9.0.8
For this release I've received a lot of super valuable input from various users and contributors. A big warm thank-you to them!
- [plugin] Implement musical position synchronization to the DAW. Wherever you place the play head in your DAW, VMPC2000XL positions its internal sequencer reasonably. Most likely this only works as expected if VMPC2000XL uses the same time signature as the DAW, and neither VMPC2000XL or the DAW vary the time signature anywhere in the arrangement.
- [plugin] The DAW's play head can be repositioned while playing, and VMPC2000XL follows.
- [plugin] Fix synchronization with Cubase. In earlier versions of VMPC2000XL this wasn't working at all.
- [plugin] VMPC2000XL now also supports synchronizing to the DAW in Song mode.
- [standalone] Fix individual outputs. v0.9.0.0 introduced a regression due to the complete rewrite of multibus support. This has been fixed.
- Fix conflict between ordinary typing and typing via the pads in the Name screen.
- Make ordinary typing configurable. See Shift + 0 for VMPC2000XL-specific settings. If
Name typing w. keybd
is set toNO
, you can only enter names via the cursor keys and DATA wheel, or via the pads. - Fix small cosmetic bug when using the slider in the
TRIM
screen to change theEnd
value. - Hide unused fields in the timestretch functionality. Timestretch in VMPC2000XL isn't nearly as good and complete as the MPC2000XL's timestretch, in particular because it doesn't implement the
Preset
andAdjust
fields. Previously, VMPC2000XL was showing these fields, even though they are ignored by the timestretch algorithm. This is very misleading, and it probably has wasted precious time of users who would keep trying to timestretch with different settings that didn't actually make a difference in the result. - Allow the
Open Window
key to close the opened window, just like on the real MPC2000XL.
VMPC2000XL v0.9.0.6
WIP improvements to host musical position synchronization. Probably better to not download and use this, unless you've explicitly been given this link.
VMPC2000XL v0.9.0.4
- Fix slider UI updates when moving the slider via MIDI.
- Fix Song mode DAW synchronization.
- In the Mixer screens, holding down SHIFT and tapping the drum pads, allows you to select multiple channels simultaneously. This is an official MPC2000XL feature that was missing all these years.
- Fix various multi-bus issues with the VST3 version. The issues were noticed in Reaper, but it's possible other hosts had issues too. The wrong audio was sent to the wrong bus, and after changing the individual output of a pad, there was noise in the buffer. Additionally in Reaper many of the additional buses would at times be muted after opening the plugin. Also the initial channel configuration in Reaper was incorrect.
- Follow DAW tempo, even when the DAW is not playing.
- Fix iOS Bluetooth MIDI permissions.
- Show the disclaimer only once. It was showing every time you opened the GUI in some hosts for some plugin formats.
VMPC2000XL v0.9.0 release candidate 0
Highlights:
- Completely new UI based on vector graphics
- Improved multi-bus plugin support
- LV2 for macOS and Windows
The manual for the release candidate is here: https://vmpcdocs.izmar.nl/0.9.0.0
If you're interested in the story behind this release, continue reading. If not, enjoy the release candidate, and please report problems via https://izmar.nl/support/bug-reports-feature-requests
New UI
The previous UI was based on bitmaps. A bitmap describes an image as a 2-dimensional grid of cells, where a color value for each cell is provided. Microsoft's BMP files work like this, as does PNG and many other image formats. I took a photo (which is a bitmap) of my MPC2000XL with my phone, and I modelled the animating components -- DATA wheel, slider and pot caps -- in Blender (which renders to bitmaps).
This looked ok, but I wanted the LCD to take up much of the free surface that surrounds the original, in order to make the LCD easier to read and use. With a photo, it's not very natural to make this kind of change -- enlarging the display implies losing detail, and the enlarged display needs to blend in well with its new surroundings. As to blending in well; that also applies to the function keys that need to be repositioned. The result has never been very pretty or neat, but it worked.
In comes the new UI, using vector graphics to display the virtual MPC2000XL. If you've ever seen SVG files or seen someone work in Adobe Illustrator, you have seen vector graphics. Here, we describe not a range of pixels, but we describe an image in terms of geometrical shapes with certain positions, colors, line widths, and so on. One of the advantages is that it's very natural for such images to be decomposed and rearranged.
Vector graphics are nice to have when using VMPC2000XL on the desktop, because it also happens to deliver a pretty clean and decent UI compared to a gritty photo with wonky Blender stuff (100% my fault, not Blender's). But in the back of my head, one reason I always really wanted vector graphics, was to improve the iOS version that is currently in TestFlight. At the moment you can only run VMPC2000XL on iPads, because iPhones are too small for the UI. The buttons get too finicky, end of story. But there's a fair chance of having at least some utility on smaller devices if there would be different views instead of a single UI, where each view is only a few of all possible UI components.
So, when I got an email from someone saying his friend could make MPC2000XL vector art, I immediately jumped on the opportunity. I wowed out loud when I go the email with the bitmap preview, and when I finally received the vector art source file and zoomed in on all its lushness, I couldn't wait to get busy and integrate it into VMPC2000XL.
The process of reworking raw vector art for using it in an application with many interactable components was quite challenging and required a lot of patience and trial and error, while, in parallel, coming up with a kind of "engine" of sorts that would be running inside VMPC2000XL, as well as coming with a file format for that engine. The engine had to take fairly human readable files that describe a view, or an arrangement of components, and convert that to the kind of C++ code that is necessary for actually drawing stuff onto the screen. I decided to use JSON files for this. Here's a quick actual example:
{ "name" : "cursor_keys", "shadow_size" : 1, "svg" : "cursor_keys.svg", "label" : "CURSOR" }
This will draw the cursor_keys.svg
file with the text "CURSOR" above it, with nice little shadow effect. Everything together is grouped into a component with the name "cursor_keys".
Although some may prefer bitmap aesthetics and editing, this way of describing and composing UI elements gives a lot of versatility, and allows for reusable sub-arrangements, like the pads section, or the function keys and display. It's also a great foundation for custom VMPC2000XL interfaces, or skins. Those aspire to create skins, are encouraged to play with what is currently available. On macOS you can directly start by tinkering with Contents/Resources/json
and Contents/Resources/svg
, buried somewhere inside the VMPC2000XL.app bundle. On other systems, you would have to start putting your programmer's hat on and build from source using Visual Studio 2022 on Windows or your favorite editor and toolchain on Linux. Alternatively, you could wait a bit, because I do plan to make it easier to make skins somewhere in the next 6 months.
Desktop stability
Although VMPC2000XL for iOS is still in TestFlight, the standalone and plugin versions for desktop computers are slowly but surely reaching acceptable levels of stability. Personally I rarely experience VMPC2000XL crashes these days, and most support requests of the past few years do not involve crashes or freezes either. That said, I'm not a professional producer who has used VMPC2000XL for many hours without any serious issues. So the compromise is to remain in alpha (pre-beta) stage, but getting ready to promote to 1.0 beta hopefully this year or early 2026. This is what big the jump to 0.9 aims to signify.
Improved multi-bus plugin support
If you've tried VMPC2000XL's multi-bus support, most likely you have seen vague bus names and reached for unavailable buses. The truth is, multi-bus is surprisingly difficult plugin territory.
Let's start by describing the ideal scenario, where VMPC2000XL is king in the world of music software:
-
VMPC2000XL has 4 mono input channels and 10 mono output channels. This reflects the capabilities of the real MPC2000XL with an output expansion board: RECORD IN L/R, DIGITAL IN L/R, STEREO OUT L/R, ASSIGNABLE MIX OUT 1 to 8.
-
Input and output 1/2 can be used by the user as individual mono channels, or as single stereo pairs. The same for 3/4, 5/6, 7/8 and 9/10.
-
Regardless of how the user wants to use/view the inputs and outputs, it is always clear which input or output of the virtual MPC2000XL they're dealing with, so names like "RECORD IN" and "MIX" should be clearly visible when selecting buses in the host's interface.
But it's quite a challenge to fit this ideal to the real world.
All plugin formats -- LV2, VST3, AUv2, AUv3 -- have their own ideas regarding channels and busses in plugins and hosts. And so do all hosts!
One of the problems as a plugin developer, is there's no central place that aggregates the details of each plugin format and host combination. So you're kind of forced to try and get as close as you can to the ideal, for every single one of these combinations. And it turns into a bit of a waterbed, where fixing one combination leads to breaking another one.
The final result is presented in the updated plugin compatibility matrix.
Overall, all the multi-bus fixes in v0.9.0.0 release candidate 0, combined with consulting the compatibility matrix, should lead to a good multi-bus experience.
VMPC2000XL v0.6.4
- Fix various issues when using more than 127 sounds.
- Implement 256 sounds in memory limit. Before this, VMPC2000XL would allow over 256 sounds in memory at a time, which is incongruent and incompatible with the real MPC2000XL.
- Fix iOS keyboard configuration and learn (i.e.
Shift + 0
and thenF2
forKEYBRD
). - Fix sound and program name derivation. To summarize, the real MPC2000XL uses the sound or program name that is encoded in the actual the file data -- with mixed casing, like
CoolKick
orNewPgm-A
-- if, and only if, the encoded name is a case-insensitive equivalent of the file name. If it's not, the file name becomes the sound or program name, resulting in upper casing, likeCOOLKICK
orNEWPGM-A
. VMPC2000XL now follows this behaviour. - Minor cosmetic fixes in
KEYBRD
,Copy Sound
, andChannel Settings
screens. - For developers: I'm learning Vim, so I've made some minor changes to facilitate working on VMPC2000XL in Vim. The main change is the creation of
compile_commands.json
during the CMake generation stage. The rest of my setup can be found here.
A special thank you to all the bug reporters on GitHub!
VMPC2000XL 0.6.1 (macOS only)
You must remove the previous version manually from your machine before you install this upgrade!
- Remove
VMPC2000XL.app
from/Applications
- Remove any VMPC2000XL plugins from
/Library/Audio/Plug-Ins/VST3
and/Library/Audio/Plug-Ins/Components
- Run this new v0.6.1 installer.
This release has no new features or bugfixes compared to v0.6.0.
Background
My build server was compromised. See https://blog.jetbrains.com/teamcity/2023/09/critical-security-issue-affecting-teamcity-on-premises-update-to-2023-05-4-now/
I wasn't sure if my Apple certificates, which resided on a build agent machine (separate from the server, but connected via ethernet) were compromised as well. So the due dilligence in me decided to revoke all Apple certificates. Apparently only Apple can do this for you, and it took them several months, with no reason given why it took so long.
They finally revoked my certificates, which, expectedly, rendered existing VMPC2000XL macOS releases invalid, because they're signed against a revoked certificate. That's the reason why v0.6.1 was published.
VMPC2000XL v0.6.0
- First public iOS TestFlight release: https://testflight.apple.com/join/yEgfYk21
- Allow typing tempo, bar/beat/clock, and velocity ratio in MAIN screen
- Do not ignore attack when dcy md is start
- Fix recording time when sampling
VMPC2000XL v0.5.14.4
- Fix crash when quickly and repeatedly previewing SND or WAV files in the LOAD or Directory screen.
- Implement Locate screen. This screen and its functionality, which is present on the real MPC2000XL, was simply not implemented in VMPC2000XL so far. Now it is. The locations are persisted to the ALL file as well.
- Fix various ALL-file persistence issues.
- Never rename
.DS_Store
file as part of making all files Akai-name compatible. This should avoid some garbage files accumulating in your MPC2000XL directory. - Fix hanging clock after using pads to add notes via step editor.