Releases: chips047/Cassette
Release list
v0.9.6-alpha
Cassette v0.9.6
New Stuff
- All effects now support segmentation.
- Updated the context menu sound effects.
- Added automatic error reporting.
- Added a feedback button.
- Significantly improved slider UX - now you can just click anywhere on the bar to set the value.
Effects
- New "Mode" parameter for the "BPM" effect.
- New "Decay Length" parameter for the "BPM" effect.
- New "Duty Cycle" parameter for the "Strobe" effect.
- New "Tail Fade" parameter for the "Chase" effect.
- New "Invert" parameter for the "Chase" effect.
- New "Invert" parameter for the "Fill" effect.
- New "Density" parameter for the "Sparkle" effect.
- New "Cluster Mode" parameter for the "Glitch" effect.
- New "Center Offset" parameter for the "Ripple" effect.
Fixes
- Fixed lag when opening the context menu.
- Audio Re - trim menu: BPM is now loaded directly from the save file instead of being auto - detected. But you still can auto - detect it.
Cassette Receiver
Sorry, I kinda... forgot about this part. But anyway:
- Fixed connection / disconnection animations.
- Added connection / disconnection animations for 4a and 4b (and full support for these models in general, of course).
- You can now launch Cassette Receiver as a normal app just by clicking the icon. Kinda useless, but it feels way nicer.
- Added "A" track support.
- Cassette Receiver has its own repo now! Check https://www.github.com/chips047/Cassette-Receiver.
Some of your compositions may not work with the new version. Sorry. These changes will stop at v1.0.
v0.9.5-alpha
Cassette v0.9.5
What's New
- Post - load audio editing is finally here! You can now re - trim your track, tweak fades, or change the BPM anytime after loading it.
- Fresh icons in the Project Menu, all hand - drawn by me :)
- A new, proper tutorial is now included to help you get started without the guesswork.
- Track names always stay on top of glyphs and now dynamically shift their color to match the background so they are always readable.
- Keyframe shortcut: When Keyframes mode is active on a glyph, you can now tap the
[and]keys to quickly raise or lower brightness points. - Animated history: Undoing and redoing glyph movements or length changes is now smoothly animated.
- A new setting: Toggleable glyph rounded corners.
Visuals & Glyph Tweaks
-
Smarter rendering for tiny glyphs:
- Glyphs smaller than 15px now switch to sharp corners. This looks much cleaner at small scales and gives a nice FPS boost.
- Glyph borders dynamically shrink from 2px down to 0px as glyphs get smaller, keeping things clean and readable.
- Selected tiny glyphs keep their default border thickness so you never lose track of what you have selected.
-
Better Audio Delay Setup animations. Added a textbox so you can set the milliseconds yourself.
Performance & Optimization
- Massive rendering overhaul: Thanks to a new occlusion system, hidden glyphs aren't rendered at all anymore. The app easily hits a rock - solid 120 FPS. Because of this:
- Noticeably higher frame rates across the board.
- No more lag spikes when spam - spawning glyphs.
- Silky - smooth zooming, no matter how crowded your canvas is.
- Marquee selection and dragging still work seamlessly on glyphs tucked behind others.
- Bulk - deleting large amounts of glyphs is significantly faster.
- Less disk space used: Save files are lighter, and if your audio track does not need trimming, the app will no longer generate a redundant cropped audio file.
- Lighter footprint: Completely dropped Mutagen from Cassette dependencies.
- Optimized undo / redo actions.
- Optimized glyph deletion.
- Optimized glyph move and resize.
Bug Fixes
- Fixed weird playhead behavior when it is at the end.
- More fixes for Floating Window incorrect sizes.
- Fixed an issue where you could paste massive walls of text into textboxes that were never meant to handle them.
- Fixed a window bug where short audio files combined with a low default zoom caused compositions to open at a broken scale instead of going fullscreen.
- Fixed weird composer window scaling when resizing mid - opening animation.
- Fixed a glitch where spawning a glyph right as playback began would launch it completely outside the composer bounds.
- Spawning glyphs during playback now respects your audio latency settings (positive delay advances the playhead, negative delay pulls it back).
- Fixed multiple stability issues when GPU rendering is turned off.
- Fixed glyphs loading into incorrect positions when opening saved compositions.
- Squashed several errors that happened while loading audio files.
- Fixed broken Undo / Redo (Ctrl + Z / Ctrl + Y) behavior when editing Keyframes.
- Fixed odd slider behavior in context menus: previously, moving the Gap slider in the Chase effect from 0 to 1 did nothing until you moved it to 2, after which 1 would suddenly work. It now updates properly on every step.
Under the Hood (For Nerds)
- Extracted most hardcoded values into a clean, dedicated Constants.py file.
- Split oversized, monolithic files into smaller, modular components for cleaner and more maintainable code.
- Applied general performance and memory optimizations across all core systems.
v0.9.4-alpha
Cassette v0.9.4
Fixes
- Fixed 4a / 4b export errors.
- Fixed errors caused by disabling Floating Window animations.
- Resolved all issues with the Glyph Stack. Refined glyph spawn behavior when the Glyph Stack is expanded.
- Fixed an issue where animations occasionally failed to sync with the music beat and appeared sluggish.
New
- Expanded customizability with a variety of new timeline scroll settings.
- Introduced audio latency adjustment to seamlessly synchronize headphone playback.
- Added a new Audio Buffer setting. Increase it to resolve playback stutters, or decrease it on high - end systems for lower latency.
- Added a Frame Rate Limit setting. Lower your FPS cap to optimize performance on low - end systems.
Optimization
- Major performance enhancements across the editor, delivering a noticeable boost in FPS.
v0.9.3.1-alpha
Cassette v0.9.3.1
- Fixed Phone (2) 4th track zones incorrect work.
- Added panning to playhead UI sounds.
- Removed some useless debug logs.
v0.9.3-alpha
Cassette v0.9.3
Sounds
- Added 17 new granular settings to toggle individual UI sound effects on or off - mute just the ones that annoy you, keep the rest.
- Extended UI sound effects to cover a wider variety of system and user actions - more of the interface now gives you audio feedback, not just the obvious clicks.
- All sounds got some Haas - stereo! Wear headphones - a tiny delay between channels widens everything out, makes clicks and pops feel less flat and centered.
- All sounds got normalized - consistent loudness across every effect, no more random loud-quiet jumps between sounds.
New Features & Improvements
- Added Master Track "A" - a new track, always shown first in your timeline as A, lets you light up your entire glyph interface at once - every zone together - without animating each one by hand. Great for beat drops, transitions, or full-device flashes. Track A automatically adapts its behavior to your specific phone:
- Phone (1) / Phone (2) - Track A blends all zones into one combined effect, giving you a quick way to flash the whole device without juggling multiple tracks.
- Phone (4a) / (4b) - alongside Track A, each of the 7 / 5 individual zone tracks stays available, so you can jump straight to lighting up any single zone without opening the zone-editing menu.
- Phone (3a) - since every zone here is already fully segmented, Track A lets you choreograph effects that sweep across all three glyphs at once - like a single light circling the entire device.
- Introduced a new setting to lower click latency, significantly improving interface responsiveness - buttons and toggles now react closer to the moment you actually click them.
- Added a
brand-newvibrant UI animation preset called "Electric" - a punchier, higher-contrast look for anyone who wants the interface to feel more alive. - Implemented dedicated click animations for all buttons across the application - every button now gives you a distinct little press-feedback instead of a flat state change.
- Upgraded checkboxes, selectors, and sliders with smoother, more fluid animations - transitions ease in and out instead of snapping between states.
- Added the ability to quickly copy error details and diagnostics to the clipboard for easier troubleshooting - one click and you've got everything needed to paste into a bug report.
- Introduced new customization settings specifically for menu scroll areas - tune how scrolling in menus looks and feels to match the rest of the UI.
- Enhanced and modernized the overall visual design of control elements - buttons, sliders, and selectors got a cleaner, more refined look across the board.
- Glyphs, selectors, checkboxes, sliders, buttons - all running at 120 FPS now - the whole interface feels noticeably smoother, especially on high refresh-rate displays.
- 90% of animations now run through a single unified animation engine called Loom - fewer inconsistencies between how different parts of the UI move, and a much easier place to tune performance going forward.
- Animation multiplier is now global - it affects audio, buttons, sliders, marquee-area, windows, etc - one setting to speed up or slow down motion across the entire app instead of per-element.
- Slightly enhanced glitch animations in the textbox - a bit more texture and randomness in the easter-egg glitch text.
- Congratulations!!!!!!!! You can now close the window using Alt+F4!!!! - yes, this took way too long, no it's not a joke.
- CONGRATULATIONS!!!!!!!!!!!! You can now move windows on Linux without the Meta key!!!!! (mostly...) - drag from the title bar like a normal window manager expects, most of the time.
- Improved behavior on non-standard screen resolutions - windows, docks, and overlays position themselves more reliably on unusual aspect ratios and DPI scales.
Bug Fixes
- Fixed a bug that caused error windows to render at excessively large, oversized dimensions.
- Disabled the ability to accidentally start playback while a composition is being ejected.
- Resolved minor audio glitching and overlapping sounds during drag-and-drop interactions.
- The update window is now fully scrollable and capped so it never exceeds the user's screen size.
- Resolved UI layout breaks and misalignment issues in the Floating Window interface.
- Fixed a bug that caused errors while reading the tutorial.
- Fixed incorrect stack number behavior.
- Fixed the tooltip not hiding after brightness changes via [ / ].
- Fixed an incorrect argument order in a function call that could've caused breakage down the line:
self.animate_stack_items(group, direction, step, group_size). - Fixed errors while using "Glitch" / "Classic" animation styles.
Critical Optimization
- Fixed Mini Waveform Preview rendering, which was firing 120 times per second and dropping FPS by 50% specifically during fullscreen playback.
- Fixed a duplicate signal emit that was also quietly eating into FPS.
- Switched rendering mode to Full, since GL can't do partial repaints anyway, and the "smart" mode was just burning extra CPU for nothing.
- Beat lines now only render the ones actually visible - a logic bug previously drew everything left of the viewport's right edge.
- Trimmed the number of numeric comparisons in beat line rendering for a small extra speed bump.
- Significantly optimized mouse event handling.
- Fixed a missing
stop_batchingcall in some operations that could've corrupted saves.
Oh My God Bruh
- Linux ARM / Windows ARM support. I can't test that, but I succesfull built these packages. Looking for tests...
v0.9.2-alpha
Cassette v0.9.2
Just a few fixes.
Fixes
- Stopped .wav files from getting deleted when you close the Audio Setup Window.
- Fixed the placeholders in the BPM Textbox.
- Patched the UI sound settings that weren't working.
- Fixed the tooltip animations.
- Tooltips can finally move around on Linux Wayland.
- Fixed marquee selection box jitter during playback.
- Fixed font heights on Linux.
- Fixed errors when changing the Floating Window Animations setting.
- Fixed duplicate UI sound triggers during Drag & Drop.
- Fixed an issue where the Mini Preview Widget didn't reset its position when changing compositions.
- Fixed abnormal playback speed when switching compositions.
- Fixed abnormal playback speed if you spam Alt + F4 on a Floating Window.
Optimization
- Cut down on memory usage during rendering by caching colors and brushes - this should give the speed a little boost.
- Optimized the player's "hot" functions (the ones that run thousands of times a second). They're compiled now and super fast, so the player uses way fewer resources.
- The ADB server for real - time ringtone visualization now opens only once, instead of restarting every single time the app scans for devices.
- Noticeably boosted performance on Linux.
- Reorganized the UI sounds folder.
- Optimized BPM animations by merging 4 BPM animation timers into one singleton.
- Optimized timeline scroll by merging 4 timers into 2.
- Tile generation doesn't affect FPS now.
- Now, tiles are being generated with a compiled code.
New
- You can now expand glyph stacks to make editing a lot easier.
- 5 new effects in the player. Not used. Yet. Hm.
- Migrated to PySide6 (Or PyQt6... I can't decide yet).
- Significantly improved handling of non - standard display scales and resolutions.
- Cassette now notifies you about new updates automatically.
- Visual enhancement in Trim Widget.
- The playhead now has... animations... too...
- Improved the file hover effects during Drag & Drop.
- Added new keyboard shortcuts:
- Home & End to jump to the start and end of the track.
- Shift + Arrows for faster playhead movement.
- Ctrl + D to quickly duplicate selected glyphs.
- [ and ] to quickly adjust brightness.
- UI sounds can no longer be spammed by holding down a keyboard key.
- Zoom is now smooth.
v0.9.1-alpha
Cassette v0.9.1
Just some fixes.
Compositor
- Mini Preview Widget: Fixed an issue where the audio position would change on hover without a mouse click. This bug primarily occurred on Linux systems.
- The Compositor now features rounded corners. Wow.
Audio Setup Window
- Fixed non - critical errors during audio loading.
Animation Engine
- Fixed interpolation snapping at the end of animations. This means windows aren't transparent now if animations are enabled.
Settings
- Added a setting to customize the BPM animation style.
Project Menu
- Improved UI responsiveness during composition loading. You can no longer launch two compositions simultaneously, preventing potential issues and memory leaks.
Something for Developers...
- The Loom Animation Engine will soon be released as a standalone library for your projects. It will support PyQt5, PyQt6, PySide2, PySide6, and include a special compatibility mode for other GUI libraries.
v0.9.0-alpha
Cassette v0.9.0
Reworked Glyph rendering
- Significantly reduced chances of visual desync
Improved Undo / Redo system
- Increased maximum history size to 1000 actions (Well I can make it even bigger but... why?)
Audio
- New engine for UI sounds: sound system is now more stable and less prone to glitches.
- The player has been rewritten using the
miniaudiolibrary, which is lighter and faster thansounddevice.
Performance & Optimization
Cassette is now noticeably lighter, and more efficient.
- Removed dependency on pygame entirely.
- Fixed extremely slow startup on macOS.
- Introduced a custom built-in FFmpeg build (~6MB).
- Overall application size significantly reduced.
- Animation update pipeline optimized. Even smoother.
- Fixed major lag when copying large amounts of glyphs.
- Greatly improved stability during fast project switching.
- Startup time on Linux is as fast as 200 ms.
Compositor
- Fixed scaling issues: Position reset and incorrect position in Mini Preview Widget.
Project Menu
- Added Search Textbox.
Textbox
- Fixed textbox cursor distortions.
Export Menu
- You can now add a watermark to your composition. Supports cyrillic, numbers, symbols, upper / lower letters.
Settings
- Settings menu got scroll area, so it's not giant now.
On - phone Visualization
Working with devices is now faster and more seamless.
- Real - Time Visualizer now connects once per session
No more constant reconnecting.
Persistent connection between phone and Cassette.
Cassette Receiver
- Updated to work with 4a, but needs testing.
- Enhanced speed management.
- When you create a glyph, it pulses on your phone.
Features
- Added Import function for:
BNGC files
Label files
- Keyframe - Based Brightness Control
A new way to control Glyph brightness. Hold Alt and move the keyframes.
Accessible via:Effect Menu → Fade.
4 easings supported.
- Effects
Some effects were removed as they can be easily recreated, while new effects were added.
Added additional settings to some effects.
- Glyphtone Editor
A tool to crop your ringtones.
- 4a Support.
For Nerds / Devs
Yes, the codebase also got its life together.
- Adopted Single Source of Truth architecture.
Fewer state - related bugs and desyncs.
- Reduced technical debt (less hacks, more logic).
- Removed wildcard imports.
- Improved overall code structure and maintainability.
- Added type annotations.
- Unified code style across the project.
- Renamed functions for better readability.
- Removed unnecessary
_prefixes where meaningless. - ~90% of files were updated and optimized.
- General editing performance significantly improved.
- Project folder is moved to
$USER$ /Cassette/Songs
Don't forget to reinstall Cassette Receiver!
v0.8.0-alpha
UI & UX
- Solid Glyphs: Glyphs no longer blink; they now remain solid for a more comfortable viewing experience.
- Enhanced Tooltips: Improved tooltip information and phrasing (e.g., corrected segment indexing from "0, 1, 2" to "1, 2, 3").
- BPM Textbox: Refined the visual style of the BPM textbox and centered the text.
- Fixed Misalignments: Resolved layout issues within the Audio Setup Dialog.
- Context Menu Fix: Fixed a bug where the context menu wouldn't open if a glyph's brightness was set to 5%.
- Tooltip Padding: Adjusted padding for better visual consistency.
Features & Enhancements
- New Animation Engine: Ported both Tooltips and the Marquee to a new engine for smoother animations.
- Variable Speed: The Cassette Receiver now supports real - time speed adjustments.
- Improved Audio Loading: Faster audio file loading and near-instant BPM detection.
Optimizations
- Power Efficiency: The animation engine is no longer initialized when animations are disabled, significantly reducing GPU load and battery drain.
- Glyph Visualizer: Optimized the visualizer logic to ensure all segments maintain uniform length.
- Stability: Improved system stability when running with animations toggled off.
Fixes
- Audio Logic: Resolved an issue where audio remained muted indefinitely after a track ended.
- Segmentation Glyph Logic: Fixed multiple glyph segmentation errors. Fixed Glyph Visualizer layouts.
Internal Changes (For Nerds)
- Refactored Settings Logic: Overhauled the logic for settings within the Floating Window.
- Modular UI: Decoupled the UI codebase into multiple files for better maintainability and readability.
- Cleaner Code: * Introduced new helper classes (e.g.,
Label,LineButtons) to streamline code.- Renamed various methods for better functional clarity.
- Removed "hacky" workarounds and deprecated methods.
- Reduced overall line count while increasing readability.
- Project Structure: Overhauled folder organization for better project logic.
v0.7.0-alpha
Cassette v0.7.0
Fixes
- Fixed a crash when cropping .flac files.
- Smoothed out Floating Window antialiasing.
- Keybinds now play nice with different keyboard layouts.
- Patched EGL failure during startup on certain Linux distros.
- Axed double WAV conversion - CPU usage is now much lower.
- Fixed those weird waveforms that appeared during silence.
- The window now closes instantly (no tape stop effect) if the audio is silent.
- Added a smart fix for MP3 files disguised with a .wav extension - they get converted properly now.
- Fixed Visualizator cahche being saved to a savefile.
Critical Fixes
- Fixed cache cleanup. App is stopped from hoarding gigabytes of temp audio files on your disk.
Cool Stuff
-
Added "D" keybind to quickly tweak duration.
-
Added "B" keybind to quickly adjust brightness.
-
Added "S" keybind to quickly set speed.
-
Text cursor now blinks in sync with the beat - stay groovy.
-
Added "No Tilt" option in "Window Hover Smoothing" settings.
-
Support for Drag and Drop: just toss an audio file into the window to import it.
-
Undo / redo mechanics.
Animations & Visuals
- New Animation Engine - 120+ FPS, smooth mixing, and heavy optimization.
- Added "Classic" animation preset - for those missing the old - school Cassette vibes.
- Retuned all animations for a tighter feel.
- Normalized movement logic - animations won't be slowed down even if your PC lags.
- Enhanced Floating Window stability and slightly buffed its appear time.
Misc & UI
- First launch startup sound now defaults to 35% (save your ears).
- Shaved down package sizes.
- Massive code refactor - cleaner under the hood.
- Playback position is now shown in the window title within Audio Setupper.
- Audio Setupper: "Loading the audio" text is now left - aligned to match the layout.
Error Handling
Added specific error windows for:
- Broken or corrupted audio files.
- Files currently blocked by another program.
- Video files that don't actually contain audio streams.
- Audio files being moved while they're still loading.
Optimizations
- Optimized the BPM remove animation.
- Optimized Floating Window rendering, fewer stutters.
- Optimized save management.