LmCast :: Stay tuned in

Tunecat: Simple Internet Radio

Recorded: May 27, 2026, 3 a.m.

Original Summarized

lindenii/tunecat: Simple and dumb internet radio thingy. - Codeberg.org

This website requires JavaScript.

Explore
About
FAQ
Help
Donate

Register

Sign in

lindenii/tunecat

SHA256

Watch

5

Star

4

Fork

You've already forked tunecat

0

Code

Issues

Pull requests

Activity

Simple and dumb internet radio thingy.

21 commits

1 branch

0 tags

88 KiB


Go


99.2%


Shell


0.8%

main

Find a file

HTTPS

Download ZIP
Download TAR.GZ
Download BUNDLE
Open with VS Code
Open with VSCodium
Open with Intellij IDEA

Runxi Yu

cb1fc34677

salmon

2026-05-26 02:11:39 +00:00

cmd/tunecat

will solve the race later

2026-05-25 21:39:51 +00:00

internal

internal/irc: Add

2026-05-25 20:16:36 +00:00

.gitignore

Implement it

2026-05-25 19:54:52 +00:00

go.mod

Implement it

2026-05-25 19:54:52 +00:00

LICENSE

Implement it

2026-05-25 19:54:52 +00:00

opusify

opusify: Convert stuff to opus

2026-05-25 19:07:26 +00:00

README.md

salmon

2026-05-26 02:11:39 +00:00

README.md

tunecat
Simple and dumb internet radio thingy.
There is a
demo instance
serving
Classical Music Mix
(CC Public Domain Mark 1.0)
for
#chat
on
a very chaotic IRC network.
Usage
Consider
openssl req -x509 -new -newkey ed25519 -sha256 -nodes -out tunecat.pem -keyout tunecat.pem
and registering a NickServ account with CertFP.
Use the provided opusify script
to pre-transcode all your songs to Opus 128 kbps.
Usage of tunecat:
-addr string
listen address
-dir string
directory of .opus files
-irc-addr string
IRC server address as host:port
-irc-cert string
combined TLS client certificate and key
-irc-channels string
comma-separated IRC channels to join
-irc-nick string
IRC nick
Add a reverse proxy and profit.
Why another one

Pure Go; no FFI or any native codec packages; easy to deploy
Lightweight; no transcoding; Opus 128 kbps all the way
Basic ICY support

Acknowledgements
Heavily inspired by
MeteorLight
and Kirika.
The Opus paging code is taken from Kirika.
License
2-clause BSD. See LICENSE.

Powered by

with modifications

Codeberg

Blog
Documentation
Community Issues
Contributing
Report Abuse

Association

Who are we?
Bylaws / Satzung
Donate
Join / Support
Contact

Services

Codeberg Pages
Codeberg Translate
Woodpecker CI
Forgejo API
Status Page

Legal

Imprint / Impressum
Privacy Policy
Licenses
Terms of Use

Mastodon |
Matrix Space
(Web link)

Powered by Forgejo

English

Bahasa Indonesia
Dansk
Deutsch
English
Español
Esperanto
Filipino
Français
Italiano
Latviešu
Magyar nyelv
Nederlands
Plattdüütsch
Polski
Português de Portugal
Português do Brasil
Slovenščina
Suomi
Svenska
Türkçe
Čeština
Ελληνικά
Български
Русский
Українська
فارسی
日本語
简体中文
繁體中文(台灣)
繁體中文(香港)
한국어


Page: 1600ms
Template: 200ms

The tunecat project is presented as a simple and straightforward implementation of an internet radio system. It features a demonstration instance that provides a Classical Music Mix, licensed under the CC Public Domain Mark 1.0, intended for use alongside chat on a chaotic Internet Relay Chat network. The operational setup requires specific external steps for configuration, notably using openssl commands to generate necessary certificates and registering an account with CertFP. Furthermore, the system utilizes the provided opusify script to mandate that all audio files be pre-transcoded to Opus at a bitrate of 128 kilobits per second before deployment.

The design philosophy of tunecat emphasizes simplicity and efficiency. It is implemented entirely in the Go programming language, deliberately avoiding foreign function interfaces or reliance on native codec packages to maintain a lightweight structure. A key architectural decision is the elimination of runtime transcoding, as the system relies on pre-transcoding of the media files. The project also incorporates basic support for ICY protocols.

The system draws inspiration from existing works, specifically MeteorLight and Kirika, and incorporates the Opus paging code, which is credited to Kirika. While the core implementation focuses on the radio streaming aspect, the system suggests incorporating methods for adding a reverse proxy and profit mechanisms to enhance its operational viability. The project is distributed under the 2-clause BSD license.