twinBASIC Update: March 3, 2026

Highlights include a mini Battle Royale between fafalone and VanGoghGaming over which is the simpler path to media playback in twinBASIC: WinRT or ... not WinRT.

twinBASIC Update: March 3, 2026

On April 23, 2021, I helped Wayne Phillips introduce the world to twinBASIC at the Access DevCon Vienna conference. I boldly predicted that twinBASIC (along with the Monaco editor) would replace VBA and its outdated development environment by 2025. With that goal in mind, this weekly update is my attempt to keep the project fresh in the minds of the VBA development community.

Every Sunday Monday week, I will be providing updates on the status of the project, linking to new articles discussing twinBASIC, and generally trying to increase engagement with the project. If you come across items that should be included here, please leave a comment below.

Here are some links to get involved with the project:


Highlights

Quiet Week

No new releases or major announcements this week. It was also relatively quiet in the Discord server. My ongoing suspicion is that Wayne is working through some complex challenge, like making 32-bit 3rd party ActiveX DLLs run in 64-bit address space in twinBASIC.

Now that would be a huge potential win for anyone clinging to some business-critical 32-bit only COM add-in whose original developer is long gone.

To be clear, this is pure speculation on my part. I do not have any inside information from Wayne on this one.

Discord Chat Summary

* Auto-generated via Claude-Sonnet-4.5

Overview

The week saw community members encountering filesystem quirks in the IDE, sharing legacy VB6 game utility modernization efforts, and discussing future feature expectations. Notably, @waynephillipsea acknowledged an IDE bug with file renaming, while @grandpam_in_fl documented a detailed sequence for reproducing VBA's phantom breakpoint bug—potentially valuable for twinBASIC's upcoming Edit & Continue implementation.

IDE & Development

  • A case-sensitivity bug in the Project Explorer causes files to disappear when renaming with only letter case changes; waynephillipsea confirmed the disappearing behavior is unexpected, though the underlying case-insensitivity limitation is a Windows filesystem constraint that affects many development tools.
  • The community discussed challenges with case-sensitive operations across Windows and Git, noting that future *nix support will introduce different filesystem behavior considerations.

Community Projects

  • @yereverluvinunclebert_49972 is resurrecting a Jeff Wayne's War of the Worlds game utility, originally written in VB6, with plans to test migration to twinBASIC after stabilizing the VB6 version—expecting the ancient codebase to reveal compatibility issues.
  • The project involves addressing modern Windows compatibility challenges with registry operations and other features that worked seamlessly on Windows 98/XP.

Feature Development

  • Community speculation about the next release continues, with three weeks elapsed since the last update; @testtset suggested cross-bitness support for 32-bit ActiveX controls in 64-bit applications as a potential major feature in development.
  • @garymiller expressed interest in optimized string handling with the compiler, though this feature is expected post-v1.0.

VBA Insights

  • @grandpam_in_fl documented a reproducible sequence for VBA's phantom breakpoint bug: during Edit & Continue, creating a DIM statement for a variable already auto-allocated as a Variant causes a compiler error loop; setting a breakpoint while the compiler is stuck, then force-closing and reloading creates a persistent phantom breakpoint in the p-code.
  • This detailed analysis may inform twinBASIC's Edit & Continue implementation by identifying edge cases where compiler state and breakpoint management intersect.

Conclusion

The week highlighted both practical IDE issues and deeper technical investigations that benefit the broader twinBASIC development effort. Community members continue modernizing legacy VB6 projects while anticipating the next release, with speculation around major features like cross-bitness ActiveX support. The detailed documentation of VBA's phantom breakpoint bug demonstrates the community's value in identifying edge cases that can inform twinBASIC's more robust implementation of Edit & Continue functionality.

Around the Web

IUserNotification2 (tray popups) on Win10/11

Posted by fafalone in the show-and-tell channel:

I was just going to do a simple tB/WDL/x64 update for my old VB6 IUserNotification2 demo, but noticed I wasn't seeing the popups. Looking into it, newer Windows hides it unless you create a start icon and set up an AppUserModelID.
So I created an updated project to do that, in additional to the regular conversion, and some other improvements like properly using IQueryContinue to prevent a ghost process.
GitHub - fafalone/TrayUserNotification: IUserNotification2 demo updated for Win8-11
IUserNotification2 demo updated for Win8-11. Contribute to fafalone/TrayUserNotification development by creating an account on GitHub.

twinBASIC Media Player Wars

The following innocent post from fafalone in show-and-tell led to a good-natured back-and-forth between him and VanGoghGaming over the "simplest" method for audio playback using twinBASIC:

XAudio2 Sound Playback
Just a simple app to play .wav files using XAudio2, via the defs in WinDevLib. Surprisingly Claude was able to make a working demo, despite no existing VBx or tB code. There were a number of minor syntax errors.. like "ByOut" instead of ByRef?? Weird. And unsurprisingly it didn't know to zero the pointer of an Extends Nothing interface. But it took far less time to fix than other ways... overall 15min to go from idea to GitHub post.
GitHub - fafalone/XAudio2Playback: XAudio2 Sound Playback Demo
XAudio2 Sound Playback Demo. Contribute to fafalone/XAudio2Playback development by creating an account on GitHub.

After some back and forth over the finer points of low-level Windows media player features, the two twinBASIC heavyweights took to their respective IDEs to duke it out the old-fashioned way: in code.

Simple WinRT MediaPlayer for Audio files

Posted by VanGoghGaming in the show-and-tell channel:

This project shows how to use the WinRT MediaPlayer class to play audio files (MP3, FLAC, AAC, M4A, etc). It can play local files as well as files from the web.

Basic functionality includes: Play, Pause, Volume Adjustment, Playback Rate (faster/slower) as well as Duration Remaining:

Follow the link above to download a copy of the MediaPlayerAudio.twinproj file.

Simple non-WinRT MediaPlayer for Audio Files

And fafalone claps back:

Yes I do think it's as simple 🤣

Follow the link above to download a copy of the SimpleAudio.twinproj file.

For the record, I downloaded and ran both projects and both worked without any issue. Each one used their respective author's signature twinPACK package ("Windows Development Library" for fafalone and "WinRT Interfaces and XAML Islands DevKit" for VanGoghGaming).

And while the two were not necessarily competing in code golf, both projects came in under 150 total lines of code (not counting their generously sized packages).

Changelog

Here are the updates from the past week. You can also find this information by visiting the GitHub twinBASIC Releases page.

Releases · WaynePhillipsEA/twinbasic
Contribute to WaynePhillipsEA/twinbasic development by creating an account on GitHub.
  • Nothing new this week.

All original code samples by Mike Wolfe are licensed under CC BY 4.0