Releases: Tunetown/PySwitch
2.4.8
PySwitch v2.4.8
-
Bug fixes:
- Reset memory of actions after page change (this guarantees correct LED states). Came up with the @GlanzGuitar example, which contained a workaround for this issue.
- Routing of external MIDI messages: Invalid incoming messages have been crashing the device sometimes. Now, messages without a valid status byte will not be forwarded. (@Curryflurry)
-
Examples:
- Added @GlanzGuitar example (with removed workarounds)
Emulator 2.4.8.15
- Bug Fixes:
- Fixed the "current is not defined" bug in the display editor for display callbacks
Full Changelog: 2.4.7...2.4.8
2.4.7
PySwitch v2.4.7
-
Features
- Added an action to switch the new fixed effect slots of the Kemper MkII products on/off with bidirectional feedback from the Kemper. There is a simple demo example in the examples/Kemper/MIDICaptain 10 folder, and the states are also included in the Virtual Kemper.
- Added support for the Boomerang III Phrase Sampler (Added generic Program Change Mapping and an example, thanks to @manderscripts)
- Added some parameters to the "Other Parameter" action which is now called "Other Paremeter with Feedback" (which it is: If you just want to send messages, there is the new "Rotating MIDI Messages" action you can use with just one message)
- Added a Rotating MIDI Messages action. This can be used to set up certain scenarios with rotating messages, texts, colors (LED and/or display) etc. Has been added as a side-product of the boomerang support.
- Added new effect slot IDs which control the DLY and REV slots without spillover
-
Bugfix: use_internal_state parameter of BINARY_SWITCH action was not working
Emulator 2.4.7.14
- Features:
- Added a Settings tab, which can control the following:
- MIDI channels the emulator uses
- config.py settings for the emulator. These can also be downloaded to be used on a real device.
- Added a Settings tab, which can control the following:
- Some optimizations
- Some minor bug fixes
Full Changelog: v2.4.6...2.4.7
2.4.6
PySwitch v2.4.6
-
Features:
- Added Mapping for Space Intensity to clients/kemper/mappings/system.py (@quemper)
-
Bug Fixes / Optimizations:
- Bank Up/Down, Bank Select, Rig Select Actions: These were updating their displays also when not enabled. This led to wrong displays when a Pager is used. (@quemper)
- Other Parameter (BINARY_SWITCH) Action: Auto-quantize the input values of the parameters "value_enable", "value_disable" and "reference_value" to integer. Float values never make sense here.
Emulator 2.4.6.13
-
Features:
- Added a new Graphical Display Editor making it possible to edit the display layout (display.py) in a user friendly way. Open it by clicking on the display or the new button on the top right. You can select display labels, drag them around, create/delete labels, set colors annd callbacks etc.
- Added Save to last used Controller option (CTRL-T)
- The Emulator can now be installed as PWA (Progressive Web App). In Chrome, select "Install PySwitch Emulator" at the right of your address bar, and you will get a standalone App separated from Chrome.
-
Cosmetical improvements
Full Changelog: 2.4.5...v2.4.6
2.4.5
PySwitch v2.4.5
-
Features:
- Added Bank Select Action for the Wheel Encoder. Turning the wheel preselects the bank. To use the wheel pushbutton to acknowledge the bank keeping the current rig, the possibility to set rig = None for the Rig Select action(s) has been added. This enables to use it as push action for the wheel when used as bank preselector, to acknowledge the preselected bank with the current rig.
-
Bug Fixes:
- Rig Select, Rig Select & Morph Display, Bank Select, Bank Up/Down, Rig Up/Down: Now the rig select trigger sequence is correct, sending 1 at push and 0 at release, instead of sending them both on push. This enables the Kemper rig button morph function to work also in momentary mode. (@nickmrchaos)
- Added an option "momentary_morph" to the Rig Select action(s) which adjusts the "simulated" morph state in accordance to that. Set this to True if you use momentary morph in your rigs.
- Bank up/down Action: LEDs are now reset correctly after exiting tuner mode (@MetalMauce and others)
- Updated examples:
- Nano 4 / tunetown KBDN
- Nano 4 / tunetown Session with Looper and Pages
- Rig Select, Rig Select & Morph Display, Bank Select, Bank Up/Down, Rig Up/Down: Now the rig select trigger sequence is correct, sending 1 at push and 0 at release, instead of sending them both on push. This enables the Kemper rig button morph function to work also in momentary mode. (@nickmrchaos)
Emulator 2.4.5.11
-
Features:
-
Added support for opening folders on the local file system:
- "Open Directory..." lets you choose a folder to open, containing your configuration (inputs.py and display.py)
- After changing, you can save anytime with CTRL-S, overwriting the loaded files
- Changes made from external editors will immediately reload the emulator automatically if no unsaved changes exist, making it possible to work with external IDEs seamlessly
- "Save to Directory..." lets you save the current config to any folder on your file system (you have to create the folder yourself first, which is possible in the selection dialog directly)
The feature is implemented using the File System API, which must be supported to use the functionality. Also, you have to grant access to any folders you want to access.
-
-
Some minor cosmetical changes
-
Rework of the publishing helper scripts (internal)
Full Changelog: v2.4.4...2.4.5
2.4.3
-
Features:
- Added mappings for some system parameters (can be used with the wheel encoder, pedals or the "Other Parameter" Actions):
- Main volume
- Monitor volume
- Looper volume
- Added mappings for some system parameters (can be used with the wheel encoder, pedals or the "Other Parameter" Actions):
-
Minor improvements:
- Explore Mode: After a pin has been triggered, do never return it to dark blue but keep it light blue. This way no triggers will be missed if they are very short after each other.
- Added some undocumented, fine grained effect type names for the "Effect State (extended)" action
- Updated the "Expression Pedals and Wheel" example to use the newer wheel accept/cancel functions on the button
-
Bug Fixes:
- The LED lightup on boot caused crashes due to insufficient power from a toaster of one user on the forum (@seve), so it has been removed.
- Removed the Expression pedal assignment in the default preset (this causes problems out of the box when no pedal is connected)
- Parameter Up/Down action: This was interfering with the tuner mode LED control, causing the LEDs not to go dark when tuner mode is activated.
Emulator 2.4.3.10
-
Fixes:
- Sorting of mappings in the select dropdowns
-
Cosmetic improvements:
- Added a note to check versions when a python error is displayed (incl. link to older versions of the emulator)
Full Changelog: 2.4.2...2.4.3
2.4.2
PySwitch v2.4.2
-
Features:
-
Values in the Big Display Label:
- Added the preview display parameters (like for the encoder) also to the pedal action (if change_display is set, this will display the exact value for 1.5s, then revert to the original display text)
- Added the preview display parameters (like for the encoder) also to the Show Tempo action (which now can also show BPM in a header/footer display as well as in the Rig Name display when change_display is set). All examples using Show Tempo have been updated to use this feature.
-
Added Parameter Up/Down action: This can for example be used to lower/raise the value of a parameter by a given offset. (Also for this there are several value display possibilities). This can replace missing expression pedals :) I personally use it for changing the Reverb Mix on the fly without sacrificing my Volume Pedal. See the "Parameter Up Down" example for the Nano 4 for demonstration.
-
Added a custom MIDI message action. This (for now) just sends a single arbitrary byte sequence, set by the message parameter. Especially useful when exploring the MIDI specification of devices like the Kemper, in conjunction with the new MIDI monitor (see Emulator changes).
-
Added mapping for global rig transpose, as well as a dedicated whell encoder action showing the correct values
-
Added all fonts from the original firmware (they dont take up RAM if not loaded, but now they are all available)
-
-
Fixes:
- Bank Preselect: When you pre-select a bank, and then change the rig on the Kemper, the preselect stays valid in the Kemper. This behaviour (which is kind of unlogical) is now also reflected in PySwitch: You have to send a Rig Select message to end the preselection. This resembles the Kemper behaviour better.
-
Optimizations:
- Modularized colors out of misc.py (some RAM gain). This import path for color stuff has changed to "pyswitch.colors", if you use that in your config somewhere, it has to be adjusted. All examples are already adapted.
- Changed mapping names to fit better into the preview displays
- Added some mapping dependencies (no functional changes)
- Changed the internal interface of the action callbacks a bit. If you defined your own callbacks: The action parameter is removed from most methods, replace this with "self.action" if you need it. This saves some (minor but still) RAM again. No other changes to the config files.
- Optimized Pager (in terms of RAM, no functional changes)
- Renamed mapping MAPPING_DELAY_MIX to MAPPING_DLY_REV_MIX (config needs to be changed only if you have this mapping adressed in the "Other" action or by code)
- Cosmetical: Reset all LEDs before processing (this way, unused LEDs are not randomly lit anymore)
Emulator 2.4.2.9
- Added a MIDI Traffic Monitor, showing all MIDI messages sent and received by the PySwitch emulator.
- Other cosmetic optimizations
Full Changelog: 2.4.1...2.4.2
2.4.1
PySwitch v2.4.1
- Optimizations for performance/RAM:
- Modularized the misc.py code out, only loaded when debugging is active. This gave us another ~5-10kB from the start!
- Singletons for all Mappings: This led to huge RAM savings with larger constellations (up to 10kB, because of fewer MIDI message objects in memory). This especially helped when mappings are used multiple times (for example the morph state in RIG_SELECT_AND_MORPH_STATE). No changes to config files necessary.
- Refactorings:
- Changes import structure. For most users using the standard MIDI routing delivered with PySwitch, there is nothing to change. If you implemented custom routings: There is one change to the communication.py file: The line "from pyswitch.controller.MidiController import MidiRouting" must be changed to "from pyswitch.controller.midi import MidiRouting".
NOTE: If you are using the HID functions and get an "OSError: USB Busy", there is a hotfix: See https://forum.kemper-amps.com/forum/thread/65206-pyswitch-an-alternative-customizable-firmware-for-paintaudio-midi-captain-contro/?postID=695969#post695969
Emulator 2.4.1.8
- Added MIDI traffic stats display to Virtual Kemper
- Optimized a bug that caused double the MIDI traffic needed when using the Virtual Kemper (no effect when connected to a real client)
Full Changelog: 2.4.0...2.4.1
2.4.0
PySwitch v2.4.0
- Changed default preset to a MC10 example close to the original PaintAudio KPP firmware
- Option "hold_repeat" for Inputs: When enabled, the hold action is repeated again and again as long as the switch is held down.
- Added Pushbutton Option "NO_STATE_CHANGE", to be able to have a completely passive action assigned to a switch, for example to just show the effect state of a lot without having a switch for that functionality
- Rework of Paging:
- Removed display parameter from Select Action (the display should be assigned only to the pager), see next point
- Changed display handling: Formerly, for direct page select, displays were needed for each page, being a waste of space so no one did that. Now, only one display can be assigned to the pager itself, which always shows the current page.
- Added an Error if a PagerAction is used by a Select Page (proxy) Action while not being part of any switch itself.
- Effect State action:
- Added text/color override parameters
- Added "show_slot_names" option, adding the slot name as prefix to the effect category
- Added an extended variant which shows dedicated type names for each Kemper type ID. This gives more information, but also needs a bit more RAM, so use with care.
- Added "max_bank" parameter to Bank Up/Down actions. Set this to 10 for the Player Level I. Only relevant if the preselect option is enabled.
- Added HID (Human Interface Device) support, see the new Action "USB Keyboard". This basically emulates an USB Keyboard: with the new action you can send key commands to the USB host. This way, PySwitch can additionally become a page turner for example. Also sequences of keys can be sent with one switch.
- Wheel Encoder:
- Added preview display parameter: Can be set to a diplay label which will then show the values while adjusting
- Added parameter "accept_action" and a corresponding action "Accept Encoder Value" action. If these are used in conjunction, the wheel does not send any value until the accept switch is pushed. See the default PySwitch preset and the action info texts.
- Minor refactorings:
- Merged KemperParameterMapping and KemperTwoPartParameterMapping classes into the Client implementation
- Added instructions (README) and examples for creating multi-boot scenarios, to load the original firmware when some switch is pushed during bootup.
Emulator 2.4.0.6
- Added switch settings (new button beneath the "+" button): Here you can adjust the hold time as well as the new "Hold Repeat" option (see above)
- More "realistic" rig names in the virtual Kemper client (the old ones suggested there is a rig ID by default)
- Review of tooltips, descriptions etc.
- Levels of advanced parameters: When clicking "show more...", the parameters will be unveiled by level of "advancedness". All nerdy parameters only show up in the last level. This keeps the technical parameters hidden except you really want to see them.
- Fixed a visual bug with color inputs
- Fixed a bug that did not show error messages in the PySwitch tick routine correctly
Full Changelog: 2.3.5...2.4.0
2.3.5
-
Changed parameters for PagerAction (all config options now accessible as parameters directly). Examples have been adjusted, some documentation can be found in the Emulator README.
-
Added option to directly select pages (see proxy method of PagerAction, demonstrated in some new examples for the MIDI Captain 10)
Full Changelog: 2.3.4...2.3.5
2.3.4
- Added PySwitch Emulator
- Reset state of effect buttons on rig change
- Small fixes in the Kemper protocol
- RIG_SELECT_AND_MORPH_STATE now can be used like all other actions
- Changed order of bottom row LEDs
Full Changelog: 2.3.3...2.3.4