
Castor_and_Pollux
Hype41/100A Juno-inspired dual oscillator
Castor_and_Pollux is custom firmware for the Winterbloom Castor & Pollux, by @wntrblm. Latest release 2024.2.10 (February 2024), 586 stars on GitHub.
forWinterbloom Castor & Pollux·by@wntrblm
Unclaimed. Is this yours? Sign in with GitHub as @wntrblm to claim it.
gemini-firmware-2024.2.10-release.uf2· 68 KB· +3 files
Custom license· wntrblm/Castor_and_Pollux·gemini.wntr.dev·downloads come from the creator’s GitHub releases
2024.2.10February 10th, 2024Latest4 files
This is a bugfix & maintenance release for Castor & Pollux's firmware, Gemini ♊️.
👉 Most users should download gemini-firmware-2024.2.10-release.uf2 👈
Please follow the firmware upgrade instructions in the user's guide to upgrade your device's firmware.
About the files
- The
uf2files can be installed using the firmware upgrade instructions in the user's guide. - The
elffiles and are for testing & debugging and can be programmed using an appropriate debug probe. - The
releasebuilds are built without debugging information. - The
debugbuilds are built with debugging information.
Build identifier
Each release of the firmware has a unique build ID. This ID can be seen when using the online settings editor and allows finding the exact firmware version on your device. The build IDs for this version are:
- Release:
2024.2.10 (release) on 02/11/2024 03:09 UTC with gcc 13.2.1 by stargirl@starlet.local - Debug:
2024.2.10 (debug) on 02/11/2024 03:09 UTC with gcc 13.2.1 by stargirl@starlet.local
Changes from 2023.9.11
Firmware:
- Fixed an issue with fix16 rounding causing pitch glitches
User guide:
- Added errata about ramp table swap
Setting editor:
- Added ability to swap ramp calibration tables
- Fixed restore calibration functionality
Factory testing:
- Fixed ADC channel used for CV calibration
- Removed channel swap for SysEx set frequency command
Meta:
- Updated GitHub Actions for both docs and firmware
- Fixed .clang-format to work with later versions of clang-format
- Fixed formatting
- The
2023.9.11September 11th, 20234 files
This is a bugfix & maintenance release for Castor & Pollux's firmware, Gemini ♊️.
👉 Most users should download gemini-firmware-2023.9.11-release.uf2 👈
Please follow the firmware upgrade instructions in the user's guide to upgrade your device's firmware.
About the files
- The
uf2files can be installed using the firmware upgrade instructions in the user's guide. - The
elffiles and are for testing & debugging and can be programmed using an appropriate debug probe. - The
releasebuilds are built without debugging information. - The
debugbuilds are built with debugging information.
Build identifier
Each release of the firmware has a unique build ID. This ID can be seen when using the online settings editor and allows finding the exact firmware version on your device. The build IDs for this version are:
- Release:
2023.9.11 (release) on 09/11/2023 22:35 UTC with gcc 12.2.1 by stargirl@starlet.local - Debug:
2023.9.11 (debug) on 09/11/2023 22:35 UTC with gcc 12.2.1 by stargirl@starlet.local
Changes from 2023.4.22
Firmware:
- Fixed a bug for C&PI where the pulse width CV was inverted, leading to some unexpected behavior.
Settings editor:
- Added a hidden option to enable monitor mode to help with troubleshooting.
- Updated minimum supported firmware version.
Factory:
- Fixed castor pitch range check in monitor.py
- Updated monitor script to note sweep tests
- Small tweaks to factory setup scripts needed during initial C&PII programming
User guide:
- Fixed small typo
- The
2023.4.22April 22nd, 20234 files
This is a bugfix & maintenance release for Castor & Pollux's firmware, Gemini ♊️.
👉 Most users should download gemini-firmware-2023.4.22-release.uf2 👈
Please follow the firmware upgrade instructions in the user's guide to upgrade your device's firmware.
About the files
- The
uf2files can be installed using the firmware upgrade instructions in the user's guide. - The
elffiles and are for testing & debugging and can be programmed using an appropriate debug probe. - The
releasebuilds are built without debugging information. - The
debugbuilds are built with debugging information.
Build identifier
Each release of the firmware has a unique build ID. This ID can be seen when using the online settings editor and allows finding the exact firmware version on your device. The build IDs for this version are:
- Release:
2023.4.22 (release) on 04/22/2023 16:19 UTC with gcc 12.2.1 by stargirl@starlet.local - Debug:
2023.4.22 (debug) on 04/22/2023 16:19 UTC with gcc 12.2.1 by stargirl@starlet.local
Changes from 2022.07.6
This release coincides with the release of Castor & Pollux II, a major hardware revision. Both Castor & Pollux I and II run the same firmware, so owners of existing I modules have access to all the new firmware features added for II.
This new firmware contains a significant number of changes, with the most notable new features being:
- New LFO PWM mode, which routes the internal LFO to each oscillator's pulse width
- New LFO FM mode, which routes the internal LFO to each oscillator's frequency
- Revised Hard sync mode, which makes it easier to access metallic and glitchy sounds
- Revised pitch behaviors, with Castor's pitch knob able to sweep through the entire oscillator range in quantized steps
- Entirely new manual
Below is the full changelog for those interested.
Factory:
- Update factory scripts to support v2 board and hubble lens
- Calibrate zero volt threshold
- Fix calculation of pitch offset
- Fixup clock calibration script
- Add clock calibration
- Save clock calibration locally
- Update monitor script with new monitor message
Hardware:
- Add copper fills to front and back, swap usb header for solder wire pads
- Added versions strapping pins
- Added vbus power
- Filled out regulator thermal calculations
- Add expander
- Remove unused / old footprints
- Revising part numbers
- Update mainboard pcb files to kicad 7
- Update mainboard schematic files to kicad 7
- Add new hubble lens board guide
- Add freecad backup files to .gitignore
- Rename testkit-adapter to hubble-lens
- Remove unused progboard, panel
- Remove jackboard
- Switch ext header to a 2x5 1.27mm pitch IDC header
- Audit bom, replace some parts with alts
- Switch audio filter caps to 0603
- Normalize component values
- Reannotate schematic
- Fix button footprint
- Add ESD protection for inputs
- Pull power traces onto one layer
- Widen ground vias
- Swap ext connector for a vertical one
- Update stackup settings
- Add usb notch, pcb specifications
- Add interposer board
- Add expander and hubble lens
- Update mechanical design for hubble lens
- Wire an ADC pin to 3v3 for self-calibration
- Change R22-R24 value to 100k, mark as optional
- Update some labels, fix some fields, re-do fancytext
- Remove legacy pro file
- Update 3d model for jst header
- Spruce up some labels
- Add alt usb header
- Update schematic PDF
- Use winterbloom footprints for C, R, and L
- Minor tweaks to power schematic's layout
- Fixup the last few funky symbols
- Fixup schematic fields
- Add rating field to schematic
- Add fancy labels
- Remove old rescue lib from sym-lib-table
- Remove unused 3dmodels
- Remove legacy kicad files
- Ignore kicad_prl files
- Fix sercom pads for dotstar SI
- Note correct waveform outputs for TCC
- Updated jack footprints so they have f.fab markings
User guide:
- Revise entire guide for C&P II
- Add new illustrations
- Add new kit build photos
- Remove old build guide photos
- Add build guide for C&P II
- Fix broken image
- Shrinkify images
- Add version differences section
- Add vale configuration
- Fix a few minor copy issues
- Fix grammar issues
Settings editor:
- Add ability to re-calibrate tuning
- Settings editor now shows the hardware revision and the tuning utility uses the correct cv range for c&pi and c&pii
- Fix lfo waveform 2 shape control
- Small tweaks to settings editor ui
Firmware:
- Implement new pitch behaviors and oscillator modes
- Adjust ADC configuration to bump effective sample rate from 1.5 khz to 5 khz
- Add gem_config_common and organize config under src/config/
- Rename some configuration variables
- Add pin-based hardware revision determination
- Fixup configure script for tests
- When testing, print more detailed message when a f16 assertion fails
- Adjust adc input range for C&PII
- Account for differences in ADC input inversion between hardware revisions
- Configuration fixes for C&PI boards
- Give pulse width a more sensible range, add LFO knob deadzone
- Increase the FM deadzone to avoid FM still being applied even when the knob is fully CCW
- Add led configuration for C&PI
- Fix ADC channel order
- Fix systeminit() and TCC initialization
- Put gem_mcp4728 update into RAM
- Place i2c_write into RAM
- Add led indications for pitch adjustments
- Make animations for each mode distinct
- Pass tweaking state in gem_led_animation
- Add hardware revision to get_serial_number sysex command
- Revise monitor update message
- Improve mode switch animation and idle animation, use lfo value to control sparkle rate
- Refactoring and preparing for modal interface
- Overhaul main.c and implement better tweak overlay controls
- Add enable_zero_detection and enable_quantization settings
- Add oscillator.pitch_behavior for easier inspection of pitch behavior
- Rename gemmonitorupdate.lfo_intensity to lfo_gain
- Remove gem_mode_flag_tweak
- Keep track of the waveform amplitude in wntr_periodic_waveform
- Add osc8m_freq setting
- Pull monitor logic into monitor_task_
- Update libwinter
- The
2022.07.6July 6th, 20224 files
This is a bugfix & maintenance release for Castor & Pollux's firmware, Gemini ♊️.
👉 Most users should download gemini-firmware-2022.07.6-release.uf2 👈
Please follow the firmware upgrade instructions in the user's guide to upgrade your device's firmware.
About the files
- The
uf2files can be installed using the firmware upgrade instructions in the user's guide. - The
elffiles and are for testing & debugging and can be programmed using an appropriate debug probe. - The
releasebuilds are built without debugging information. - The
debugbuilds are built with debugging information.
Build identifier
Each release of the firmware has a unique build ID. This ID can be seen when using the online settings editor and allows finding the exact firmware version on your device. The build IDs for this version are:
- Release:
2022.07.6 (release) on 07/06/2022 04:09 UTC with gcc 10.3.1 by stargirl@starlet.local - Debug:
2022.07.6 (debug) on 07/06/2022 04:09 UTC with gcc 10.3.1 by stargirl@starlet.local
Changes from 2021.09.20
This release fixes a significant bug in the pulse width behavior. If you've noticed that Castor & Pollux's pulse waveform sounds "glitchy" or "steppy" when changing the pulse width, this fixes that! Modulating the pulse width should now be smooooooooooth. If you liked the old behavior, don't fret! You can use the settings editor to switch between smooth and classic. This should also fix the occasional hiccup that can sometimes be heard when change pitch with a sharp envelope.
Meta:
- Update user guide publishing script to match the other modules
- Update license to reflect the license for the panel
User guide:
- Link to assembled and kit product pages
- Fix some grammar issues (#27)
- Tweak some styles for dark mode
- Update to latest theme and winterjs
- Be less strict about the midi port name for the settings editor. fixes #21
- Add pulse width behavior settings
- Fix typos in "cv smoothing" settings description (#23)
Firmware:
- Fix pwm and pitch "stepping" behavior
- Add firmware support for pulse width bitmasking
- Small update to format strings in wntr_midi_core
- Fix bug in teeth where dirty data at the end of the destination buffer would cause invalid sysex messages
Hardware:
- Add basic panel without winterbloom branding
- Add laser designs for Hubble lens' pin holder, board guide, and pressure plate
Factory:
- Don't print report if not all steps are run
- Move ramp calibration to the end
- Change hubble leds during factory setup
- Fancier printing
- Rework all factory scripts to work with Hubble
- Speed up ADC calibration process
- Don't unnecessarily reset hardware between setup steps
- Add factory support for pulse width bitmask
- The
2021.09.20September 20th, 20214 files
This is a bugfix & maintenance release for Castor & Pollux's firmware, Gemini ♊️.
👉 Most users should download gemini-firmware-2021.09.20-release.uf2 👈
Please follow the firmware upgrade instructions in the user's guide to upgrade your device's firmware.
About the files
- The
uf2files can be installed using the firmware upgrade instructions in the user's guide. - The
elffiles and are for testing & debugging and can be programmed using an appropriate debug probe. - The
releasebuilds are built without debugging information. - The
debugbuilds are built with debugging information.
Build identifier
Each release of the firmware has a unique build ID. This ID can be seen when using the online settings editor and allows finding the exact firmware version on your device. The build IDs for this version are:
- Release:
2021.09.20 (release) on 09/20/2021 22:39 UTC with gcc 10.3.1 by stargirl@stargirls-mbp.lan - Debug:
2021.09.20 (debug) on 09/20/2021 22:39 UTC with gcc 10.3.1 by stargirl@stargirls-mbp.lan
Changes from 2021.09.18
Firmware:
- Fix unused variable warning when using debug_printf
- Print sysex commands in debug mode
- Change 'set dac' sysex command to set all four channels at once instead of just one at a time
Factory:
- Only output the serial number and firmware version once
- Update to use midi device singletons
- Update factory scripts to use new set dac command
Hardware:
- Prepare testkit adapter for manufacturing
- The
2021.09.18September 18th, 20214 files
This is a bugfix & maintenance release for Castor & Pollux's firmware, Gemini ♊️.
👉 Most users should download gemini-firmware-2021.09.18-release.uf2 👈
Please follow the firmware upgrade instructions in the user's guide to upgrade your device's firmware.
About the files
- The
uf2files can be installed using the firmware upgrade instructions in the user's guide. - The
elffiles and are for testing & debugging and can be programmed using an appropriate debug probe. - The
releasebuilds are built without debugging information. - The
debugbuilds are built with debugging information.
Build identifier
Each release of the firmware has a unique build ID. This ID can be seen when using the online settings editor and allows finding the exact firmware version on your device. The build IDs for this version are:
- Release:
2021.09.18 (release) on 09/18/2021 15:30 UTC with gcc 10.3.1 by stargirl@stargirls-mbp.lan - Debug:
2021.09.18 (debug) on 09/18/2021 15:29 UTC with gcc 10.3.1 by stargirl@stargirls-mbp.lan
Changes from 2021.08.31
Firmware:
- Add support for mcp4728 devices with different addresses, since we used the a0 variant for rounds 1 & 2 and the a4 variant for round 3
User guide:
- Re-draw lfo waveshape when loading settings from device
- Fix firmware date check in settings editor.
Hardware:
- Add basic testkit adapter board
Factory:
- Save full adc/afe measurement data
- The
2021.08.31August 31st, 20214 files
This is a feature & maintenance release for Castor & Pollux's firmware, Gemini ♊️.
👉 Most users should download gemini-firmware-2021.08.31-release.uf2 👈
Please follow the firmware upgrade instructions in the user's guide to upgrade your device's firmware.
About the files
- The
uf2files can be installed using the firmware upgrade instructions in the user's guide. - The
elffiles and are for testing & debugging and can be programmed using an appropriate debug probe. - The
releasebuilds are built without debugging information. - The
debugbuilds are built with debugging information.
Build identifier
Each release of the firmware has a unique build ID. This ID can be seen when using the online settings editor and allows finding the exact firmware version on your device. The build IDs for this version are:
- Release:
2021.08.31 (release) on 08/31/2021 21:26 UTC with gcc 10.3.1 by stargirl@stargirls-mbp.lan - Debug:
2021.08.31 (debug) on 08/31/2021 21:26 UTC with gcc 10.3.1 by stargirl@stargirls-mbp.lan
Changes from 2021.06.10
New features:
- Advanced internal LFO configuration with multiple waveshapes.
User guide:
- Update settings editor for new lfo features
- Add note about no-clean flux
- Fix now-broken github links
- Fix incorrect path in github action
- Fix bad version for mkdocs-include-markdown-plugin in requirements.txt
- Configure github actions to publish docs on each commit to main
- Add interactive imagemap for inputs and outputs; re-work svgmap to be more generic
- Update mkdocs external link plugin
- Make settings editor be more resilient to webmidi quirks around sysex messages.
- Fix display of outdated version info.
Firmware:
- Add advanced lfo support.
- Apply patch to tinyusb to prevent usb enumeration race condition
- Update tinyusb to 2b5bad73, remove unused tinyusb files
Hardware:
- Remove unused project-specific footprint library from the jackboard
- Remove unneeded parts on the jackboard
- Export mainboard pdf in black & white to avoid kicad color issues
- Mark version 4 of the mainboard
- Assign new mpns for mainboard bom
Factory:
- Update gem_settings.py to match current settings
- Remove unused reset_knob_ranges.py script
- Print the build id when the firmware is updated by monitor
- Add --force-update option to monitor
- Bell once done with factory setup
Other:
- Fix link in releasing script
- Update waveshape link to waveshapes (#19)
- The
2021.06.10June 10th, 20214 files
This is a bugfix & maintenance release for Castor & Pollux's firmware, Gemini ♊️.
It also includes a new feature - the ability to set the base CV offset (basically, the note at
0V) in the settings editor.👉 Most users should download gemini-firmware-2021.06.10-release.uf2 👈
Please follow the firmware upgrade instructions in the user's guide to upgrade your device's firmware.
About the files
- The
uf2files can be installed using the firmware upgrade instructions in the user's guide. - The
elffiles and are for testing & debugging and can be programmed using an appropriate debug probe. - The
releasebuilds are built without debugging information. - The
debugbuilds are built with debugging information.
Build identifier
Each release of the firmware has a unique build ID. This ID can be seen when using the online settings editor and allows finding the exact firmware version on your device. The build IDs for this version are:
- Release:
2021.06.10 (release) on 06/10/2021 22:20 UTC with gcc 10.2.1 by stargirl@stargirls-mbp.lan - Debug:
2021.06.10 (debug) on 06/10/2021 22:20 UTC with gcc 10.2.1 by stargirl@stargirls-mbp.lan
Changes from 2021.04.21
Firmware:
- Add base cv offset setting
- Apply base cv offset setting to both oscillators
- Add method to upgrade older settings data
- Fix bug in libwinter's sysex handling where not calling
tud_taskwould lead to an incorrect sysex timeout - Add struct access for the software calibration fuses, move it into libwinter
- Update firmware to work with latest libwinter
- Remove chunking of sysex commands
- Remove unused constant
User guide:
- Update MSRP to $279
- Add kit build instructions
- Add form controls for base cv offset setting
- Fix audio playback on Safari 14.1+
- Update to new styles, re-layout the settings editor
- Check for new firmware versions when using the settings editor
- Check for firmware versions too old to use with the editor
- Remove chunking of settings sysex commands
- Fix open source hardware link
- Fix teeny typo
Hardware:
- Add CE and WEEE logos to mainboard
- Add files to laser cut a jig for the programming board
Factory scripts:
- Remove chunking of settings sysex commands
- Enable using a gamepad for adjusting ramp calibration
- Guess DAC code using the slope of previous codes during ramp calibration
- Auto-update firmware when using the monitor
Other:
- Correct Tag-Connect product link in contributor guide
- The
2021.04.21April 21st, 20214 files
This is a bugfix & maintenance release for Castor & Pollux's firmware, Gemini ♊️.
👉 Most users should download gemini-firmware-2021.04.21-release.uf2 👈
Please follow the firmware upgrade instructions in the user's guide to upgrade your device's firmware.
About the files
- The
uf2files can be installed using the firmware upgrade instructions in the user's guide. - The
elffiles and are for testing & debugging and can be programmed using an appropriate debug probe. - The
releasebuilds are built without debugging information. - The
debugbuilds are built with debugging information.
Build identifier
Each release of the firmware has a unique build ID. This ID can be seen when using the online settings editor and allows finding the exact firmware version on your device. The build IDs for this version are:
- Release:
2021.04.21 (release) on 04/21/2021 18:59 UTC with gcc 10.2.1 by stargirl@stargirls-mbp.lan - Debug:
2021.04.21 (debug) on 04/21/2021 18:59 UTC with gcc 10.2.1 by stargirl@stargirls-mbp.lan
Changes from 2021.04.20
Firmware:
- Use the brown-out detector to ensure a stable operating voltage before running
- Remove unneeded change to NVM configuration from gem_nvm_init, as its done in reset_handler
- Update 48 MHz DFLL fine step to match datasheet recommendations
Hardware:
- Added values & datasheet for pots in schematic (#13)
- The
2021.04.20April 20th, 20214 files
This is a critical bugfix release for Castor & Pollux's firmware, Gemini ♊️.
NOTE: We have released a newer version with additional safeguards, download here
YOU SHOULD INSTALL THIS VERSION OR NEWER AS SOON AS POSSIBLE. It fixes a bug that can brick your module (more details below).
👉 Most users should download gemini-firmware-2021.04.20-release.uf2 👈
Please follow the firmware upgrade instructions in the user's guide to upgrade your device's firmware.
About the files
- The
uf2files can be installed using the firmware upgrade instructions in the user's guide. - The
elffiles and are for testing & debugging and can be programmed using an appropriate debug probe. - The
releasebuilds are built without debugging information. - The
debugbuilds are built with debugging information.
Build identifier
Each release of the firmware has a unique build ID. This ID can be seen when using the online settings editor and allows finding the exact firmware version on your device. The build IDs for this version are:
- Release:
2021.04.20 (release) on 04/21/2021 03:36 UTC with gcc 10.2.1 by stargirl@stargirls-mbp.lan - Debug:
2021.04.20 (debug) on 04/21/2021 03:36 UTC with gcc 10.2.1 by stargirl@stargirls-mbp.lan
Changes from 2021.03.9
User_guide:
- Add burn-in testing information
- Use winterjs for the settings editor.
Firmware:
- Check bootloader write protection fuses during initialization
- Remove tests for libwinter's midi core and bezier, as they're now in the libwinter repository
User guide:
- Fix typo
- Add warranty information
- Fix broken anchor link (#12)
Factory:
- Small tweaks to the monitor and calibration scripts.
Other:
- Create funding.yml
Detailed explanation of critical bug
Castor & Pollux actually has two separate programs on it: a small bootloader and the firmware (this repository). The bootloader is the Adafruit uf2-samdx1. The bootloader has two roles: make it easy to upgrade the firmware over USB and provide a failsafe in the event of a bad firmware upgrade.
In order to be a proper failsafe, the bootloader's code needs to be protected in case there's a bug in the firmware that could lead to corruption. Castor & Pollux's microcontroller has a feature for this called bootloader protection. It's a persistent setting that prevents any writes to the bootloader's code unless a very specific sequence is used.
We had been working under the assumption that the bootloader would enable this setting automatically and that we wouldn't need to enable it manually. However, we were mistaken; the bootloader only enables this setting in two very specific circumstances that wouldn't usually occur during normal operation. This means that bootloader protection is disabled and it's possible to corrupt the bootloader.
We have observed bootloader corruption on at least three modules. While this corruption won't harm the module's hardware, it will soft brick the module and the only way to repair it is to restore the bootloader using a hardware programmer/debugger.
- The
2021.03.9March 9th, 20214 files
This is a bugfix & maintenance release for Castor & Pollux's firmware, Gemini ♊️.
👉 Most users should download gemini-firmware-2021.03.9-release.uf2 👈
Please follow the firmware upgrade instructions in the user's guide to upgrade your device's firmware.
About the files
- The
uf2files can be installed using the firmware upgrade instructions in the user's guide. - The
elffiles and are for testing & debugging and can be programmed using an appropriate debug probe. - The
releasebuilds are built without debugging information. - The
debugbuilds are built with debugging information.
Build identifier
Each release of the firmware has a unique build ID. This ID can be seen when using the online settings editor and allows finding the exact firmware version on your device. The build IDs for this version are:
- Release:
2021.03.9 (release) on 03/09/2021 19:14 UTC with gcc 10.2.1 by stargirl@stargirls-mbp.lan - Debug:
2021.03.9 (debug) on 03/09/2021 19:14 UTC with gcc 10.2.1 by stargirl@stargirls-mbp.lan
Changes from 2021.03.1
Firmware:
- Update default value for pollux_follower_threshold from 56 to 100 to accommodate some values seen during setup of the initial factory run
Docs:
- Update the settings editor page and remove the warning about it not yet being available
- Fix bug in settings editor where it wouldn't save the pollux_follower_threshold field
Factory:
- Restore commented out firmware check in monitor.py
Hardware:
- Increase the programming board's outline thickness to push the copper fills back from the board edge
- The
2021.03.1March 1st, 20214 files
This is a bugfix & maintenance release for Castor & Pollux's firmware, Gemini ♊️.
👉 Most users should download gemini-firmware-2021.03.1-release.uf2 👈
Please follow the firmware upgrade instructions in the user's guide to upgrade your device's firmware.
About the files
- The
uf2files can be installed using the firmware upgrade instructions in the user's guide. - The
elffiles and are for testing & debugging and can be programmed using an appropriate debug probe. - The
releasebuilds are built without debugging information. - The
debugbuilds are built with debugging information.
Build identifier
Each release of the firmware has a unique build ID. This ID can be seen when using the online settings editor and allows finding the exact firmware version on your device. The build IDs for this version are:
- Release:
2021.03.1 (release) on 03/01/2021 19:08 UTC with gcc 10.2.1 by stargirl@stargirls-mbp.lan - Debug:
2021.03.1 (debug) on 03/01/2021 19:08 UTC with gcc 10.2.1 by stargirl@stargirls-mbp.lan
Changes from 2021.02.25
Factory:
- Add firmware version check to monitor and ability to update the firmware
- Check firmware version when running monitor
Firmware:
- Add sysex command to reset into the bootloader
- Add wntr_bootloader to allow resetting into the bootloader
- Fix reference to non-existent file in scripts/samd21g18a.ld
- Update libwinter
Hardware/progboard:
- Add dedicated jack for interfacing with knob inputs
- The
2021.02.25February 25th, 20214 files
This is a bugfix & maintenance release for Castor & Pollux's firmware, Gemini ♊️.
👉 Most users should download gemini-firmware-2021.02.25-release.uf2 👈
Please follow the firmware upgrade instructions in the user's guide to upgrade your device's firmware.
About the files
- The
uf2files can be installed using the firmware upgrade instructions in the user's guide. - The
elffiles and are for testing & debugging and can be programmed using an appropriate debug probe. - The
releasebuilds are built without debugging information. - The
debugbuilds are built with debugging information.
Build identifier
Each release of the firmware has a unique build ID. This ID can be seen when using the online settings editor and allows finding the exact firmware version on your device. The build IDs for this version are:
- Release:
2021.02.25 (release) on 02/25/2021 17:17 UTC with gcc 10.2.1 by stargirl@stargirls-mbp.lan - Debug:
2021.02.25 (debug) on 02/25/2021 17:17 UTC with gcc 10.2.1 by stargirl@stargirls-mbp.lan
Changes from 2021.02.21
Firmware:
- Remove unused look-up table support in wntr_bezier
- Regenerate gem_lookup_tables.c
- Replace test.mk with a wintertools.buildgen script
- Fixup tests to point to wntr_error_correction
- Move gem_error_correction to libwinter/wntr_error_correction
- Move gem_adc_helpers to libwinter/wntr_uint12
- Track idle cycles instead of adc milliseconds, since the adc samples faster than 1ms
- Split the "hello" sysex command into one to get the build id and one to enter calibration mode
- Skip look-up table for knob bezier calculation.
- Add requirements.txt and install it during the github actions run
- Remove unused third_party/ninja
- Move a lot of the build generation logic over to wintertools
- Fix bug where non-linear tuning knob response wasn't actually being applied.
- Add soft reset sysex command
Meta:
- Fix release script
- Run firmware tests on github actions (#10)
- Don't run format when building on github actions
- Use the right ninja command in gh-actions
- Add configuration for wintertools.release
Factory:
- Fixup monitor script
- Re-write monitor script to make it easier to test modules
- Don't wait for key input to continue after firmware flashing
- Remove unused import; add friendly finished message
- Fix invalid call to get_firmware_version
- Use new sysex command for calibration mode.
- Soft-reset after setup is complete
- The
2021.02.21February 21st, 20214 files
This is a bugfix & maintenance release for Castor & Pollux's firmware, Gemini ♊️.
👉 Most users should download gemini-firmware-2021.02.21-release.uf2 👈
Please follow the firmware upgrade instructions in the user's guide to upgrade your device's firmware.
About the files
- The
uf2files can be installed using the firmware upgrade instructions in the user's guide. - The
elffiles and are for testing & debugging and can be programmed using an appropriate debug probe. - The
releasebuilds are built without debugging information. - The
debugbuilds are built with debugging information.
Build identifier
Each release of the firmware has a unique build ID. This ID can be seen when using the online settings editor and allows finding the exact firmware version on your device. The build IDs for this version are:
- Release:
2021.02.21 (release) on 02/21/2021 07:19 UTC with gcc 10.2.1 by stargirl@stargirls-mbp.lan - Debug:
2021.02.21 (debug) on 02/21/2021 07:19 UTC with gcc 10.2.1 by stargirl@stargirls-mbp.lan
Changes from 2021.2.19
Docs:
- Update links to the github repository to use the main branch instead of master. Closes #9
Factory:
- Add script to reset knob range settings
- Don't wait for the scope to measure the frequency
- Lower the number of measurement points for the ADC calibration
- The
2021.2.19February 19th, 20214 files
This is a bugfix & maintenance release for Castor & Pollux's firmware, Gemini ♊️.
👉 Most users should download gemini-firmware-2021.2.19-release.uf2 👈
Please follow the firmware upgrade instructions in the user's guide to upgrade your device's firmware.
About the files
- The
uf2files can be installed using the firmware upgrade instructions in the user's guide. - The
elffiles and are for testing & debugging and can be programmed using an appropriate debug probe. - The
releasebuilds are built without debugging information. - The
debugbuilds are built with debugging information.
Build identifier
Each release of the firmware has a unique build ID. This ID can be seen when using the online settings editor and allows finding the exact firmware version on your device. The build IDs for this version are:
2021.2.19 (release) on 02/19/2021 05:58 UTC with gcc 10.2.1 by stargirl@stargirls-mbp.lan2021.2.19 (debug) on 02/19/2021 05:55 UTC with gcc 10.2.1 by stargirl@stargirls-mbp.lan
Changes from 2021.2.9
Features:
- Added the ability to restore ADC calibration from factory backup in the settings editor.
- Modified the way pitch knob non-linearity is applied- it now creates a virtual notch/detent at
0.0(true tune) regardless of the range of the pitch knob. Previously the virtual notch/detent would be in the center of the range, which could be different from0.0.
Bugfixes:
- Made the settings editor work with the firmware's updated settings chunking protocol.
- Fixed the control type for the knob non-linearity in the settings editor.
Documentation:
- Increased overall contrast
- Explicitly marked external links with an icon
Internal changes:
- firmware: change the default range for knobs (again)
- firmware: add basic tests for gem_oscillator
- firmware: refactor code in gem_adc out into gem_error_correction and gem_adc_helpers
- firmware: update gem_oscillator to use new bezier function
- firmware: expand wntr_bezier to accept all four points for a quadratic curve. Add tests
- firmware: only apply ramfunc annotation when compiling for ARM
- firmware: move some functions into RAM
- firmware: add basic hardfault handler
- firmware: move samd21 gpio implementation into libwinter
- firmware: move serial number into libwinter
- factory: Add setup step to erase NVM
- factory: regenerate gem_settings.py
- firmware: remove the CV knob range multiplier and just use a higher default value for the knob range setting
- factory: fix Sol channels for ADC/AFE calibration
- Initialize Gemini before oscilloscope in ramp calibration
- The
2021.2.9February 9th, 20214 files
This is a bugfix & maintenance release for Castor & Pollux's firmware, Gemini ♊️.
👉 Most users should download gemini-firmware-2021.2.9-release.uf2 👈
Please follow the firmware upgrade instructions in the user's guide to upgrade your device's firmware.
About the files
- The
uf2files can be installed using the firmware upgrade instructions in the user's guide. - The
elffiles and are for testing & debugging and can be programmed using an appropriate debug probe. - The
releasebuilds are built without debugging information. - The
debugbuilds are built with debugging information.
Build identifier
Each release of the firmware has a unique build ID. This ID can be seen when using the online settings editor and allows finding the exact firmware version on your device. The build IDs for this version are:
2021.2.9 (release) on 02/10/2021 05:28 UTC with gcc 10.2.1 by stargirl@stargirls-mbp.lan2021.2.9 (debug) on 02/10/2021 05:29 UTC with gcc 10.2.1 by stargirl@stargirls-mbp.lan
Changes from 2021.1.26
Bugfixes:
- The firmware now nudges the range of the pitch knobs to compensation for the SAM D21's behavior near the lower end of its range.
- The firmware now does a separate error correction pass on the pitch CV input which increases pitch accuracy.
- The factory setup scripts now properly apply error correction when re-measuring ADC results.
Documentation:
- Added new pitch CV calibration fields to the settings editor.
- Added explanation about tuning the oscillators using non-linear pitch knobs.
- Added OSHW certification info.
- Added
CONTRIBUTING.md.
Internal changes:
- Removed unused
gem_config.c - Quieted the build rule that runs
clang-format. - Changed the channel used to calibrate the ADC.
- Generated a new reference & fallback ramp amplitude calibration.
- Renamed the not-so-clear "voice params" & associated tables to more clear "oscillator outputs", "pitch table", and "ramp table".
- Refactored look-up table routines.
- Refactored all of the oscillator update logic into
gem_oscillator.c. - Moved a significant amount of non-Gemini-specific code from the factory setup scripts over to https://github.com/theacodes/wintertools.
- Moved a significant amount of non-Gemini-specific code from the firmware into
firmware/third_party/libwinter. - Changed the ADC/AFE calibration strategy. The ADC gain and offset error is now measured by setting voltages to an ADC channel that has a direct connection. The scripts then separately measure the gain and offset error for the pitch CV inputs through their analog front ends.
- Changed the ramp amplitude calibration strategy to use a smaller number of calibration points.
- Changed the ramp calibration table format.
- Optimized look-up table linear interpolation to use integer division directly instead of relying on fix16's routines.
- Updated
SysTick/wntr_ticksto use the standardSystemCoreClockvariable instead of a customF_CPUdefine. - Switched the factory
shell.pyto an ipython-based shell. - Created
factory/libgemini/oscillators.pywith several helpers for calibrating and controlling the oscillators. - Moved all generated code sources into
firmware/src/generated. - Switched the build system from GNU Make to Ninja - builds are significantly faster.
- Added configuration for GitHub actions.
- Renamed static symbols from
_{name}to{name}_. - Fixed the JLink flashing script to properly reset the device.
Hardware design changes:
- Updated the sheet symbols in the schematic to show the direction for inputs/outputs.
- Updated the board outline to satisfy manufacturing constraints.
- Updated component part numbers to accommodate supply chain issues.
- Created mainboard revision 3 which fixes a bug where we used the wrong transistor in the ramp core.
- Created a new programming board which adds significantly more test points.
- The
2021.1.26January 26th, 20214 files
This is a bugfix release for Castor & Pollux's firmware, Gemini ♊️.
👉 Most users should download gemini-firmware-2021.1.26-release.uf2 👈
Please follow the firmware upgrade instructions in the user's guide to upgrade your device's firmware.
About the files
- The
uf2files can be installed using the firmware upgrade instructions in the user's guide. - The
elffiles and are for testing & debugging and can be programmed using an appropriate debug probe. - The
releasebuilds are built without debugging information. - The
debugbuilds are built with debugging information.
Build identifier
Each release of the firmware has a unique build ID. This ID can be seen when using the online settings editor and allows finding the exact firmware version on your device. The build IDs for this version are:
2021.1.26 (Release) on 01/26/2021 18:31 UTC with arm-none-eabi-gcc 10.2.1 stargirl@stargirls-mbp.lan2021.1.26 (Debug) on 01/26/2021 18:31 UTC with arm-none-eabi-gcc 10.2.1 stargirl@stargirls-mbp.lan
Changes from 2021.1.23
Bugfixes:
- Fixed a bug where turning the pitch knobs all the way clockwise would cause the pitch to jump around.
Documentation:
- Added a section in the user guide on tuning the oscillators & how the pitch knobs are non-linear.
Other changes:
- The maximum LFO frequency was lowered to 5 Hz
Internal changes:
- Added Micro Trace Buffer
- Added SysEx monitoring functionality
- Calibration mode now has a distinct blue and pink LED pattern
- JLinkCommander now properly exits with a failure if programming fails
- Factory setup script now logs to a file
- The
2021.1.23January 23rd, 20214 files
This is the initial release of Castor & Pollux's firmware, Gemini ♊️.
👉 Most users should download gemini-firmware-2021.1.23-release.uf2 👈
Please follow the firmware upgrade instructions in the user's guide to upgrade your device's firmware.
About the files
- The
uf2files can be installed using the firmware upgrade instructions in the user's guide. - The
elffiles and are for testing & debugging and can be programmed using an appropriate debug probe. - The
releasebuilds are built without debugging information. - The
debugbuilds are built with debugging information.
Build identifier
Each release of the firmware has a unique build ID. This ID can be seen when using the online settings editor and allows finding the exact firmware version on your device. The build IDs for this version are:
2021.1.23 (Release) on 01/24/2021 01:43 UTC with arm-none-eabi-gcc 10.2.1 stargirl@stargirls-mbp.lan2021.1.23 (Debug) on 01/24/2021 01:43 UTC with arm-none-eabi-gcc 10.2.1 stargirl@stargirls-mbp.lan
Changes from the beta firmware
- The pitch knobs are now non-linear. The middle of the range is spread out over more area which makes the oscillators easier to tune - think of it kind of like a bell curve.
- Fixes a bug where the error correction for the knobs was applied incorrectly.
- Each firmware version now bears a Build ID.
- SysEx message formats were completely changed; the online settings editor no longer works with the beta version.
- The device's serial number is available over SysEx.
- The