Skip to content

Phazerville Suite v2.0

Latest

Choose a tag to compare

@djphazer djphazer released this 12 Jun 23:19
· 4 commits to main since this release

Discord Read the Docs Ko-Fi

Come On into the New Dawn!

Harness the full power of Teensy 4 with the next-generation firmware for the next generation of hardware. We've broken through some performance barriers, and provisions are in place for future feature expansion. This is your new hackable modular brain!

O.R.N.8 - Winner of #SuperBoot26 🥾

Teensy 4.1 has space to fit multiple partitions with completely separate firmwares. Hold 'Z' on startup to choose between them:

Slot ID / Button Firmware option
A standard Phazerville Suite with Quadrants, Calibr8or, & Scenery
- MIDI + Audio on the USB Device port
- includes Audio DSP Applets
- no WavRec applet
B same as A but:
- MIDI only on the USB Device port
- includes WavRec for recording to SD card
- better screen cap framerate
X MTP Disk mode + stock apps
- USB file transfer via the MTP Disk protocol
- no Applets or audio processing
- includes all legacy Apps* from stock and Hemisphere
(*a few Apps are still broken - Passencore, References, Captain MIDI).
Y Hardware debug / diagnostics mode
- convenient for verifying all I/O is working on new builds
- secretly just lives in Slot A, press encoder to finish booting

Hold 'Z' while making a selection to make it the default boot choice.

Everything is Awesome

If this framework catches on, I hope to see 4-way (or even 8-way) collaborative firmware packages, each section with a special curation of CV and/or Audio toys!

Version Two 2️⃣

Massive code refactoring finally incorporates the abandoned work from Patrick Dowling, using more forward-thinking design choices for app-switching and I/O configuration, while continuing to expand the Phazerville firmware architecture. Dynamic memory management leaves more room for what you actually use in a session, while also allowing more new Applets to be included...

Start Fresh?

A lot has changed. I can't guarantee full backward compatibility with v1.x, although I've made a strong effort. On first boot of v2.0, you will be prompted to "Reset Settings in EEPROM" ...

  • it's just a suggestion - does not reset calibration, only App Data and LittleFS
  • recommended for new builds
  • a good idea to start fresh with v2.0 after upgrading

If you Cancel to try to preserve your old App settings, it might keep asking unless you Long-press Right-Encoder on the main menu to re-save, which also sets the default startup App. (That gesture hasn't changed!)

UI Gestures 👈

Watch out! Some things have changed. The two global gestures for Main Menu (long-press Right-Enc) and screensaver (long-press A) have been removed, paving the way for more advanced context menu actions and modifier buttons. You can now push-and-turn the encoders for 10x acceleration in many places!

The new global UI gestures are:

Action Button Combo
go to Main App Menu Hold Z + press Right-Enc
go to IO Settings for current App Hold Z + press Left-Enc
invoke screensaver Hold Z + press A

Alternatively, Hold A (or UP) instead of Z for the first two, which works on T40.

After you hold Z for a moment, some context help appears on screen. I plan to expand on this idea, making the UI more self-explanatory.

New Applets 🆕

So many new toys! Andy aka @uglifruit has been steadily cranking out new Audio and CV applets using some AI assistance... After being scrutinized with adequate care, I think these new sequencers and effects are well done. It demonstrates the potential of this firmware platform when paired with the right tools.

Also new additions from @beau-seidon, @defnpablo (#205) and @danut007ro (#214, #204) in here, as well as a pitch detection applet from @jklepsercyber (#160) and a Oneshot player from @twhiston.

Extra Storage

Some applets like EnvSeq, CVRec and the new CVSeq can now save their entire sequence data to the preset bank files, which is kind of a big deal - your sequences persist, no fuss. We can expand other applets with this as well...

Details

CV Applet Description
CVSeq clocked dual-channel CV/note sequencer with a shared 32-value CV pool.
EuclidO simplified 16-step trigger sequencer, with a nice UI
MarkoV Markov chain melodic generator — 5 weighted tendency profiles (Stability, Tension, Jazz, Glacial, Drone), CV chaos control, seed/reset system, V/Oct transpose.
MarkovPerc Markov chain rhythm generator — 4 hit types (rest, hit, flam, ratchet), 4 style profiles (Steady, Syncopated, Jazz, Sparse), accent CV output, density CV input.
TruthCat3 Catalan Boolean Gate (C₃) — truth-table rhythm generator using all 5 parse trees of A NOR/NAND B NOR/NAND C NOR/NAND D. 8 operator patterns × 5 bracketings = 40 distinct rhythms. 16-step cycle.
TruthCat4 Catalan Boolean Gate (C₄) — truth-table rhythm generator using all 14 parse trees of A NOR/NAND B NOR/NAND C NOR/NAND D NOR/NAND E. 16 operator patterns × 14 bracketings = 224 distinct rhythms. 32-step cycle.
Audio Applet Description
WTVCO load your own wavetables from the SD card, blend between shapes, crazy wavefolding
HarmOsc Harmonic oscillator with 16 partials, configurable ratios and amplitudes
TuneTracker proper monophonic audio Pitch Detection, with pitch CV on virtual outputs #M and #O
FMDrum 4-mode FM + noise percussion synthesiser
Glitch Live-input stutter/glitch processor
KrpsStrng Advanced Karplus-Strong string synthesiser with custom DSP engine
Misty Clouds-inspired live granular processor
ModalResonator Physical modelling modal resonator filter
WavRec WAV file recorder - records in 48 kHz 16-bit Stereo to SD card
Grit 4-mode distortion/lo-fi processor: Clip, Fold, Crush, Decimate
Oneshot Simple file player, using the same engine as WavPlay; organize oneshots in subfolders

I love it!

I think the Markov sequencers sound like professional musicians without even trying! Plus, now you can tell your kids, "We have Rings-into-Clouds at home..." - thanks to a bunch of ornate criminals. >:]

The FMDrum makes fantastic little percussion bits, and Glitch is going to be my new best friend. I'm already filling up my SD card with jam recordings for later, so WavRec is working well.

Pong 2.0 🏓

Thanks to the efforts of @SwampFlux for the #SuperBoot26 challenge, Pong has been revitalized as a 2-player App! CV2 and CV4 control absolute position of each paddle, and output D now has cute little audio sound effects.

32 Channels 🎛️

Internal I/O structures have been expanded to allow 32 virtual channels of any type - Trigger inputs, CV inputs, CV outputs, MIDI Mappings, etc. This anticipates potential I/O expansions via USB, I2C, MIDI, etc. and also allows extra Applets to send signals to virtual DAC outputs.

The internal clock uses 4 virtual outputs:

#I #J #K #L
Clock pulse x1 Clock pulse x4 Clock RUN gate Clock RESET gate (~RUN)

Audio applets can use 4 more virtual outputs, 2 on each side:

#M #N #O #P
TuneTracker (Left) Pitch CV (unused) TuneTracker (Right) Pitch CV (unused)

What about O_C? 🥺

T32 ❌

Unfortunately, after optimizing for Teensy 4, performance on Teensy 3.2 is now terrible, so it won't be supported on v2.0 (unless something improves?)

Some CV applet updates could be backported to a v1.x branch fairly easily, given the time and determination to try it and test it... this is a cue for someone to continue maintaining the old phazerville branch for T32! Try using git cherry-pick or just copy whole applet files between branches. Steal my code, even rebrand it if you want, publish new releases for users of legacy hardware... or send me a PR, I guess. ;P

T40 ✔️

Teensy 4.0 still works great, since it's basically a smaller version of Teensy 4.1. Hemispheres + all stock Apps included. Potential for Serial MIDI. Without a Z-button, the new global UI gestures use the UP button instead - so hold UP + press encoder for IO Settings (left) or Main Menu (right). Press UP again on the IO Settings menu to invoke screensaver.

Have Fun!

Feel free to file Issues if things are broken, or dive in and fix things and send a Pull Request!
Or just help by filling my cup 😎☕... the best is yet to come!!!

Full Changelog: PSv1.13...PSv2.0