This ambitious project aims to provide a single API for MIDI control pedal ANY multi-effect
Execute EasyEditShare.jar (DoubleClick or java -jar EasyEditShare.jar). Open when the real multistomp has gone be connected on PC.
Execute br.com.srmourasilva.main.KeyboardController.java
(Old) example: https://www.youtube.com/watch?v=yWB6dpbQ1xc
- CommonCause.TO_PATCH : Patch changed to specific patch
- CommonCause.GENERAL_VOLUME : General volume changed
- CommonCause.PATCH_NUMBER : Details of a patch number
- CommonCause.PATCH_VOLUME : Details of a patch volume
- CommonCause.PATCH_NAME : Details of a patch name
- CommonCause.EFFECT_ACTIVE : Specific effect actived
- CommonCause.EFFECT_DISABLE : Specific effect disabled
- CommonCause.EFFECT_TYPE : Specific effect type
- CommonCause.PARAM_VALUE : Specific param of effect actived
- Patch
- PedalController.nextPatch()
- PedalController.beforePatch()
- PedalController.toPatch(int index)
- Current patch
- PedalController.toogleEffect(int idEffect)
- PedalController.hasActived(int idEffect)
- PedalController.activeEffect(int idEffect)
- PedalController.disableEffect(int idEffect)
- PedalController.setEffectParam(int idEffect, int idParam, int value)
- PedalController.getAmountEffects()
- All the multistomp options
- PedalController.multistomp()
- PedalCompany.ZoomCorp
PedalType.G2Nu(basic, not tested)- PedalType.G3
PedalType | CommonCause | Detects pedal change? | Request changes to pedal? |
---|---|---|---|
PedalType.G3 | TO_PATCH | (x) | (x) |
PedalType.G3 | GENERAL_VOLUME | ( ) | ( ) |
PedalType.G3 | PATCH_NUMBER | ( ) * | TO_PATCH equivalent |
PedalType.G3 | PATCH_VOLUME | ( ) | ( ) |
PedalType.G3 | PATCH_NAME | (x) | ( ) |
PedalType.G3 | EFFECT_ACTIVE | (x) | (x) |
PedalType.G3 | EFFECT_DISABLE | (x) | (x) |
PedalType.G3 | EFFECT_TYPE | ( ) * | ( ) |
PedalType.G3 | PARAM_VALUE | (x) | (x) |
- Only by ZoomGSeriesMessages.REQUEST_SPECIFIC_PATCH_DETAILS(idPatch). It inform
- PATCH_NUMBER
- PATCH_NAME
- EFFECT_ACTIVE
- EFFECT_DISABLE
- EFFECT_TYPE
// Throws DeviceNotFoundException if not found
PedalController multistomp = PedalControllerFactory.searchPedal();
// Init the system (not your pedal)
// Throws MidiUnavailableException
multistomp.on();
// TO ZOOM G2Nu
// 0 to 7: Comp to Reverb
// 8 Mute
// 9 Bypass
multistomp.activeEffect(0);
multistomp.disableEffect(1);
// TO ZOOM G3
// 0 to 5 (6 Pedals)
// ...
// Set Patch
multistomp.beforePatch();
multistomp.nextPatch();
multistomp.setPatch(99);
System.out.println(multistomp);
// Turn down the system, not your pedal :P
multistomp.off();
You can receive notifications directly from your pedal
PedalController multistomp = PedalControllerFactory.searchPedal();
pedal.addListener(messages -> {
messages.getBy(CommonCause.ACTIVE_EFFECT)
.forEach(message -> System.out.println(message.details().effect));
messages.getBy(CommonCause.DISABLE_EFFECT)
.forEach(message -> System.out.println(message.details().effect));
messages.getBy(CommonCause.TO_PATCH)
.forEach(message -> System.out.println(message.details().patch));
messages.getBy(CommonCause.PATCH_NAME)
.forEach(message -> System.out.println((String) message.details().value));
messages.getBy(CommonCause.SET_PARAM)
.forEach(message -> System.out.println(pedal));
});
Understand the structure:
- Archicheture: The utils and exceptions of the system;
- Controller: It offers a simple API to use; ** MultistompChanger:
- Domain: The multistomp structure and message structure;
- Connection: The connection with Real Multistomp and this lib;
- Multistomp: Specific implementation for pedals;
- Test: Unit tests;
- Main: User demonstrations.
- Add PedalCompany in controller.PedalCompany.java;
- Add "if" for your pedal company in controller.PedalControllerFactory.java;
- Add your multistomp definition in domain.PedalType.
- In multistomp, create your pedal package;
- Extends domain.Multistomp.java if necessary;
- Implements MultistompFactory.java if necessary
- Implements MessageEncoder.java for encript the commands in MIDI messages.
- Implements MessageDecoder.java for decript the MIDI messages commands.