ultimate-guitar.com 向け代替フロントエンド、Freetar
(github.com/kmille)- Freetar は Ultimate Guitar 向けのオープンソース代替フロントエンドで、YouTube に対する Invidious の役割を Ultimate Guitar のタブ譜とコードに適用したもの
- 広告、ポップアップ、AI、ブロックチェーンなしの シンプルなデザイン を提供し、タブ譜の検索と閲覧機能を中心に構成されている
- お気に入りのコードはアカウント不要で session storage に保存され、サーバーには送信されず、ダークモード・自動スクロール・印刷向けコード表示・WakeLock API ベースの画面スリープ防止機能がある
- インストール後、
freetar実行ファイルをパラメータなしで実行すると0.0.0.0:22000で動作し、FREETAR_HOST、FREETAR_PORT、FREETAR_CACHE_TIMEOUT環境変数で実行方法を調整できる - 今後の作業には、モバイル UX 改善、PWA パッケージ化、サーバー側暗号化によるお気に入り保存、タブ譜共有用 QR コード表示が含まれ、機能追加前に issue 提案を推奨している
Freetar がすること
- Freetar は Ultimate Guitar 向けのオープンソース代替フロントエンド
- 役割は Invidious に似ているが、対象は YouTube ではなく Ultimate Guitar
- 公開インスタンスは以下の通り
提供機能
- 広告、ポップアップ、AI、ブロックチェーンなしの シンプルなデザイン を提供
- タブ譜を検索して閲覧できる
- 気に入ったコードを favs として保存できる
- すべてのデータは session storage に保存される
- サーバーには送信されない
- アカウントは不要
- ダークモード をサポート
- 自動スクロールをサポート
- コードの印刷に便利
- コードを表示できる
- WakeLock API を使って画面が消灯しないようにする
インストールと実行
- インストールに成功すると
PATHにfreetar実行ファイルが作成される - パラメータなしで実行すると
0.0.0.0:22000で待ち受ける - 環境変数でホストとポートを変更できる
FREETAR_HOSTFREETAR_PORTFREETAR_CACHE_TIMEOUT: タブ譜をメモリにキャッシュする時間を指定し、Ultimate Guitar へのリクエストを減らす- デフォルト値は
0 - デフォルトでは無期限キャッシュとして動作する
- デフォルト値は
配布方法
- PyPI パッケージとしてインストール可能
- Package: https://pypi.org/project/freetar/
- インストールコマンド:
pip install freetar
- Docker イメージとして実行可能
- Image: https://hub.docker.com/r/kmille2/freetar
- デフォルトポートは
22000 - 実行例:
sudo docker run -p 127.0.0.1:22000:22000 kmille2/freetar
- Docker Compose も利用可能
sudo docker compose up -dFREETAR_PORT環境変数でバインドポートを変更できる
- Docker Hub からイメージを取得する代わりに、ローカルリポジトリをビルドして実行することもできる
docker compose builddocker compose up -d
開発環境と今後の作業
- 開発環境には uv が必要
- 開発実行例は
FREETAR_CACHE_TIMEOUT=1 uv run freetar/backend.pyまたはFREETAR_CACHE_TIMEOUT=1 uv run freetar - 静的ファイルは
freetar/static/*、HTML テンプレートはfreetar/templates/*にある - 今後の作業には以下が含まれる
- モバイル端末での UX 改善
- PGA と表記された Progressive Web App パッケージ化
- サーバー側暗号化方式による favs 保存
- タブ譜を素早く共有するための QR コード表示
- 完了済みの項目もある
- QR コードベースのコード共有は #12 の export/import 機能として完了済み
- Invidious Redirection のようなブラウザー拡張は LibRedirect browser extension イシュー で完了済み
- 貢献は可能だが、まず機能提案 issue を作る方法を推奨
- UI や機能が 肥大化すること は望んでいない
1件のコメント
Hacker News のコメント
かなり良いし、関連ツールもすでにたくさんある。今後タブ譜へのアクセスはさらに締め付けられると思って、自分でもタブ譜をスクレイピングして保存するツールを作っておいた
生涯UG Pro会員だが、さらに収益化しようとして一線を越え続けている。この分野は残念ながらオープンソースで進める余地がほとんどない。タブ譜はたいてい出版社、少なくともアーティストがライセンスを持っているからだ。Oliver Treeは1曲あたりコード4つ程度なのに、一時期ほとんどのタブ譜を削除させたという奇妙な例だった。誰でも曲を聴いてタブ譜を書き起こせることを考えると、この分野の現状にはかなり不満がある
教育目的のフェアユースを主張した人がいるのか気になる。タブ譜は実際の創作物というより、ある曲をどう演奏するのが最もよいかについての指示に近く、拍子情報がないので、タブ譜だけで実際の音楽を復元するのはたいてい不可能だ。コードは情報量がさらに少なく、ギターコードの採譜が録音で実際に演奏された音とまったく似ていないこともあり得る
ユーザーがかろうじて満足する、あるいはそれを少し下回る水準まで押し続けるのだと思う
2000年代初頭からUltimate Guitarを使っていて、自分が作ったタブ譜もまだいくつか残っている。今見に行くと本当に悲劇的だ。サイトがひどいので、このツールはぜひ試してみるつもりだ
当時のインターネットが美しかったのは、収益化が簡単ではなかったり、あえて追求されなかったりした片隅が多く、ただ存在できるものがたくさんあったからだ。今はそうではない
一緒にたむろしていたIRCチャンネルも良い思い出だ。サイトには自分が投稿したタブ譜も1つか2つあるはず。ここ数年、たまに戻って見に行くたびに、結局また離れることになる
ハレルヤ。以前アプリを買って生涯サブスクリプションを引き継げたおかげでマーケティングの一部は避けられるが、狂ったようなUIのせいでギターを弾くのがかえって難しくなることが多い
OLGA、つまりOn-Line Guitar Archiveを覚えている。1990年代、10代でギターを学んでいた頃、OLGAにはユーザーが作ったテキストベースのタブ譜が十分にあり、聴いたことのある曲や弾きたい曲はすべて無料で学べた
本当に素晴らしい。ギターを習い始めて約15か月だが、ほとんどのギターサイトにある広告やポップアップが大嫌いだった。これは必要なことをしてくれて、時間を無駄にしないシンプルなインターフェースなので完璧だ
jQueryを使っていないので既存のコード規約に合わないかもしれないが、マージしてデプロイしてくれればソート機能が付いてうれしい。アイデアを出して作ってくれて、あらためてありがとう
素晴らしい。元のサイトは何年にもわたってユーザーにかなり敵対的になってきた。特に、サイトのアイデンティティを形作るコンテンツの大半をユーザーが投稿したことを考えると、なおさら受け入れがたい
2つある。まず、本当に素晴らしい。自分がサイトに追加したタブ譜を探してみたが、とてもきれいに表示してくれる。何より印刷に適した形式で表示してくれるのが重要だ
次に、クラシックギターを弾く、または興味があるなら、インターネットの宝石のような https://www.classtab.org/ も見てみる価値がある
数年前に似たようなWebアプリを作った。このツールともかなりいい勝負ができると思う。シンタックスハイライトもある :)
https://tabviewer.app/
兄弟コメントと「リポジトリを見るにはクリック」という説明について言うと、package.jsonの
"license":"ISC"を公式に法的効力のあるライセンスとして認めるのでない限り、このリポジトリにはライセンスがないProの1年契約を買ったが、24時間後に損をして返金してもらった。返金不可のプロモーションコードを使って加入したためだ
アプリが単にまともに動かない。プレイリストは期待したタイミングで次の曲を実際には読み込まず、譜面を1つ開くのに時間がかかりすぎ、プレイリストの各曲ごとにまた「chords」へ移動しなければならないので読み込みがさらに増える。まったく必要のないものを読み込まないだけでも、ものすごく時間を節約できる。しかもオフライン利用のために曲を手動同期することもできず、お気に入りに入れた後は彼らの同期スケジュールに振り回される
これ用のコマンドラインツールを作った: https://codeberg.org/ltworf/ultimateultimateguitar