First post, by jansakos
After a motivating reply to my idea from @digger I have decided to create a new topic for my little project.
What is it?
As the catchy name (thanks again @digger) suggests, it is a device built on top of Raspberry Pi Pico 2 capable of simulating not only Covox, but many more sound devices intended for the LPT port. As of now there is at least partial support for Covox, FTL sound adapter, Stereo-on-1, Disney Sound Source and OPL2LPT, with support for at least CMSLPT and TNDLPT planned.
Why?
I know there are already many projects similar to this one, namely Covox and DSS for ESP32 by @mcgurk with mostly the same goals (but with a bit more limited ESP32 as compared to Pico), PicoGUS (designed for ISA slots) and many projects sold on Serdashop (OPL2LPT, CMSLPT, TNDLPT, CVX4 etc.). And I have great respect for all these projects and they were all great inspiration to me. Still I felt like I needed something a bit different, capable of running at least an AdLib simulation, for the LPT port (laptop without an ISA slot) and as cheap as possible (so preferably software-simulated, since original hardware tends to cost a bit more). You might be wondering why I need such a device. The answer is simple: I would prefer my Toshiba T1910 to have some sort of sound. And since I believe I may not be the only one in need of such a project, I have decided to help develop such a device as my Bachelor's thesis and share my project with the world.
How can I get one?
Right now there is no official way to get the device or the software. First I want to polish the hardware prototype a bit (since right now it's a jumbled wire mess as you can see) and add support for the devices listed on top (meaning CMSLPT and TNDLPT support). Once the project reaches this stage (hardware prototype with first seven devices) I will publish everything to GitHub under an open-source license together with a small tutorial on how to build such a device by yourself. The device will be free for anyone to use and the same applies for the software.
How can I help?
As of now, the project is still in its early stages. I would really appreciate some tips and tricks for hardware design (currently it is just a Pico 2 wired up with PCM5102 and with a pair of TXS0108E for a safe connection to the LPT port since Pico 2's GPIO pins are not generally 5V tolerant). I would like to resolve noise issues, ground loops, and other audio artifacts coming from my device.
Why does the code look the way it does?
As this is my first bigger project managed solely by myself, I know that many parts of the code could have been written better. At the same time, I believe that the codebase is not really that incomprehensible and you can understand it with some basic knowledge of C and Pico C SDK commands. You might also ask why I did not use C++/MicroPython/InsertYourLanguageHere and why I have used pure C. Simple answer is that I love this language since it is relatively easy to learn. Nothing more, just my personal taste. Please, when I release the source code, try to keep the codebase as C as possible (yes, I know that C++ offers many benefits, but I will not feel like it's a project suitable for my thesis since my relationship with C++ is, to put it simply, complicated). The code may not be as readable as possible and may contain several wrongdoings, but as long as it's not a huge issue, I would like to expand on top of it.
Are there any further improvements?
Since this device is basically Pico 2 connected to the LPT port, we may add support for more features. Support for DS311 and DS301, MP3 playback by sending raw data over the LPT port, and even some non-audio features such as printer emulation with saving PDFs. I believe that the possibilities are endless and as long as the device remains enjoyable to use and it does not become significantly more complicated (and therefore more expensive) I am all for it. Also, it might be possible to create different versions (the cheap one with only the sound capabilities, and the advanced one with an SD card reader etc.). But the main goal is still to support the sound devices listed above.
Thank you all for reading. I hope that my thesis will help more enthusiasts than just myself and that it won't just end up collecting dust. Also, I would like to apologize for my awful English skills, as you might have guessed, it is not my primary language.