• Activity
  • Votes
  • Comments
  • New
  • All activity
    1. Tips for FL Studio

      I have about a week of funemployment left before I start my new job, and one of the things I picked up this month was FL Studio to see if I can make a song. Does any have any tips/tricks or any...

      I have about a week of funemployment left before I start my new job, and one of the things I picked up this month was FL Studio to see if I can make a song. Does any have any tips/tricks or any recommended video tutorials? If it helps, I have some background in music theory and I play a couple of instruments and have a preamp setup with line in's and stuff.

      17 votes
    2. CGA-2025-12 🏴‍☠️🏝️🍌 INSERT CARTRIDGE 🟢 The Secret of Monkey Island

      Warning: this post may contain spoilers

      Introduction

      Deep in the Caribbean, the pirate haven of Mêlée Island is home to the deadliest brood of ne'er-do-wells what ever sailed the seven seas: the infamous scurvy seadog Meathook; the buccaneer Sword Master whose name is feared in every corner of the isle; and most horrifically, the spectral ghost pirate LeChuck. Onto these disreputable shores late one night arrives the hapless, clueless, and utterly guileless flooring inspector Guybrush Threepwood, with nothing to his name but the dream of somehow becoming a real pirate himself.

      Discover a thrilling world of swordplay, thievery, and, er, treasure huntery in The Secret of Monkey Island. Insult your enemies, fire the cannons, find true love, concoct mysterious voodoo brews, poison guards, evade cannibals, traverse hellish catacombs, raise a pint of grog, and (maybe) discover the Secret for yourself!


      The Secret of Monkey Island

      Happy December! This month we're playing the legendary 1990 Lucasfilm Games point-and-click adventure from the minds of Ron Gilbert, Tim Schafer and Dave Grossman.

      You see, one of my favorite rides in Disneyland is Pirates of the Caribbean. You get on a little boat and it takes you through a pirate adventure… Your boat keeps you moving through the adventure, but I’ve always wished I could get off and wander around, learn more about the characters, and find a way onto those pirate ships.

      • Ron Gilbert, from the Lucasfilm Adventurer, Fall 1990

      I was sorting through some boxes today and I came across my copy of Tim Power's On Stranger Tides, which I read in the late 80's and was the inspiration for Monkey Island. Some people believe the inspiration for Monkey Island came from the Pirates of the Caribbean ride — probably because I said it several times during interviews — but that was really just for the ambiance. If you read this book you can really see where Guybrush and LeChuck were plagiarized derived from, plus the heavy influence of voodoo in the game.

      • Ron Gilbert, from Grumpy Gamer, 2004

      The Secret of Monkey Island is renowned for its zany humor, great (and mostly fair) puzzle design, gorgeous pixel graphics, and memorable soundtrack. Unlike other adventure games of the era, SMI invites you to try anything and everything without worry — you can't die. It's chock full of goofy swashbuckling anachronisms and hilarious good times. Maybe a little frustration too. Hey, you can just look up the answers when you get stuck. We couldn't do that in the '90s. Respect the grind.

      The game originally released for DOS, Amiga, Macintosh, Atari ST, FM Towns, and Sega CD. Those versions are no longer available for purchase in the usual places (you might try eBay but save up your pieces o' eight if you go that route). All the original versions are playable in ScummVM if you lack the necessary hardware. If you find yourself needing access to a Dial-A-Pirate wheel, the original has been helpfully digitized here for your convenience.

      Different releases of the original game have different audio and graphics. Some people have opinions about which version is best. These are all valid. I prefer the version I grew up with, but no shade on the others. They all have their own charms.

      The Secret of Monkey Island: Special Edition is a 2009 remaster that is the official recommended way to play today. It includes fully recreated high-resolution graphics, music, and voiced dialogue, with a modernized UI. It includes a quick toggle between classic and remastered modes, which is a nice touch. The Windows version is currently on sale for 50% off from GOG (DRM-free), and also available from Steam. It is reportedly playable on Steam Deck.

      Side tangent about voice acting in the Special Edition...

      This interview with Dominic Armato hints at one of my favorite real-world stories related to Monkey Island. This aspiring voice actor was a huge fan of the first two games in the series, which were originally unvoiced. He was in the right place at the right time to land the role of Guybrush in the third installment, which was the first to have voiced characters. It's a good but not great game, and very different from the first two due to being helmed by an entirely different team. All other things aside, Armato NAILED it. He is Guybrush. He returned to voice the fourth game and then... was brought back to reprise his role in the Special Editions of SMI and MI2. It was a dream come true for him, but amazing for fans of the series too; finally the original games have full voiced dialogue and the main character is played by the guy who was born to do it.

      The rest of the voice cast is great too. This aspect of the Special Edition really rounds out the game nicely and I consider it an essential part of the experience now. That said, personally I find the SE visuals and music to be really lackluster, and I prefer the original UI as well. You can toggle the classic mode but this removes the VO too... which is why I will instead be playing the Ultimate Talkie Edition, a fan hack of the DOS release (playable in ScummVM) that adds the SE voice tracks and keeps the original everything else. It can be easily found online but I'll refrain from linking it here since SMI's abandonware status is debatable.

      From what I can tell the Special Editions of SMI and its first sequel were also sold as a bundle for Xbox 360, PlayStation 3, and iOS. I can't speak to the current availability of any of those but they're probably all terrible ways to experience it anyway.

      Limited Run Games has also issued a few re-releases of the original game in recent years. I don't know much about these, and good luck finding them for sale anywhere.

      Genres: Adventure, Point-and-Click

      Links: MobyGames, Wikipedia


      Game Setup

      The main purpose of this topic is to get people up and running with the game. As such, it's recommended that you:

      • Share which version of the game you're playing
      • Share what hardware you're playing it on
      • Share if there are any tools/mods that you recommend
      • Share anything you think is important for people to know before they start the game
      • Ask questions if you need help

      Another purpose of this topic is to revisit the game and its time period:

      • Do you have any memories or associations with this game itself?
      • What about its system or era?
      • What aspects of retro gaming were common at the time?
      • What other games from the same time period are you familiar with?
      • What are you expecting from this game in particular?

      Finally, this topic is the beginning discussion for people starting to play it:

      • Post updates sharing your thoughts as you play.
      • Ask for help if you get stuck.
      • Offer help to others.

      It is recommended that you reply to your own posts if you are making consecutive updates so that they are in the same thread.

      IMPORTANT: Any links to the game should be legal distributions of the game only. Please do NOT link to any unauthorized copies.

      IMPORTANT: Put any spoilers in a dropdown block. Copy/paste the block below if needed.

      <details>
      <summary>Spoilers</summary>
      
      Spoiler text goes here.
      </details>
      

      FAQ

      What is CGA?

      Colossal Game Adventure (CGA) is Tildes' retro video game club.

      Each month we will play a different retro game/games, discuss our thoughts, and bask in the glorious digital experiences of yesteryear!

      Colossal Game Adventure is a reference to Colossal Cave Adventure. It's one of the most influential games of all time, one of the first text-based interactive games, and one of the first games to be shared online.

      What do we want to do with this group? Play influential games; interact with each other through text; and share the love for retro games online!

      It also abbreviates to CGA (because we love chunky pixel art), and its name communicates the Colossal amount of fun and excitement that we have with retro video Games in our shared Adventure of playing them together.

      Do I have to sign up?

      No. Participation is open to all.

      There is a Notification List that will get pinged each time a new topic goes up. If you would like to join that list, please PM u/kfwyre.

      Are there restrictions on what/how to play?

      Each month will have a focus game or games that will guide our discussions. Beyond that, there are no restrictions. The philosophy of CGA is to play in a way that works for you!

      This means:

      • Choose whichever version of the game you want.
      • You can use cheats, save states, mods, etc.
      • You can watch a streamer or longplay instead of playing it.

      If you have already played a game and want a different experience:

      • Try a randomizer or challenge run.
      • Play a different version of it.
      • Play a related game (sequel, spiritual successor, something inspired by it, etc.)

      There is no wrong way to participate in CGA, and every different way someone participates will make for more interesting discussions.

      What is the schedule?

      Each month the Insert Cartidge topic will be posted on the 1st, while the Remove Cartridge topic will be posted on the 20th.

      Nomination and voting topics will happen in March and September (every 6 months).

      Schedules are also posted then.

      All CGA topics are available using the colossal game adventure tag.

      What do Insert and Remove Cartridge mean?

      Inserting and removing cartridges are our retro metaphor for starting and stopping a given game or games.

      The Insert Cartridge topic happens at the beginning of the month and is primarily about getting the game up and running.

      The Remove Cartridge topic happens toward the end of the month and is primarily about people reflecting on the game now that they've played it.

      There are no hard restrictions on what has to go in either topic, and each can be used to discuss the game, post updates, ask questions, etc.


      Closing Thoughts

      How appropriate, you fight like a cow.

      24 votes
    3. Advice/Suggestions on headphones or earbuds while listening to voices in the same room

      Scenario: I am frequently playing video games with my partner, and we have our PCs side-by-side. I am looking for a comfortable set of headphones or earbuds that will also make it easy to hear...

      Scenario: I am frequently playing video games with my partner, and we have our PCs side-by-side. I am looking for a comfortable set of headphones or earbuds that will also make it easy to hear each other so we can talk while gaming.

      Main priorities:

      • Openness / Ability to hear physical surroundings
      • Comfort for long wear duration (I wear glasses, which rules out most over-the-ear)
      • Budget

      Nice to haves:

      • Audio quality decent enough for gaming (doesn't have to be 3D positional or anything)
      • Audio quality acceptable for listening to music while playing some games (but nowhere near audiophile level, not expecting much bass from something light)
      • Wireless (but not against a wired option - can be USB or 3.5mm since this will be used exclusively with my PC)

      I've really only ruled out one thing: I'm not interested in bone induction headphones. I tried out a pair of JLab JBuds Frames that sit on your glasses, and while they aren't bone induction, the pressure against that area of my head, combined with nothing in my ears, would give me a headache after an hour or two. I suspect I'd have a similar issue with bone induction.

      In a world that seems to prioritize noise cancelling, my search for other options has been inconclusive. There's a lot of negative reviews about comfort in options like the Cleer ARC series and Baseus clip-on styles. I found some of the suggestions in a previous thread on bone induction headphones to be interesting, but nothing seems to meet all of my criteria perfectly.

      16 votes
    4. Can I hope to defeat telematics in a new car?

      Could you recommend a make of vehicle whose spy tech is easy to disable? This is the highest hurdle and single most important factor in my search for a car, so my other preferences and needs fall...

      Could you recommend a make of vehicle whose spy tech is easy to disable? This is the highest hurdle and single most important factor in my search for a car, so my other preferences and needs fall far second. I would like an electric vehicle or hybrid model with no less cargo room than a Prius, and not larger than a mid-sized station wagon, with a track record of low repairs. Correct me if I'm misinformed, but applying those criteria seems premature until I can identify something I can make private.

      I have only ever bought used cars, and have lived the same story many times: I will construct elaborate spreadsheets, research models until I could host a video walk-through of trouble spots to watch for, then will shop and cavil until I make a purchase I'm proud of. Sure, it ends up 25% over my initial budget, but I pat myself on the back for a full 18 months afterwards. Nice work, careful consumer. But it's then the repairs begin, and soon I'm spending $3-4,000 a year maintaining my certified reliable used car.

      So, I am searching for a newer used car or a new car whose telematics can be disabled. I have read through discussion boards, but weary quickly at the comments defending the cozy convenience of the corporate surveillance net or chiding people like me for even trying. I don't care. If lacking or disabling spy features means I can't use my car as a phone, that sounds like a win to me. I know a little about cars and have alright technical know-how. Most importantly, I am resolute. I will not drive a car that listens to me or transmits video of my travels. Has anyone had success here?

      47 votes
    5. I created my own audio player, here is my experiences with the process

      Overview If you want to see just the final result, check out my TiMaSoMo showcase post. This post does minimal amount of showcase of the final project, although it does include some pictures. If...

      Overview

      If you want to see just the final result, check out my TiMaSoMo showcase post. This post does minimal amount of showcase of the final project, although it does include some pictures. If you want to see a showcase of the software, the original author has made a great video showcasing it that is worth checking out: YouTube videoBlogpost for those who prefer reading. Instead, this post is more a discussion of my experience developing a device.

      Initial Planning

      The goal of this project was to create a dedicated audio player, to separate that capability from my phone. The main source of audio will be streaming Spotify, not local files. Although unfamiliar with them, I felt that a Raspberry Pi was a good baseline device. For audio, I had an old USB DAC/amp that I wanted to repurpose. Using this DAC/amp would allow for some of my harder to drive headphones to work, as well as just getting cleaner audio. Then, I was planning on just using an eInk touchscreen. The rationale for eInk was so that it would feel different than my phone, and just feel like it was intended for music instead of scrolling. The logic was if I put a regular LCD screen on, it would not differ from a smartphone, and therefore I might as well just connect my DAC to my phone and use that. For software, the plan was to just use either Android or some lightweight linux distro. The initial plan for batteries was to just use rechargeable AA batteries, so that I can easily swap them out. One major reason I wanted to go with the DIY route was for repairability, especially with batteries. If I got an existing Digital Audio Player (DAP) on the market, I knew that the Li-Ion battery would eventually go bad, and existing devices on the market may not be easily repairable.

      Hardware Sourcing

      My hardware approach was to buy one component at a time. That way, if I ran into an issue with the feasibility of the approach, I could pivot without having wasted money on all the components ahead of time. This approach did slow down development as I was frequently waiting on hardware, but was more fiscally responsible. In January I got a Raspberry Pi 3a+, and played around briefly with some different operating systems. The next part that was needed was to source the screen.

      Initial Plan for eInk

      The original goal was to try and get a touch eInk screen, roughly 5” for a reasonable price. I spent a few weeks trying different places to try and find one, but could not find one. Since I could not find one I started thinking about pivoting to an LCD screen. With this pivot, I started defining goals of the project more. If I were to just use an LCD touchscreen potentially running Android, what makes it different from using my phone? I spent a few weeks trying to define the goals of the project, and was not able to come up with satisfactory answers if I went with an LCD screen.

      Clickwheel design pivot

      In the process of trying to figure out my approach, I stumbled across this YouTube video. I felt like this would be a good starting point. It seemed to solve the issue of it not being another Android device, which was my main problem I was trying to solve. However there were a few parts of the implementation that I did not like:

      • It relied on using old used Apple hardware. This works for now, but over time it would become harder to source replacement parts.
      • I did not already have the hardware, so I would have to buy an old used iPod and strip it for parts
      • It was a bluetooth implementation, so I would have to figure out how to fit my DAC into an old iPod, which seemed unrealistic
      • The battery while replaceable, was a non-descript battery so getting a new replacement with the same form factor would be harder.

      Luckily, for the clickwheel, someone on the weekly programming project on Tildes pointed out this new clickwheel. Since that seemed to be a reasonable approach I ordered one and also got a small LCD screen from Amazon. Unfortunately, the screen used up all the GPIO pins and had non-existent documentation or drivers. I was unable to get the screen to work, so I returned it and ordered a Waveshare 2” LCD. I was intentional on finding one that could be a regular display without using too many GPIO pins. The Waveshare screen had significantly better documentation, and with a bit of work I was able to get it working. With that solved, I started wiring in the clickwheel, and creating basic code to detect basic inputs, which I then used to modify the original code for the Spotify player to handle my clickwheel (see below for comments on code modification). Once I had the screen and clickwheel, I could also develop the software while waiting for parts. Image showing the early iteration of the device

      The last main part I had to solve was batteries. Another helpful comment on the weekly programming thread on Tildes told me about 14500 and 18650 batteries. I sourced a 14500 charger and some 14500 cells from Amazon. I had some issues with the first charger I got, and since they were shipping directly from China, it meant the second one would take another few weeks. Picture of using the 14500 battery. The cells I sourced said they were 2500 mAh. I tried one out, and had playtime of about 30mins, not enough to even listen to a full album on a single charge, which is inadequate. I used a portable battery bank rated at 10000 mAh to set a benchmark, and that lasted significantly longer (I was probably around 50% after about five hours or so of playback). This indicated that the 14500 cell was falsely claiming capacity, which is apparently a common issue on Amazon. It also seemed like 14500s rarely have capacity above 700mAh, so I realized that a 14500 would not work. So I decided to upgrade to an 18650 cell, which I could source the actual battery locally from a reputable vendor, with a capacity of 3400mAh. Since I realized that small hobbyist electronics like this on Amazon were shipping directly from China, I started ordering from AliExpress for the charger, which saved me some money for the same part (and even picked up a spare just in case). Picture of me using the 18650 to listen to music on my balcony during the summer. Since I did not need the extra power of the RPi 3a+, and the battery was taking more space, I ordered a RPi Zero 2w+. I also ordered some micro USB ends to solder to to make internal cabling, as well as a USB-C port to use for charging. By May I had all the hardware parts I needed, and all that was left for hardware was to design a case to 3D print, which is detailed below.

      Software Development

      The first thing I tested was installing Raspotify which this project used, and set it up with my DAC. Since that worked, I started to program the clickwheel using GPIO pins. I had never used a RPi before, but found some easy tutorials on programming the buttons of my clickwheel in Python. Once the buttons were programmed, I had to figure out the rotary encoder, but was able to find a Github repo that had a working Python code to process the inputs. I was able to add that, and created a Python class that would handle all the inputs of my clickwheel. Once that was coded, I just had to incorporate that into the code for the Spotify player frontend. I forked the repo, and was greeted with at the top of the main file this comment:

      # This code is a mess.
      # This is me learning Python as I go.
      # This is not how I write code for my day job.”
      

      This was not an encouraging comment to read, as at the start my Python skills were relatively low. I was able to quickly find where the inputs from the clickwheel were being handled. The original code had clickwheel inputs being handled in a separate C program and then communicating to the Spotify frontend via sockets. Since my clickwheel code was handled via a Python class I was able to simplify it, and not require sockets to be used. With that working, I just had to set up all the required steps to get the project working. Unfortunately, the documentation for deployment was extremely lacking. I was able to find a Github issues post that provided instructions so was able to get it all set up. I was able to get to this phase by the end of March.

      Once I had it all working, I could start on expanding the software to fit my use case as well as start working on any bugs I encounter. I felt a good starting point in handling this was to start addressing the issue of “this code is a mess.” Cleaning up the code would be a good way to gain familiarity with the code as well as make it easier for me to address any bugs or future enhancements. I started work on creating a class diagram, but it was really tedious to do it from scratch with such a large codebase, so I deserted that plan quickly. I am thinking of creating some sequence diagrams from some features I implemented recently, which would help in general documentation to refer back to in the future. I did find some classes that would make more sense in separate files, so did do that. I also started adding in new features as well. The first was to implement a “hold switch” which turns off the screen and disables the clickwheel input. Before, the screen would be on a 60sec timer to turn off, but I felt that sometimes I would want to have the screen stay on (like if I am just sitting in a chair listening to music). This was a relatively easy feature to implement. One bug that kept on appearing is that the screen would frequently freeze on me, normally about 60sec into a song, but would update once the next song started playing. I spent several weeks tracking down this issue, thinking it was software related, as the screen used to timeout after 60sec. I also thought it might be a configuration of my OS, so did some debugging there as well. Finally, I plugged in my main desktop monitor, and realized when the small 2” screen would freeze, my desktop monitor would not. This lead me down to investigating the driver for my screen. I found an issue with someone having similar issues with the original driver that Waveshare forked. I then realized that there was a setting that the screen would stop updating if less than 5% of the pixels were changing. Once I changed that in the config file, the screen freezing issue stopped. I was able to solve this major issue by late July.

      The last major feature I have implemented is to create the ability to add new WiFi networks from the app itself. This was a needed feature if I wanted to bring it anywhere outside of my home, since 3rd Party Spotify apps cannot download music. Luckily, there was a search feature, which gave me a baseline for text input using the clickwheel. I was able to create a basic page that prompts for the input of a SSID and the password, and then adds that to /etc/wpa_supplicant/wpa_supplicant.conf and then restarts the wireless interface. I added this feature into the overall settings page I added, which also included other useful dev options, like doing a git pull for me to avoid having to SSH into the Rpi to do it. The settings page features were a part of my project for TiMaSoMo.

      Case Design

      I started work on the case in late May roughly. The plan was that I was going to design the case and have my friend who owns a 3D printer print out my design for me. To continue with the project goal of repairability, I wanted to avoid using glue for the case. Instead, I wanted to use heated inserts to hold all the components. I had not used any 3D modeling or CAD software before, so it was a learning experience. I settled on using FreeCAD, which I was able to learn the basics of what I needed relatively quickly. I started with a basic case design for a prototype, to help plan out how I would lay things out. On my computer screen, having the device be 40mm thick sounded fine, but after receiving the prototype I realized I would need to be aggressive in thinning out the design. However, this protoype in early June was very helpful in getting a better understanding of how I needed to design it. Case prototype pictures.

      The first iteration I was able to get down to 27mm, which was a significant improvement. I received this iteration in mid July. However, there were parts that did not fit properly. Most of the mounting holes were not aligned properly. However, the bigger issue was that at 27mm the device would not be thick enough to hold the DAC and screen stacked on top of each other. This iteration still had the DAC keep the original metal housing, so that I could easily remove it and use it as originally intended if I did not want to continue using my audio player. First case iteration pictures.

      The second iteration I decided to remove the metal housing of the DAC, which freed up a lot of internal space, with the main limiting factor of thickness being the 18650 battery. So I kept the thickness around 27mm, but had more internal space. Removing the metal case of the DAC was relatively straightforward, except figuring out how to secure it to the print. Luckily, there were two roughly 2.5mm holes in the PCB, that I was able to use to secure it. I also started to do a more complex design, since I was getting more experienced with FreeCAD. I also moved the RPi to the top of the case, so that the two parts of the case could easily separate, with only micro USB connectors being used between the parts in the top and bottom part of the case(Picture of third iteration showing this feature). For anyone who has had to repair electronics that did not fully separate due to ribbon cables (laptops are the worst for this it seems), you understand the quality of life improvement of having the two parts easily separate. I got this iteration of the case in early September, and found a few issues of parts conflicting. However, with the use of a dremel, I was able to modify it to get it to roughly fit (although janky in some parts).In this picture you can see the power switch, which I had to modify to sit outside the case. I wanted to fully assemble it, so that I could start using it and figure out where it needs to improve. The biggest issue aside from conflicting parts was that the top of the case was bulging, so I wanted to add another point of connection to prevent it. This bulge was partly caused by the screen cutout causing a weak point in the top of the case. Second case iteration pictures.

      The third iteration was part of my TiMaSoMo project. This was a relatively simple minor tweaks, as well as fix some minor pain points of the previous iteration. I reinforced the top significantly to prevent bending, as well as add a fifth point to secure it. I also added a recess to make accessing the switches for power and hold easier to use (although I think I messed up the hold switch one). Overall, this print worked well, and there is currently no plans for a fourth iteration. Fourth iteration pictures.

      Here is all four cases compared side by side

      What I learned

      The first lesson I had to learn was how to define project goals. Not being able to source an eInk screen had caused me to pivot, and in doing so I had to reflect on what truly mattered for my project. I knew that DAPs existed, so why build my own rather than buy one? Most DAPs on the market seem to be Android devices where they removed the phone functionality and added in quality audio components. Part of a dedicated audio device was to not have my phone be the everything device that they are, but a second Android device with an LCD screen and better audio components is not the solution. Luckily, I encountered the clickwheel based approach, which did solve that issue (and probably better than an eInk would have). Also, I wanted the device to be easily repairable. Li-Ion batteries go bad, which was another major concern for me with the current options of DAPs. Repairability was something that mattered to me, but I had to embrace what that meant for the form factor. If I went with a non-descript Li-Ion pillow battery, I could probably significantly reduce the size. Understanding that I wanted to avoid just being another Android device and have repairability and replaceable parts as the defining features were useful to keep in mind. That approach did result in compromise though, primarily in physical size at the end.

      The second big thing I learned was just the process of sourcing parts for a project like this. The closest project to this that I have done in the past is create a DIY cable tester. That simply just involved some switches, resistors, LEDs, and some AA batteries that I could all source locally. So having to buy more complex electronics where the documentation mattered was a learning curve for me. Luckily, early on I was ordering from Amazon, where returns were relatively easy. The problem with Amazon though was false advertising for batteries and some components were shipping directly from China. So, switching to AliExpress saved me money without adding any additional in shipping.

      Learning 3D modelling and getting stuff 3D printed was also a huge learning curve for me. I am glad that I got a very rough prototype printed early on in the process. In designing the prototype, I just was not concerned about saving space. However, once the prototype was printed and off my screen and into my hand, I realized how aggressive I needed to be in compacting things. The other thing with using FreeCAD is I learned too late in the process about part hierarchies, and I still do not fully understand them. Not using part hierarchies properly led me to have to do a redesign on each iteration, as moving mounting holes over a few mm would shift every part added after it. Luckily, my designs were relatively simple, but having hierarchies handled properly would have helped me iterate quicker. On top of getting prototypes in hand quickly, using imperfect prints and just adjusting the parts that didn’t work with with a dremel was useful. If I didn’t do that with the second iteration, I would not have dealt with the issue that the top of the case would bend out over time. Spending time using the imperfect device helped me figure out the issues to make the next iteration better.

      Future Goals

      The first goal I will add in future expansion is to add better documentation and create a better development workflow. Right now, my process includes pushing any changes I do (luckily I am using Github branches now), then pulling the updated repo and starting it on my Pi. However, I never test if it compiles properly before pushing, so I end up sometimes doing five pushes in ten minutes, playing whackamole with compilation errors. Being able to run a dev version on my desktop with keyboard emulation for inputs would be beneficial.

      Another big issue that I want to solve is that I need to clean up the audio on lower resistance headphones like my IEMs. There appears to be some electrical noise, that only sensitive devices like IEMs detect. The solution I am currently considering is to add in a capacitor on the voltage rail between the Pi and the DAC to hopefully get cleaner power.

      Another issue is that I currently have no indicator of battery life. Since it is an 18650 Li-Ion battery, I should be able to just detect the gradual decrease in voltage, and calculate battery percentage. However, GPIO pins appear to be unable to do that natively, so I may have to add in a small controller board to do it. I have not looked too much into this.

      There are a few UI/UX decisions that do not match my preferred way of listening to music. So over time I plan on gradually tweaking the UI/UX to match what I want it to be. A prime example of this would be that when I select an artist, I want it to present a list of their albums, instead of playing their most popular songs.

      I want to be able to use Spotify Lossless, since that has rolled out near the end of this project. Unfortunately, it seems that currently it will not be supported. Seems like Librespot (which is the basis for Raspotify) does not currently have a solution that does not involve working around Spotify’s DRM.

      Conclusion

      Overall, I am really glad I took on this project. It took a long time for me to get it to a finished state. However, the experience has been really fun, and I have learned some new skills. Also, having a dedicated device that all it does is stream Spotify is really nice. I always found myself whenever I was listening to music ending up scrolling on my phone for a bit more stimulation, and then realized I have not been paying attention for the past couple of songs. Having a device where all I do is just listen to music and leave my phone behind has been nice. Also, modifying the code to fit my preferred use case has been nice. There are points where I realize I do not like how something is laid out, but then I have agency to change the layout. Here are some pictures of the final device.

      If you want to build the device yourself, I will warn you that it has some rough edges. Also, the DAC/amp is discontinued, so sourcing that to fit inside the case would be tricky. However, my Github repo has all hardware listed, the code needed, and easy to follow software deployment instructions.

      30 votes