├── .dockerignore ├── .env.example ├── .github └── dependabot.yml ├── .gitignore ├── CHANGELOG.md ├── Dockerfile ├── Dockerfile.hub ├── LICENSE.md ├── Makefile ├── README.md ├── api.go ├── auth.go ├── biome.json ├── docker-build-and-push.sh ├── docker-compose.override.yml.template ├── docker-compose.yml ├── frontend.go ├── frontend ├── .npmrc ├── .prettierrc ├── index.html ├── package-lock.json ├── package.json ├── postcss.config.js ├── public │ ├── beatstream-32x32.png │ ├── beatstream-48x48.png │ └── img │ │ ├── close.png │ │ ├── icons.png │ │ ├── preloader.gif │ │ ├── sort-asc.gif │ │ ├── sort-desc.gif │ │ └── sync.gif ├── src │ ├── App.module.css │ ├── App.tsx │ ├── EventManager.ts │ ├── assets │ │ ├── close.png │ │ ├── icons.png │ │ ├── preloader.gif │ │ ├── sort-asc.gif │ │ ├── sort-desc.gif │ │ └── sync.gif │ ├── components │ │ ├── AppBottom │ │ │ ├── AppBottom.module.css │ │ │ ├── AppBottom.tsx │ │ │ ├── NextButton.tsx │ │ │ ├── PlayPauseButton.tsx │ │ │ ├── PrevButton.tsx │ │ │ ├── RepeatButton.tsx │ │ │ ├── Seekbar.module.css │ │ │ ├── Seekbar.tsx │ │ │ ├── ShuffleButton.tsx │ │ │ ├── Volume.module.css │ │ │ ├── Volume.tsx │ │ │ └── index.ts │ │ ├── AppLoader.module.css │ │ ├── AppLoader.tsx │ │ ├── AppMain.module.css │ │ ├── AppMain.tsx │ │ ├── AppNav │ │ │ ├── AppNav.module.css │ │ │ ├── AppNav.tsx │ │ │ └── index.ts │ │ ├── AppTop.module.css │ │ ├── AppTop.tsx │ │ ├── LoginModal.module.css │ │ ├── LoginModal.tsx │ │ ├── MediaSession.tsx │ │ ├── PasswordChangeModal.tsx │ │ ├── SettingsModal.tsx │ │ ├── SongList │ │ │ ├── DataGrid.tsx │ │ │ ├── SongList.module.css │ │ │ ├── SongList.tsx │ │ │ ├── index.ts │ │ │ ├── theme.tsx │ │ │ └── util.ts │ │ └── common │ │ │ ├── Button.module.css │ │ │ ├── Button.tsx │ │ │ ├── Modal.module.css │ │ │ ├── Modal.tsx │ │ │ ├── Slider.module.css │ │ │ └── Slider.tsx │ ├── hooks │ │ ├── swr.ts │ │ ├── useApi.ts │ │ └── useEvent.ts │ ├── main.tsx │ ├── store.ts │ ├── styles │ │ ├── globals.css │ │ └── reset.css │ ├── types.d.ts │ ├── utils │ │ ├── AppAudio-store-adapter.ts │ │ ├── AppAudio.ts │ │ ├── api.ts │ │ ├── filter.ts │ │ └── sort.ts │ └── vite-env.d.ts ├── tsconfig.json ├── tsconfig.node.json └── vite.config.ts ├── go.mod ├── go.sum ├── helpers.go ├── logger └── logger.go ├── main.go └── song.go /.dockerignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/.dockerignore -------------------------------------------------------------------------------- /.env.example: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/.env.example -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/.github/dependabot.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/.gitignore -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/CHANGELOG.md -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/Dockerfile -------------------------------------------------------------------------------- /Dockerfile.hub: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/Dockerfile.hub -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/LICENSE.md -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/Makefile -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/README.md -------------------------------------------------------------------------------- /api.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/api.go -------------------------------------------------------------------------------- /auth.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/auth.go -------------------------------------------------------------------------------- /biome.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/biome.json -------------------------------------------------------------------------------- /docker-build-and-push.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/docker-build-and-push.sh -------------------------------------------------------------------------------- /docker-compose.override.yml.template: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/docker-compose.override.yml.template -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/docker-compose.yml -------------------------------------------------------------------------------- /frontend.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend.go -------------------------------------------------------------------------------- /frontend/.npmrc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/.npmrc -------------------------------------------------------------------------------- /frontend/.prettierrc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/.prettierrc -------------------------------------------------------------------------------- /frontend/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/index.html -------------------------------------------------------------------------------- /frontend/package-lock.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/package-lock.json -------------------------------------------------------------------------------- /frontend/package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/package.json -------------------------------------------------------------------------------- /frontend/postcss.config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/postcss.config.js -------------------------------------------------------------------------------- /frontend/public/beatstream-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/public/beatstream-32x32.png -------------------------------------------------------------------------------- /frontend/public/beatstream-48x48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/public/beatstream-48x48.png -------------------------------------------------------------------------------- /frontend/public/img/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/public/img/close.png -------------------------------------------------------------------------------- /frontend/public/img/icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/public/img/icons.png -------------------------------------------------------------------------------- /frontend/public/img/preloader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/public/img/preloader.gif -------------------------------------------------------------------------------- /frontend/public/img/sort-asc.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/public/img/sort-asc.gif -------------------------------------------------------------------------------- /frontend/public/img/sort-desc.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/public/img/sort-desc.gif -------------------------------------------------------------------------------- /frontend/public/img/sync.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/public/img/sync.gif -------------------------------------------------------------------------------- /frontend/src/App.module.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/App.module.css -------------------------------------------------------------------------------- /frontend/src/App.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/App.tsx -------------------------------------------------------------------------------- /frontend/src/EventManager.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/EventManager.ts -------------------------------------------------------------------------------- /frontend/src/assets/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/assets/close.png -------------------------------------------------------------------------------- /frontend/src/assets/icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/assets/icons.png -------------------------------------------------------------------------------- /frontend/src/assets/preloader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/assets/preloader.gif -------------------------------------------------------------------------------- /frontend/src/assets/sort-asc.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/assets/sort-asc.gif -------------------------------------------------------------------------------- /frontend/src/assets/sort-desc.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/assets/sort-desc.gif -------------------------------------------------------------------------------- /frontend/src/assets/sync.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/assets/sync.gif -------------------------------------------------------------------------------- /frontend/src/components/AppBottom/AppBottom.module.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/components/AppBottom/AppBottom.module.css -------------------------------------------------------------------------------- /frontend/src/components/AppBottom/AppBottom.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/components/AppBottom/AppBottom.tsx -------------------------------------------------------------------------------- /frontend/src/components/AppBottom/NextButton.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/components/AppBottom/NextButton.tsx -------------------------------------------------------------------------------- /frontend/src/components/AppBottom/PlayPauseButton.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/components/AppBottom/PlayPauseButton.tsx -------------------------------------------------------------------------------- /frontend/src/components/AppBottom/PrevButton.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/components/AppBottom/PrevButton.tsx -------------------------------------------------------------------------------- /frontend/src/components/AppBottom/RepeatButton.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/components/AppBottom/RepeatButton.tsx -------------------------------------------------------------------------------- /frontend/src/components/AppBottom/Seekbar.module.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/components/AppBottom/Seekbar.module.css -------------------------------------------------------------------------------- /frontend/src/components/AppBottom/Seekbar.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/components/AppBottom/Seekbar.tsx -------------------------------------------------------------------------------- /frontend/src/components/AppBottom/ShuffleButton.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/components/AppBottom/ShuffleButton.tsx -------------------------------------------------------------------------------- /frontend/src/components/AppBottom/Volume.module.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/components/AppBottom/Volume.module.css -------------------------------------------------------------------------------- /frontend/src/components/AppBottom/Volume.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/components/AppBottom/Volume.tsx -------------------------------------------------------------------------------- /frontend/src/components/AppBottom/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/components/AppBottom/index.ts -------------------------------------------------------------------------------- /frontend/src/components/AppLoader.module.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/components/AppLoader.module.css -------------------------------------------------------------------------------- /frontend/src/components/AppLoader.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/components/AppLoader.tsx -------------------------------------------------------------------------------- /frontend/src/components/AppMain.module.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/components/AppMain.module.css -------------------------------------------------------------------------------- /frontend/src/components/AppMain.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/components/AppMain.tsx -------------------------------------------------------------------------------- /frontend/src/components/AppNav/AppNav.module.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/components/AppNav/AppNav.module.css -------------------------------------------------------------------------------- /frontend/src/components/AppNav/AppNav.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/components/AppNav/AppNav.tsx -------------------------------------------------------------------------------- /frontend/src/components/AppNav/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/components/AppNav/index.ts -------------------------------------------------------------------------------- /frontend/src/components/AppTop.module.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/components/AppTop.module.css -------------------------------------------------------------------------------- /frontend/src/components/AppTop.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/components/AppTop.tsx -------------------------------------------------------------------------------- /frontend/src/components/LoginModal.module.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/components/LoginModal.module.css -------------------------------------------------------------------------------- /frontend/src/components/LoginModal.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/components/LoginModal.tsx -------------------------------------------------------------------------------- /frontend/src/components/MediaSession.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/components/MediaSession.tsx -------------------------------------------------------------------------------- /frontend/src/components/PasswordChangeModal.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/components/PasswordChangeModal.tsx -------------------------------------------------------------------------------- /frontend/src/components/SettingsModal.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/components/SettingsModal.tsx -------------------------------------------------------------------------------- /frontend/src/components/SongList/DataGrid.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/components/SongList/DataGrid.tsx -------------------------------------------------------------------------------- /frontend/src/components/SongList/SongList.module.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/components/SongList/SongList.module.css -------------------------------------------------------------------------------- /frontend/src/components/SongList/SongList.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/components/SongList/SongList.tsx -------------------------------------------------------------------------------- /frontend/src/components/SongList/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/components/SongList/index.ts -------------------------------------------------------------------------------- /frontend/src/components/SongList/theme.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/components/SongList/theme.tsx -------------------------------------------------------------------------------- /frontend/src/components/SongList/util.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/components/SongList/util.ts -------------------------------------------------------------------------------- /frontend/src/components/common/Button.module.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/components/common/Button.module.css -------------------------------------------------------------------------------- /frontend/src/components/common/Button.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/components/common/Button.tsx -------------------------------------------------------------------------------- /frontend/src/components/common/Modal.module.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/components/common/Modal.module.css -------------------------------------------------------------------------------- /frontend/src/components/common/Modal.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/components/common/Modal.tsx -------------------------------------------------------------------------------- /frontend/src/components/common/Slider.module.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/components/common/Slider.module.css -------------------------------------------------------------------------------- /frontend/src/components/common/Slider.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/components/common/Slider.tsx -------------------------------------------------------------------------------- /frontend/src/hooks/swr.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/hooks/swr.ts -------------------------------------------------------------------------------- /frontend/src/hooks/useApi.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/hooks/useApi.ts -------------------------------------------------------------------------------- /frontend/src/hooks/useEvent.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/hooks/useEvent.ts -------------------------------------------------------------------------------- /frontend/src/main.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/main.tsx -------------------------------------------------------------------------------- /frontend/src/store.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/store.ts -------------------------------------------------------------------------------- /frontend/src/styles/globals.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/styles/globals.css -------------------------------------------------------------------------------- /frontend/src/styles/reset.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/styles/reset.css -------------------------------------------------------------------------------- /frontend/src/types.d.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/types.d.ts -------------------------------------------------------------------------------- /frontend/src/utils/AppAudio-store-adapter.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/utils/AppAudio-store-adapter.ts -------------------------------------------------------------------------------- /frontend/src/utils/AppAudio.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/utils/AppAudio.ts -------------------------------------------------------------------------------- /frontend/src/utils/api.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/utils/api.ts -------------------------------------------------------------------------------- /frontend/src/utils/filter.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/utils/filter.ts -------------------------------------------------------------------------------- /frontend/src/utils/sort.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/src/utils/sort.ts -------------------------------------------------------------------------------- /frontend/src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /frontend/tsconfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/tsconfig.json -------------------------------------------------------------------------------- /frontend/tsconfig.node.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/tsconfig.node.json -------------------------------------------------------------------------------- /frontend/vite.config.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/frontend/vite.config.ts -------------------------------------------------------------------------------- /go.mod: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/go.mod -------------------------------------------------------------------------------- /go.sum: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/go.sum -------------------------------------------------------------------------------- /helpers.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/helpers.go -------------------------------------------------------------------------------- /logger/logger.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/logger/logger.go -------------------------------------------------------------------------------- /main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/main.go -------------------------------------------------------------------------------- /song.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Darep/Beatstream/HEAD/song.go --------------------------------------------------------------------------------