Skip to content

April 22nd, 2023

Compare
Choose a tag to compare
@theacodes theacodes released this 02 May 15:28
· 25 commits to main since this release
6b1b60d

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 uf2 files can be installed using the firmware upgrade instructions in the user's guide.
  • The elf files and are for testing & debugging and can be programmed using an appropriate debug probe.
  • The release builds are built without debugging information.
  • The debug builds 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:

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