ClassicOldSong

Activity

Stars and mentions · Last 30 days, Oct 6 – Nov 4

GitHub stars294
Mentions5
05101520Oct 6Oct 20Nov 4
UTC days · repositories ClassicOldSong owns3 repositories

Top repositories

ClassicOldSong’s repositories ranked by pull request authors, as on trending.

Loading

Contributes to

Repositories outside ClassicOldSong’s account where ClassicOldSong opened or reviewed pull requests in the past 365 days.

Who noticed ClassicOldSong

Everyone who starred or forked ClassicOldSong’s repositories since the archive began in 2011.

Notable accounts

Ordered by the stars their own repositories have received.

Biggest fans

Accounts that starred the most of these repositories.

Breakout weeks

Each repository’s best week of new stars, with the release published around it.

Mentions

5posts
Nov 50 posts
  1. 客厅电视玩电脑游戏,串流盒子四百多,还得先确认认不认自己的显卡。 apollo 开源串流服务端,电脑装它、电视用 Moonlight 连,显卡硬编码延迟几十毫秒,按客户端原生分辨率出画面。 classicoldsong/apollo

    8 views
  2. Reddit · · r/MoonlightStreaming · u/blikygotthestiky · ClassicOldSong/moonlight-android

    Starwire 0.2.0 - Mic passthrough w/o needing to modify host server + other bug fixes & improvements Edit (23 Oct): 0.2.1 is out! The mic is now encrypted, plus a bunch of cleanup after the code review. Release notes and download here. If you use the mic, make sure to update both the app and the PC setup, then pair once. The release notes are also in my comments on this post. Work is underway on 0.3.0 - I'm going to slow down a bit for a couple of days so I can binge Final Fantasy Resonance. Update (23 Oct): I've been working on some changes following u/rambo3349's code review. The GitHub repo is cleaned up, with real commit history and every prebuilt library traced to its source.0.2.1 is on the way with an encrypted microphone, less mic delay, custom resolutions and a lot of fixes and tests. The full notes are in this comment. Starwire 0.2.0 is now out, and the flagship feature of this release is mic passthrough, a highly requested feature from the 0.1.0 launch post. This has been one of the final obstacles preventing us from feeling like we're truly in front of our PC when we connect through Moonlight. At the same time, I'm intent on beating the "Vibecode/AI slop" allegations, but through action and not conjecture. Prior to going headless, I used Parsec to connect to my gaming PC with mic passthrough, and I recalled it being fairly seamless, to the point where I once thought it was the norm. Fast forward almost 8 years, and we're seemingly not there just yet. I initially REA'd logabell's Apollo fork to figure out how the existing feature works. Until now, using a mic with Moonlight meant switching your PC to a host build that has a mic channel, like logabell's Apollo fork. Most of us don't want to swap host programs, and I wasn't keen on giving up my Vibepollo setup that already works flawlessly. This feature works without touching the host: Starwire sends your mic straight to the PC as VBAN, a small receiver plays it into VB-Cable, and Discord or the game picks it up as a normal microphone. Your host stays exactly as it is, and the mic starts and stops with the stream, with no separate mic app like WO Mic or AudioRelay to open on your Android device each time. ⬇ Download Starwire 0.2.0 · GitHub I want this release to be worth your time, so below is how it works, what I measured, and where it still falls short. preview.redd.it How it works On the Android device, Starwire records with AudioRecord using the VOICE_COMMUNICATION source, and turns on the platform echo canceller and noise suppressor if the device has them. It reads 20 ms at a time and sends 48 kHz s16 mono PCM as VBAN over UDP, port 6980 by default: a 28-byte header plus 256 samples per packet, 187.5 packets a second, about 0.85 Mbps at the IP layer. It sends to the address of the PC you're streaming from, so there's nothing to type in. With the mic set to VBAN, Starwire doesn't ask the host for a mic channel, so the Moonlight session itself is unchanged. On the PC, StarwireMicReceiver (one C# file, about 850 lines) plays it into VB-Cable's CABLE Input through waveOut, and Discord or the game records from CABLE Output. It has no window: an icon by the clock shows whether it's receiving, and its menu can check the virtual mic or play a test tone for Discord's mic test. The active mic channel can easily be exited by right clicking the tray icon, or through task manager. It works in 10 ms blocks: playback starts once 40 ms is queued, new audio is dropped if 120 ms is queued, and it refills to 40 ms after an underrun. One packet from my tablet's mic, as it arrived on the PC. Measurements & Test Results Testing occured over the past 24 hours with my tablet (Redmagic Astra) and phone (Z Fold 6) to ensure the app works across multiple oritentations and resolutions. The test used Wi-Fi streaming from my PC on Ethernet, and logged every packet's arrival on the PC for 90 seconds: preview.redd.it - 16,880 packets, none lost, none out of order. - Arrival time against the ideal schedule: p50 10.9 ms, p99 21 ms, max 38 ms. Up to 20 ms of that spread is built in, because a 20 ms read goes out as a burst of 3 or 4 packets; the network added about 1 ms at p99 and 18 ms at worst. - Replaying those arrival times through the receiver's rules, its buffer stayed at 30-50 ms, with no underruns and nothing dropped. - On the PC alone, from a packet arriving to it being heard on CABLE Output: 107 ms median in one run and 119 ms in a shorter run of the release build. About 40 ms of that is the buffer (up to 60 ms once clock drift builds it up, below), and the rest is Windows' audio path (waveOut, VB-Cable, capture). The test also showed the tablet's audio clock running 60 ppm fast against the PC's. That's normal for two separate clocks, but it adds about 3.6 ms of delay a minute, and the old receiver would have sat at its 120 ms cap after about 20 minutes. The receiver now skips one 10 ms block when its buffer has stayed above 60 ms for 2 s. In a PC-only test with the drift sped up to 2000 ppm, the delay stayed at 89-122 ms instead of climbing to 180. A phone whose clock runs slow drains the buffer instead; at 60 ppm that's a 40 ms gap roughly every 10 minutes while it refills. Development Decisions - PCM: On a LAN, 0.85 Mbps is nothing next to the video, and with no codec there's no encoder delay and nothing to tune. logabell's in-stream path uses Opus at 24 kbps, which makes sense when it shares the stream. - VBAN: This is VB-Audio's documented format, the one Voicemeeter uses, so any VBAN receiver should work on the PC end. - Private addresses only: VBAN has no encryption or authentication. Starwire only sends to RFC 1918, link-local, 100.64/10 (the CGNAT range Tailscale uses), fc00::/7, fec0::/10 or loopback addresses, and refuses with a message otherwise. The receiver and its firewall rule accept the same ranges. Public Wi-Fi uses those ranges too, so on a laptop that travels, run the setup with -NoStartup (then the receiver only runs until you sign out or pick Quit on its icon), or with -Uninstall. If you want your mic channel encrypted, please use Tailscale or its equivalent. The setup is fairly straightforward, and I'm hoping most of us already have it set up to connect from out of WiFi range from the host. - Built on your PC: There's no prebuilt .exe. The setup compiles the receiver with the C# compiler that ships with Windows (.NET Framework 4.8), so what runs is the source in the zip. The setup itself is a PowerShell script of about 300 lines that runs as admin, so read it first if you'd rather. Installation I wanted this to work on a PC that has none of the usual pieces: no Voicemeeter, no Steam Streaming Microphone, no .NET SDK. To do so, I wrote a script that does all the setup for you: 1. Install Starwire-0.2.0.apk from the release. Same signing key as before, so it updates in place and keeps your pairing and settings. 2. From the same release, unzip Starwire-Microphone-for-Windows.zip and double-click setup-microphone.cmd. Windows will probably warn that it's a downloaded file first (More info → Run anyway, or Run). The .cmd is a one-line wrapper that runs setup-microphone.ps1 with -ExecutionPolicy Bypass for that one run, and the script asks for admin itself. 3. In Starwire, turn on Settings → Sound & vibration → Send my microphone. VBAN is the default target, so that's the only setting. 4. In Discord or the game, pick CABLE Output (VB-Audio Virtual Cable) as the input device. All of this is automatic: one double-click runs the PowerShell setup, which builds and starts the receiver, installs VB-Cable if it’s missing, adds the firewall rule and checks the virtual mic. This is it finishing on my PC. What the script does: - Stops straight away if Smart App Control is on, since it blocks programs built on the PC, and points you to VB-Audio's signed VBAN-Receptor instead. - Compiles the receiver into Program Files\Starwire. - If VB-Cable is missing, downloads VB-Audio's driver pack and runs its setup only if the Authenticode signature is valid and VB-Audio's (Vincent Burel). You click Install Driver. Here it worked straight away; if it doesn't show up, the script tells you to restart. - Adds a firewall rule for the receiver only: UDP, from the ranges above. - Adds a Startup shortcut, starts the receiver as your user (not admin), and runs a loopback check: a tone into CABLE Input, listened for on CABLE Output. - Warns you if VB-Cable took over your default speakers (the PC goes quiet) and opens Sound settings. - Prints the PC's addresses and the stream name and port to use. setup-microphone.cmd -Uninstall removes the receiver, its firewall rule and the Startup shortcut (VB-Cable comes off with its own setup), and -Port, -StreamName and -NoStartup cover the rest. The release workflow builds the zip from the same commit as the APK. The full guide is here. The new setting in Starwire, with the setup steps under it. Known Limitations - The setup and receiver are Windows only. On Linux, PipeWire's VBAN receive module should take the stream (Stream1, UDP 6980), but I haven't tried it. - Echo cancelling is whatever the device provides, and some Android devices only apply it to calls. Headphones can circumvent this. - I've measured the PC side, not the phone side. Add the 20 ms capture reads, Android's own input buffering and Wi-Fi on top of the 107-119 ms above. Swapping waveOut for WASAPI should take a chunk off the PC side, and it's planned for the next release. - The receiver starts when you sign in (Startup folder), not as a service, so it won't run on a PC sitting at the sign-in screen. Also in 0.2.0: Several of these came from comments on the last post: - The top of the game screen scrolls away with your games, and a slim bar keeps the selected game and its Play button at the top. - Settings that change latency, smoothness, picture quality or battery have a short Impact line saying what they cost. - The floating menu button closes the menu as well as opening it, and stays see-through until you touch it. - Settings no longer come up blank on narrow screens like a Galaxy Z Fold's cover screen, and the game screen fits a phone held upright. - A Quit button sits beside Resume while a game is running, so you don't have to long-press the tile. - Games without cover art each get their own take on the Starwire tile instead of all looking the same, the covers have softer corners, and the game screen has a bit of motion (it pauses while you stream). - Tapping a running Desktop tile to reconnect no longer crashes the app (thanks to the person who reported it). New to Starwire? Starwire is an Android Moonlight client built on Moonlight X's video pipeline, with the touch tools from Artemide and Artemis and features from Moonlight V+, Moonlit Artemis and Moonlight X Turnip. It installs next to any other Moonlight client. The first post and the README have the full tour. Credit for the mic work: the capture code and the in-stream path come from logabell's Artemis and moonlight-common-c changes, and the echo cancelling, VBAN sender, receiver and setup are new in Starwire. VBAN and VB-Cable are VB-Audio's (VB-Cable is donationware). As before, this is a Vibecoding exercise brought about from the positive software experience I had with Vibepollo. During development, I decide what Starwire does and how it looks, and Claude Code writes the code. I test each feature on my RedMagic Astra and Z Fold 6, and the VBAN sender has on-device tests that check every packet against the format, one of them with the real mic. Bug reports and ideas are welcome here, in a GitHub issue (working now), or in Discussions. GPL-3.0. Since we are in unchartered territory here, the communities help iterating this into something noteworthy would be deeply appreciated!

    23 points · 28 comments
  3. Reddit · · r/MoonlightStreaming · u/blikygotthestiky · ClassicOldSong/moonlight-android

    Introducing Starwire 0.1.0 - A Comprehensive Android Moonlight Client Solution Update (2026/10/22): Starwire 0.2.0 is out. The big one is mic passthrough that works with the host you already have (Vibepollo, Sunshine or Apollo, no fork needed): one setup script on the PC, one switch in the app, and your phone or tablet's mic shows up as a normal microphone in Discord or in-game chat. It also fixes settings coming up blank on narrow screens like a Fold's cover screen, adds a short "Impact" line to the settings that cost latency or battery, tidies the stream menu, puts a Quit button beside Resume, and fixes the crash when tapping a running Desktop tile. How it works and what I measured: 0.2.0 post. Download: Releases. Hey everyone! I have been exclusively streaming games from my headless PC to cloud devices for about five years now. I recently found myself looking for a new Android client, and came upon u/MoreOrLessCorrect's Moonlight X, which includes direct frame pacing and PyroWave support. It had a noticeable impact on my stream quality, even without using PyroWave (I don't have the connection strength to use it in practice), but I wondered how the stream could perform if it had the Fast V-Sync, LFR, Async, and Codec options that Artemis/Artemide has. I also missed some QoL features that the recent Windows forks have adapted that seem to be lagging in terms of an Android client equivalent. Back-end development started from Moonlight X's fast video pipeline, adds the touchscreen tools from Artemide and Artemis, and picks up favourite features from Moonlight V+, Moonlit Artemis and Moonlight X Turnip. I then gave it a refreshed UI that draws from some of the trends coming out of Silicon Valley these days. It installs next to any Moonlight you already have, so you can try it without giving anything up. ⬇ Download Starwire · GitHub The whole screen picks up the colour of whatever you select. Games show their own cover art; apps like Desktop or Steam Big Picture get their own icons. Features & Value Proposition 🎨 A look that follows your game: The screens take their colour from the game you've picked, and apps without cover art get their own icons. Your last game is ready to go with one tap, with its stream settings right under its name. 🎮 Everything during a stream, one tap away: Open the menu with the floating button, a three-finger tap or by holding Select on a controller. Keyboard, full on-screen keyboard, mouse modes, zoom, key shortcuts, monitor switching, bitrate, clipboard: it's all in one grid, and works with a controller too. The new in-stream menu over Aniimo. Game screenshot © Pawprint Studio, from its Steam page. ⚡ Fast and smooth: A Vulkan renderer, the PyroWave codec, and low-latency options like Warp Drive, Fast V-Sync and async decoding for when every millisecond counts. 🧭 Feature-packed and intuitive settings: Sections with plain names (Stream, Sound & vibration, Controllers…), and a Predicted impact panel that shows whether your choices lean towards fastest response or smoothest motion, and which setting is pushing it which way. Tap a setting that came from another fork and a small line under the panel says where it came from and who made it. Redesigned Settings, with the Predicted impact panel on the right. 🖐 Made for touchscreens: Pinch to zoom anytime, trackpad modes, long-press to right-click, an on-screen keyboard with every key, and the option to hide the PC's mouse pointer while you play. 📳 Feel the bass: Audio haptics turns a game's bass into vibration on your device or controller. Update (2026/10/22): Starwire 0.2.0 is out. The big one is mic passthrough that works with the host you already have (Vibepollo, Sunshine or Apollo, no fork needed): one setup script on the PC, one switch in the app, and your phone or tablet's mic shows up as a normal microphone in Discord or in-game chat. It also fixes settings coming up blank on narrow screens like a Fold's cover screen, adds a short "Impact" line to the settings that cost latency or battery, tidies the stream menu, puts a Quit button beside Resume, and fixes the crash when tapping a running Desktop tile. How it works and what I measured: 0.2.0 post. Download: Releases. Get started 1. Set up your PC. I use Vibepollo; it enables every feature. Apollo works too, and Sunshine works for everything except a few extras (clipboard sharing, PC commands, Virtual Display and changing the bitrate mid-stream). 2. Install Starwire. Download Starwire-0.1.0.apk from the release page and open it. 3. Pair. Tap your PC, then type the PIN Starwire shows into your host's PIN page (usually https://localhost:47990). You only do this once. 4. Play. Tap a game, then Play. Android 5.0+. PyroWave and the custom Turnip driver need a 64-bit ARM device. Updates from the releases page install over the top and keep your settings, and Obtainium can keep it updated for you. Development I made Starwire as a vibecoding exercise after experiencing the wonderful software that is Vibepollo. I decided what the app should do and how it should look, and Claude Code wrote the code. I also used REA by morluto to look inside the other apps and see how their features work. Every feature is tested on my RedMagic Astra with a GameSir G8+ before it goes in. Credits Anything that came from another Moonlight version is that author's work. Please go give their repos a star: - Moonlight Android: Cameron Gutman and contributors, the original client - Moonlight X: MoreOrLessSoftware, the base of Starwire (Vulkan renderer, PyroWave, overlay menu, per-app settings, Quick Launch) - Artemis: Yukino Song (ClassicOldSong), pan/zoom, touch modes, clipboard, server commands, Virtual Display, Warp pacing, floating button - Artemide: derflacco, Fast V-Sync (Nano Pacer), Sync and Async LFR, async decode, MediaTek low-latency work, and the version of the Artemis features Starwire ported - Axixi2233's Moonlight fork: the full keyboard, shortcuts list, Lite overlay and shortcut file format (via Artemis) - Moonlight X Turnip: ncpt (NoCrypt), the custom Turnip Vulkan driver for PyroWave - Moonlight V+: qiin2333, ideas for changing bitrate mid-stream, audio haptics and 1% lows - Moonlit Artemis: Mohammad Forhad (4had45), ideas for the monitor switcher and pinch to zoom anytime - PyroWave: Hans-Kristian Arntzen (Themaister) · libadrenotools: Billy Laws (bylaws) - Vibepollo: Chase Payne (Nonary), built on Apollo (ClassicOldSong) and Sunshine (LizardByte) The README lists every feature and whether it was ported (and from whom) or written new. If I've credited something wrongly or missed you, please let me know. Bug reports and ideas are very welcome, here or as a GitHub issue. Built on GPL-3.0.

    84 points · 84 comments
  4. I think this is one of the things that the Apollo fork[1] makes way easier. I'm not sure that I had to do anything Apollo config wise* . I just went through the Windows HDR calibration tool the first time to tune it for my TV and it was good after. *I do have a once-per-run Moonlight glitch that may even be because I'm on an older version. The first connection just doesn't pick up on the HDR immediately. I just have to reconnect once and it's good after that. [1]: ClassicOldSong/Apollo ("Built-in Virtual Display with HDR support that matches the resolution/framerate config of your client automatically")

  5. @tomwarren ClassicOldSong/Apollo save yourself a ton and donate $500 to your favorite charity 😉

    162 views

Achievements

Awards earned by the repositories ClassicOldSong owns. Select an award to embed its badge.

No awards yet

Repositories earn awards by reaching the top three in a completed trending day or week.

A repository earns an award for finishing first, second or third in a completed trending day or week, ranked by new stars, new forks or pull request authors. Awards follow a repository through renames and transfers and count toward its current owner. Weeks run Monday to Sunday, UTC.