# jpdcs/songhub-android architecture

> Architecture diagram of the GitHub repository jpdcs/songhub-android, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/jpdcs/songhub-android
- Repository: https://github.com/jpdcs/songhub-android

## Overview

SongHub is an offline-capable Android karaoke and media-player app for phones, tablets, and Android/Google TV. Its documented user workflow is to use a personal song collection (optionally supplemented by downloaded samples), queue and play songs, and customize lyrics and visual backgrounds; a Smart Link phone can also control queuing, playback, and key/pitch. The README documents these capabilities but no source excerpts establish their internal wiring, so the graph shows only documented interactions. The supplied tree contains no feature-specific source paths; subsystem paths use the listed enclosing directory.

Main entry points: [`Songhub Android Karaoke`](https://github.com/jpdcs/songhub-android/blob/main/Songhub%20Android%20Karaoke) (Media player)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interaction["User interaction"]
  node_interface["Karaoke interface"]
  node_smartlink["Smart Link remote"]
  node_queue["Song queue"]
end

subgraph group_playback["Karaoke playback"]
  node_player["Media player"]
  node_midisound["MIDI soundfonts"]
  node_lyrics["Lyric display"]
  node_backgrounds["Background selection"]
end

subgraph group_content["Content and settings"]
  node_songfiles["Song collection"]
  node_samplefiles["Sample downloads"]
  node_lyricsettings["Lyric settings"]
  node_bgvideo["Background videos"]
  node_slideshow["Photo slideshow"]
  node_livefeed["USB or camera feed"]
end

node_singer(("Singer"))
node_smartphone(("Remote phone"))
node_internet(("Internet"))

node_singer -->|"uses"| node_interface
node_smartphone -->|"connects"| node_smartlink
node_smartlink -->|"queues songs"| node_queue
node_smartlink -->|"controls playback"| node_player
node_smartlink -->|"adjusts key/pitch"| node_player
node_internet -.->|"enables downloads"| node_samplefiles
node_songfiles -->|"provides songs"| node_queue
node_samplefiles -.->|"provides songs"| node_queue
node_queue -->|"selects songs"| node_player
node_player -->|"uses soundfonts"| node_midisound
node_player -->|"displays lyrics"| node_lyrics
node_lyricsettings -->|"customizes"| node_lyrics
node_backgrounds -->|"selects"| node_bgvideo
node_backgrounds -->|"selects"| node_slideshow
node_backgrounds -->|"selects"| node_livefeed

click node_interface "https://github.com/jpdcs/songhub-android/blob/main/Songhub%20Android%20Karaoke"
click node_smartlink "https://github.com/jpdcs/songhub-android/blob/main/Songhub%20Android%20Karaoke"
click node_songfiles "https://github.com/jpdcs/songhub-android/blob/main/Songhub%20Android%20Karaoke"
click node_samplefiles "https://github.com/jpdcs/songhub-android/blob/main/Songhub%20Android%20Karaoke"
click node_queue "https://github.com/jpdcs/songhub-android/blob/main/Songhub%20Android%20Karaoke"
click node_player "https://github.com/jpdcs/songhub-android/blob/main/Songhub%20Android%20Karaoke"
click node_midisound "https://github.com/jpdcs/songhub-android/blob/main/Songhub%20Android%20Karaoke"
click node_lyrics "https://github.com/jpdcs/songhub-android/blob/main/Songhub%20Android%20Karaoke"
click node_lyricsettings "https://github.com/jpdcs/songhub-android/blob/main/Songhub%20Android%20Karaoke"
click node_backgrounds "https://github.com/jpdcs/songhub-android/blob/main/Songhub%20Android%20Karaoke"
click node_bgvideo "https://github.com/jpdcs/songhub-android/blob/main/Songhub%20Android%20Karaoke"
click node_slideshow "https://github.com/jpdcs/songhub-android/blob/main/Songhub%20Android%20Karaoke"
click node_livefeed "https://github.com/jpdcs/songhub-android/blob/main/Songhub%20Android%20Karaoke"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_interface,node_smartlink,node_queue toneBlue
class node_player,node_midisound,node_lyrics,node_backgrounds toneAmber
class node_songfiles,node_samplefiles,node_lyricsettings,node_bgvideo,node_slideshow,node_livefeed toneMint
class node_singer,node_smartphone,node_internet toneIndigo
```

## Components

### User interaction

- [Karaoke interface](https://github.com/jpdcs/songhub-android/blob/main/Songhub%20Android%20Karaoke): `Songhub Android Karaoke`
- [Smart Link remote](https://github.com/jpdcs/songhub-android/blob/main/Songhub%20Android%20Karaoke): `Songhub Android Karaoke`
- [Song queue](https://github.com/jpdcs/songhub-android/blob/main/Songhub%20Android%20Karaoke): `Songhub Android Karaoke`

### Karaoke playback

- [Media player](https://github.com/jpdcs/songhub-android/blob/main/Songhub%20Android%20Karaoke): `Songhub Android Karaoke`
- [MIDI soundfonts](https://github.com/jpdcs/songhub-android/blob/main/Songhub%20Android%20Karaoke): `Songhub Android Karaoke`
- [Lyric display](https://github.com/jpdcs/songhub-android/blob/main/Songhub%20Android%20Karaoke): `Songhub Android Karaoke`
- [Background selection](https://github.com/jpdcs/songhub-android/blob/main/Songhub%20Android%20Karaoke): `Songhub Android Karaoke`

### Content and settings

- [Song collection](https://github.com/jpdcs/songhub-android/blob/main/Songhub%20Android%20Karaoke): `Songhub Android Karaoke`
- [Sample downloads](https://github.com/jpdcs/songhub-android/blob/main/Songhub%20Android%20Karaoke): `Songhub Android Karaoke`
- [Lyric settings](https://github.com/jpdcs/songhub-android/blob/main/Songhub%20Android%20Karaoke): `Songhub Android Karaoke`
- [Background videos](https://github.com/jpdcs/songhub-android/blob/main/Songhub%20Android%20Karaoke): `Songhub Android Karaoke`
- [Photo slideshow](https://github.com/jpdcs/songhub-android/blob/main/Songhub%20Android%20Karaoke): `Songhub Android Karaoke`
- [USB or camera feed](https://github.com/jpdcs/songhub-android/blob/main/Songhub%20Android%20Karaoke): `Songhub Android Karaoke`

### Other components

- **Singer**
- **Remote phone**
- **Internet**

## Connections

- Singer → Karaoke interface: uses
- Remote phone → Smart Link remote: connects
- Smart Link remote → Song queue: queues songs
- Smart Link remote → Media player: controls playback
- Smart Link remote → Media player: adjusts key/pitch
- Internet → Sample downloads: enables downloads
- Song collection → Song queue: provides songs
- Sample downloads → Song queue: provides songs
- Song queue → Media player: selects songs
- Media player → MIDI soundfonts: uses soundfonts
- Media player → Lyric display: displays lyrics
- Lyric settings → Lyric display: customizes
- Background selection → Background videos: selects
- Background selection → Photo slideshow: selects
- Background selection → USB or camera feed: selects
