Skip to content

Fixes and updates for v1.0.3 - #44

Open
nomadbyte wants to merge 43 commits into
g200kg:masterfrom
nomadbyte:develop
Open

Fixes and updates for v1.0.3#44
nomadbyte wants to merge 43 commits into
g200kg:masterfrom
nomadbyte:develop

Conversation

@nomadbyte

@nomadbyte nomadbyte commented Apr 14, 2025

Copy link
Copy Markdown

This includes a bunch of fixes and updates which could be released in v1.0.3. Briefly,

What's new v1.0.3

  • Allow automatic portability of patches across Multistomp models (needs respective effects installed)
  • Add a control knob for editing BPM parameter of the current patch
  • Verify whether AMP effect corresponding to the selected cab is installed
  • Fix inconsistent indication of the current effect and the the current parameter
  • Fix incorrect reading of patch data for effect id and cab id
  • Fix incorrect reading of patch data for 9th param of 5th effect
  • Fix the overriding of BPM value received in patch data (used to be forced to 120)
  • Clean up the effect list, add missing parameter value labels for several effects

Fixed are errors in patch data parsing and writing. BPM value set in the source patch is now properly read and retained.The effect ids are now consistent with the ones referenced in respective ZDL modules (see #30).

A dedicated BPM knob is added to allow BPM editing for the current patch. Another main feature is the ability to convert patches between Multistomp models (the original ones, not Multistomp+). Patches from the sibling Multistomp models can be easily imported as individually, as at once in a Bank.

Most of the Multistomp effects are compatible across the Multistomp models. However, Bass DRIVEs and AMPs are not directly compatible with MS-50G and MS-70CDR (due to lack of a Bass-specific module). It's possible to use for this the alternative effects from B1Xon model, which have same effect names, yet somewhat different or overlapping ids.

The editor's patch conversion takes care of mapping the effect ids between the ones specific to MS-60B and the ones from B1Xon. This way, the MS-60B patches (with AMP and DRIVE effects) can be directly set up on MS-50G/MS-70CDR and vice versa.

NOTE: Obviously, for the patch portability to work, the target pedal must have all the needed effect modules installed. This means a MS-60B should have the MS-50G/MS-70CDR specific effects installed (as used in the patch), and a MS-50G/MS-70CDR should have the respective B1Xon Bass effects installed (if patch uses Bass AMPs or DRIVEs).

This PR does not include updates to the stand-alone binaries. Perhaps, these should be set up to build automatically via GitHub workflow actions as part of Release process.

Also, the Japanese version of the What's new in v1.03 is output from Google Translate, so it may benefit from a more native proofing.

I hope this PR will shortly get tested and merged so that the users could benefit from the updates in the Web-version of the editor.


Fixes issues #31, #36, #38, #24, #12.

- Most of that functionality is already handled by patch object
- Also, need to refactor some of the remaining functions to forward
  the calls to respective patch object
- Multistomp internal binary patch data is 7bit encoded prior to
  being sent in a SysEx message (0x28);
- Multistomp effect id is generally a 4-byte integer, but in the
  patch only the lower 28 bits are stored;
- the AMP effect's cab id is encoded in the 8th param and is an
  effect id of the respective AMP effect (28-bit only).

> NOTE: Multistomp firmware allows only selecting cabs from the list
> which corresponds to the AMPs actually installed; This is because
> the cab data is stored in the AMP effect.
> So the editor too should take this into account at some point...
In Multistomp patches, AMP effect's cab id parameter value is actually
an effect id of the corresponding AMP effect. However, the Parameter
Change SysEx (0x31) allows only two 7-bit bytes to encode the value.
Thus, only the lower byte of the cab id is passed, the remaining
bytes are assumed the same (corresponding to Multistomp model) and
are filled in by the fw.

To keep the patch data consistent, it's preferred to send the whole
patch which includes the correct/full value for the cab id.
- This allows picking a Bass AMP while connected to MS-50G or MS-70CDR
  and vice versa.
- Previously, this would fail due to cab details not being initialized
  for "foreign" AMP effects.

> NOTE: In the common configuration, Multistomps are not expected to
> have the "foreign" effects. So selecting such effects in the editor
> should not make it available in the patch.
The scanning is done sequentially for all patches (1 to 50).
Each patch should first be explicitly set (MIDI 0xc0, ProgramChange).

- read mode: requests the current patch data (SysEx: 0x29);
- update mode: first sends the editor's data for the current patch,
  (SysEx: 0x28), then requests the current patch data (SysEx: 0x29)

With update mode, if any of effects referenced in editor's patch data
are not actually installed on the device, the patch recevied back from
the device will have these effects set to THRU.
- installed=-2: Not-Installed; effect is not defined for the model or
  belongs to different/newer fw version.
- installed=1: Installed; effect is fixed (always installed) in the fw,
  as is for MS-60B and MS-70CDR, which officially do not support effect
  module management (adding/removing), unlike the MS-50G.
- installed=0: Unknown; these effects are defined for the model, yet
  are not referenced in any of the scanned patches.
- installed=-1: Maybe-Installed; effect intially had the Unknown status
  and then was added into current patch, so it needs to be verified that
  it's actually installed. The patch is then sent to device and received
  again, the effect ids are parsed and when valid their status set as
  installed=1.

> NOTE: Effects referenced in the scanned patches are considered as
> Installed (installed=1).

By default, the Effect Panel shows both Defined (for the model) and
Installed effects. Installed effects are shown in green, Not-Installed
or Not-Defined effects are shown in red; the Not-Defined are hidden,
unless 'Show All MS Effects' box is checked.
- Similar to MS-50G which supports management of installed effects.
- This also assumes that pedal can have effects from other MS pedals.
- Bass AMP and DRIVE effects defined for MS-60B are not directly
  compatible with MS-50G and MS-70CDR, as they depend on additional
  module CMN_BASS.ZDL which is not loaded by MS-50G or MS-70CDR fw.
- However, older B1on pedal has equivalent effects which appear
  to be compatible, though somewhat larger in size.
- The B1on effects have IDs which overlap the respective MS-60B IDs,
  so some mapping is needed for patch portability.

> NOTE: the CAB handling implemented in B1on fw is different from
> the one on Multistomps; a given AMP module on B1on includes all
> cabinets, while on Multistomp an AMP effect includes only a single
> cabinet and the fw allows selection only for cabinets shared from
> the installed AMPs.
Provided the connected Multistomp pedal has all referenced effect
modules installed (equivalent B1on effects, when needed), the editor
handles all needed mappings to port a patch from another Multistomp
model.

This mainly relates to Bass AMP and DRIVE effects, which differ
between MS-60B and MS-50G, the latter needs to use the equivalent
effect modules from B1on pedal.
The updated BPM value is sent to the device as part of the whole
patch data via SysEx:0x28.

NOTE: The pedal fw only supports TAP function. It does not send
the updated BPM value (in the patch data) to the editor; it just
updates the patch internally. So user should avoid using the TAP
function while attached to the editor. Otherwise, the editor data
will override the BPM value set via TAP.
This sends the updated patch to the device; when the needed AMP is not
installed, the fw forces the cabid to OFF. The editor is then requests
the patch and re-displays the received patch.

Simliarly, this is also done when importing patch or bank.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant