Skip to main content

Creating a CW Sidetone With ChatGPT

 I'm still plugging away on the straight key for Project TouCans. It's still a tossup at this point how many of the keying issues are my keying speed, and how many are due to various delays in the system. I got a nice little boost from ChatGPT over the weekend though!

It cranked out a straight key enabling web page that it took me about two hours to massage into what I wanted. You can see the finished code here. You'll notice that the sidetone uses a .wav file. There wasn't a more simple way to get JavaScript to generate a tone that I could find than using a .wav file. (Remember when computers beeped when you told them to beep? Sigh...)  But, that meant I needed a constant tone .wav file. I, of course, did not have one. I asked ChatGPT to create one for me and the direct results were underwhelming. It produced nothing that I could easily use. 

Then! I noticed the analysis button on the chat results. I clicked there and was presented with the Python code that ChatGPT was using. That code, when run locally, produced a .wav file perfectly. That's the code the page is now using. I need to add on code to call to the TouCans keyer, but I'm most of the way there! (At least for slow key speeds.)



Comments

Popular posts from this blog

How Many Files Can You Add to a GPT Project? An Interview with GPT-5 on Limits, Context Engineering Tips, and Chats

 Setting the scene: I’m tinkering with Project TouCans, knee-deep in radio logs, SQLite dumps, and Cesium code. Naturally, I’m wondering if shoving all this into one GPT Project is a recipe for brilliance… or for disaster. So I turn to Vril — you know, after Brainy from the Legion of Super-Heroes , because what else do you call your AI sidekick who always has the answers? Time to ask him straight up. [ As an aside, yes, GPT-5 has decided to sometimes call me Vail. I'm not sure why to be honest. Also, I asked Vril, er GPT-5, to write up our interview for me. Apparently, me asking it to 'Bro' up a few stories, just for fun, has convinced Vril that I use 'Like,' more than I actually might. ] Me (Vail): So Vril, how many files can I throw into a GPT Project before it just starts choking? Like, is there some magic number where the context window taps out and everything falls apart? GPT-5 (Vril): Great question. There’s no single hard file limit. What matters is ...

The Alcubierre Warp Drive Tophat Function and Open Science with Sage

I transferred yesterday's Mathematica file with the Alcubierre warp drive[2] line element and space curvature calculations to the  +Sage Mathematical Software System  today, (the files been  added to the public repository [3]).  If you haven't used Sage before, it's a Python based software package that's similar in functionality to Mathematica.  Oh, and it' free.  I also worked a little more on understanding the theory, but frankly, I made far more progress with the software than the theory.  What follows will be a little more of the Alcubierre theory, plus, a cool Sage interactive demo of one of the Alcubierre functions[1], as well as a bit about my first experience with using Sage. Theory The theory is fun, but it's moving slowly.  Here's the chalk board from this morning's discussion Alcubierre setup the derivation using something called the 3+1 formalism which means we consider space to be flat, (in this case), slices that are labelled ...

When Codex CLI Met Port 9 (Debugging WinError 10061 in a Whisper Pipeline)

When Port 9 Ate My Transcript When Port 9 Ate My Transcript A small debugging story about proxies, Codex CLI, and why localhost isn’t always your friend. CopaseticFlow field notes WinError 10061 Codex CLI + Whisper Environment gremlins There’s a particular kind of bug that feels like someone's been messing with your network stack again. You run a script from cmd.exe . It works. You run the exact same script from Codex CLI. It stops with: [WinError 10061] No connection could be made because the target machine actively refused it FFmpeg happily splits the audio. The Whisper API call dies immediately. No 401. No timeout. Just an instant refusal. Translation: that’s not an API error. That’s a socket being rejected. ...