├── web ├── ssl │ └── .gitkeep ├── .npmrc ├── src │ ├── routes │ │ ├── +layout.server.ts │ │ ├── panel │ │ │ ├── mobile │ │ │ │ ├── +layout.server.ts │ │ │ │ ├── layouts │ │ │ │ │ ├── ask-server-ip.svelte │ │ │ │ │ ├── customized.svelte │ │ │ │ │ └── mirror.svelte │ │ │ │ ├── +page.svelte │ │ │ │ └── +layout.svelte │ │ │ ├── desktop │ │ │ │ ├── +layout.server.ts │ │ │ │ └── +layout.svelte │ │ │ ├── +layout.server.ts │ │ │ ├── +page.svelte │ │ │ └── +layout.svelte │ │ ├── +page.svelte │ │ └── +layout.svelte │ ├── lib │ │ ├── index.ts │ │ ├── utils │ │ │ ├── enums.ts │ │ │ ├── api.ts │ │ │ └── misc.ts │ │ ├── api-return-types.ts │ │ ├── update-checker.ts │ │ ├── demo │ │ │ ├── demo-audio.ts │ │ │ ├── configs.ts │ │ │ ├── demo-sounds.ts │ │ │ └── demo-data.ts │ │ └── preview-audio.ts │ ├── stores │ │ ├── sounds.ts │ │ ├── customized-layout.ts │ │ ├── settings.ts │ │ └── mirror-layout.ts │ ├── app.d.ts │ ├── components │ │ ├── demo │ │ │ └── DisabledInDemoPopup.svelte │ │ ├── showcase │ │ │ └── tour-tip-custom.svelte │ │ ├── settings │ │ │ ├── mirror-layout-settings.svelte │ │ │ └── customized-layout-settings.svelte │ │ ├── icons │ │ │ └── ko-fi.svelte │ │ ├── mobile │ │ │ ├── install-pwa.svelte │ │ │ ├── toolbar-buttons.svelte │ │ │ └── toolbar.svelte │ │ ├── dekstop │ │ │ ├── pairing-qrcode.svelte │ │ │ ├── sound-extractor.svelte │ │ │ ├── sound-bank-lookup.svelte │ │ │ ├── sound-previewer.svelte │ │ │ └── youtube-extractor.svelte │ │ ├── buttons │ │ │ ├── sound.svelte │ │ │ ├── manual-host.svelte │ │ │ └── qrcode-scan.svelte │ │ ├── drawers │ │ │ └── mobile-settings.svelte │ │ ├── modals │ │ │ └── download-file-modal.svelte │ │ └── double-range-slider.svelte │ ├── app.html │ ├── server │ │ └── socket.ts │ ├── app.postcss │ └── client │ │ └── connections.ts ├── static │ ├── banner.png │ ├── logo_192.png │ ├── soundpad.png │ ├── soundpaddon.ico │ ├── demo-sounds │ │ ├── bell.mp3 │ │ ├── bonk.mp3 │ │ ├── nope.mp3 │ │ ├── quack.mp3 │ │ ├── Cantina.mp3 │ │ ├── murloc.mp3 │ │ ├── crickets.mp3 │ │ ├── freebird.mp3 │ │ ├── fake earrape.mp3 │ │ ├── nyan-cat-original.mp3 │ │ ├── nyan-cat-original.ogg │ │ ├── Spooky Scary Skeleton.mp3 │ │ ├── realtime-volume-detection.mp3 │ │ └── taking-the-hobbits-to-isengard-mp3cut.mp3 │ ├── img │ │ ├── guide │ │ │ ├── pairing.png │ │ │ ├── mobile_guide.png │ │ │ ├── website_import.png │ │ │ ├── youtube_import.png │ │ │ └── soundback_import.png │ │ ├── layout_base.png │ │ ├── layout_grid.png │ │ └── layout_list.png │ ├── soundpad_banner.png │ └── logo.svg ├── postcss.config.cjs ├── .gitignore ├── tsconfig.json ├── tailwind.config.ts ├── README.md ├── svelte.config.js ├── vite.config.ts └── package.json ├── assets ├── banner.png ├── logo.ico ├── logo_128.png ├── logo_192.png ├── logo_256.png └── logo.svg ├── desktop ├── src │ ├── main │ │ ├── .gitignore │ │ ├── socketIoHandler.ts │ │ ├── auto-minimize-tray-option.ts │ │ ├── routes │ │ │ ├── data.ts │ │ │ ├── index.ts │ │ │ ├── proxy.ts │ │ │ ├── soundpad.ts │ │ │ └── import │ │ │ │ ├── youtube.ts │ │ │ │ └── url.ts │ │ ├── download-location-tray-option.ts │ │ ├── start-with-windows-tray-option.ts │ │ ├── utils │ │ │ ├── yt-dlp.ts │ │ │ └── misc.ts │ │ ├── index.ts │ │ ├── add-system-tray.ts │ │ └── websocket-server.ts │ ├── preload.js │ ├── index.css │ ├── customTypes │ │ └── index.d.ts │ ├── index.html │ └── index.js ├── assets │ └── soundpaddon.ico ├── README.md ├── tsconfig.json ├── tsconfig.main.json ├── fetch-sources.ts ├── .gitignore ├── forge.config.js └── package.json ├── .vscode ├── launch.json └── settings.json └── readme.md /web/ssl/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /web/.npmrc: -------------------------------------------------------------------------------- 1 | engine-strict=true 2 | -------------------------------------------------------------------------------- /assets/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Seblor/Soundpaddon/HEAD/assets/banner.png -------------------------------------------------------------------------------- /assets/logo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Seblor/Soundpaddon/HEAD/assets/logo.ico -------------------------------------------------------------------------------- /desktop/src/main/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | build 3 | dist 4 | **/*.js 5 | **/*.js.map -------------------------------------------------------------------------------- /assets/logo_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Seblor/Soundpaddon/HEAD/assets/logo_128.png -------------------------------------------------------------------------------- /assets/logo_192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Seblor/Soundpaddon/HEAD/assets/logo_192.png -------------------------------------------------------------------------------- /assets/logo_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Seblor/Soundpaddon/HEAD/assets/logo_256.png -------------------------------------------------------------------------------- /web/src/routes/+layout.server.ts: -------------------------------------------------------------------------------- 1 | export const prerender = true 2 | export const ssr = true -------------------------------------------------------------------------------- /web/static/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Seblor/Soundpaddon/HEAD/web/static/banner.png -------------------------------------------------------------------------------- /web/src/lib/index.ts: -------------------------------------------------------------------------------- 1 | // place files you want to import through the `$lib` alias in this folder. 2 | -------------------------------------------------------------------------------- /web/src/routes/panel/mobile/+layout.server.ts: -------------------------------------------------------------------------------- 1 | export const prerender = true 2 | export const ssr = false -------------------------------------------------------------------------------- /web/static/logo_192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Seblor/Soundpaddon/HEAD/web/static/logo_192.png -------------------------------------------------------------------------------- /web/static/soundpad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Seblor/Soundpaddon/HEAD/web/static/soundpad.png -------------------------------------------------------------------------------- /web/src/routes/panel/desktop/+layout.server.ts: -------------------------------------------------------------------------------- 1 | export const prerender = true 2 | export const ssr = false -------------------------------------------------------------------------------- /web/static/soundpaddon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Seblor/Soundpaddon/HEAD/web/static/soundpaddon.ico -------------------------------------------------------------------------------- /desktop/assets/soundpaddon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Seblor/Soundpaddon/HEAD/desktop/assets/soundpaddon.ico -------------------------------------------------------------------------------- /web/postcss.config.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } -------------------------------------------------------------------------------- /web/static/demo-sounds/bell.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Seblor/Soundpaddon/HEAD/web/static/demo-sounds/bell.mp3 -------------------------------------------------------------------------------- /web/static/demo-sounds/bonk.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Seblor/Soundpaddon/HEAD/web/static/demo-sounds/bonk.mp3 -------------------------------------------------------------------------------- /web/static/demo-sounds/nope.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Seblor/Soundpaddon/HEAD/web/static/demo-sounds/nope.mp3 -------------------------------------------------------------------------------- /web/static/demo-sounds/quack.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Seblor/Soundpaddon/HEAD/web/static/demo-sounds/quack.mp3 -------------------------------------------------------------------------------- /web/static/img/guide/pairing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Seblor/Soundpaddon/HEAD/web/static/img/guide/pairing.png -------------------------------------------------------------------------------- /web/static/img/layout_base.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Seblor/Soundpaddon/HEAD/web/static/img/layout_base.png -------------------------------------------------------------------------------- /web/static/img/layout_grid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Seblor/Soundpaddon/HEAD/web/static/img/layout_grid.png -------------------------------------------------------------------------------- /web/static/img/layout_list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Seblor/Soundpaddon/HEAD/web/static/img/layout_list.png -------------------------------------------------------------------------------- /web/static/soundpad_banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Seblor/Soundpaddon/HEAD/web/static/soundpad_banner.png -------------------------------------------------------------------------------- /web/static/demo-sounds/Cantina.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Seblor/Soundpaddon/HEAD/web/static/demo-sounds/Cantina.mp3 -------------------------------------------------------------------------------- /web/static/demo-sounds/murloc.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Seblor/Soundpaddon/HEAD/web/static/demo-sounds/murloc.mp3 -------------------------------------------------------------------------------- /web/static/demo-sounds/crickets.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Seblor/Soundpaddon/HEAD/web/static/demo-sounds/crickets.mp3 -------------------------------------------------------------------------------- /web/static/demo-sounds/freebird.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Seblor/Soundpaddon/HEAD/web/static/demo-sounds/freebird.mp3 -------------------------------------------------------------------------------- /web/static/img/guide/mobile_guide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Seblor/Soundpaddon/HEAD/web/static/img/guide/mobile_guide.png -------------------------------------------------------------------------------- /web/static/demo-sounds/fake earrape.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Seblor/Soundpaddon/HEAD/web/static/demo-sounds/fake earrape.mp3 -------------------------------------------------------------------------------- /web/static/img/guide/website_import.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Seblor/Soundpaddon/HEAD/web/static/img/guide/website_import.png -------------------------------------------------------------------------------- /web/static/img/guide/youtube_import.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Seblor/Soundpaddon/HEAD/web/static/img/guide/youtube_import.png -------------------------------------------------------------------------------- /web/static/img/guide/soundback_import.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Seblor/Soundpaddon/HEAD/web/static/img/guide/soundback_import.png -------------------------------------------------------------------------------- /web/static/demo-sounds/nyan-cat-original.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Seblor/Soundpaddon/HEAD/web/static/demo-sounds/nyan-cat-original.mp3 -------------------------------------------------------------------------------- /web/static/demo-sounds/nyan-cat-original.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Seblor/Soundpaddon/HEAD/web/static/demo-sounds/nyan-cat-original.ogg -------------------------------------------------------------------------------- /web/static/demo-sounds/Spooky Scary Skeleton.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Seblor/Soundpaddon/HEAD/web/static/demo-sounds/Spooky Scary Skeleton.mp3 -------------------------------------------------------------------------------- /web/static/demo-sounds/realtime-volume-detection.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Seblor/Soundpaddon/HEAD/web/static/demo-sounds/realtime-volume-detection.mp3 -------------------------------------------------------------------------------- /web/static/demo-sounds/taking-the-hobbits-to-isengard-mp3cut.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Seblor/Soundpaddon/HEAD/web/static/demo-sounds/taking-the-hobbits-to-isengard-mp3cut.mp3 -------------------------------------------------------------------------------- /desktop/src/preload.js: -------------------------------------------------------------------------------- 1 | // See the Electron documentation for details on how to use preload scripts: 2 | // https://www.electronjs.org/docs/latest/tutorial/process-model#preload-scripts 3 | -------------------------------------------------------------------------------- /desktop/src/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, 3 | Arial, sans-serif; 4 | margin: auto; 5 | max-width: 38rem; 6 | padding: 2rem; 7 | } 8 | -------------------------------------------------------------------------------- /web/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | build 4 | host-build 5 | /.svelte-kit 6 | /package 7 | .env 8 | .env.* 9 | !.env.example 10 | vite.config.js.timestamp-* 11 | vite.config.ts.timestamp-* 12 | ssl/*.key 13 | ssl/*.pem -------------------------------------------------------------------------------- /web/src/lib/utils/enums.ts: -------------------------------------------------------------------------------- 1 | export enum DRAWER_TYPES { 2 | MOBILE_SETTINGS = "mobile-settings", 3 | } 4 | 5 | export enum AUTOSTART_ACTIONS { 6 | ENABLE = "enable", 7 | DISABLE = "disable", 8 | GET = "get", 9 | } 10 | -------------------------------------------------------------------------------- /web/src/lib/api-return-types.ts: -------------------------------------------------------------------------------- 1 | export type SOUND_SOURCES = 'myinstants' | 'freesound' | 'voicy' | 'uwupad' | 'pixabay' | 'webpage' 2 | 3 | export type FetchedSound = { 4 | source: SOUND_SOURCES, 5 | name: string, 6 | url: string, 7 | } 8 | -------------------------------------------------------------------------------- /web/src/stores/sounds.ts: -------------------------------------------------------------------------------- 1 | import { demoData } from '$lib/demo/demo-sounds'; 2 | import { checkIsDemo } from '$lib/utils/misc'; 3 | import { writable } from 'svelte/store'; 4 | 5 | export const sounds = writable((checkIsDemo() ? demoData : [])); 6 | -------------------------------------------------------------------------------- /desktop/src/customTypes/index.d.ts: -------------------------------------------------------------------------------- 1 | export type SOUND_SOURCES = 'myinstants' | 'freesound' | 'voicy' | 'webpage' | 'uwupad' | 'pixabay'; 2 | 3 | export type FetchedSound = { 4 | source: SOUND_SOURCES, 5 | name: string, 6 | url: string, 7 | } 8 | -------------------------------------------------------------------------------- /web/src/routes/panel/+layout.server.ts: -------------------------------------------------------------------------------- 1 | import { redirect } from "@sveltejs/kit" 2 | import isMobile from 'is-mobile' 3 | 4 | export const prerender = true 5 | export const ssr = false 6 | 7 | if (isMobile()) { 8 | redirect(301, '/panel/mobile') 9 | } -------------------------------------------------------------------------------- /desktop/README.md: -------------------------------------------------------------------------------- 1 | # Creating binaries 2 | 3 | - Build both the main and the renderer with `npm run build` (or both `build:main` and `build:renderer` scripts). 4 | - Check if the build is working fine by creating a dev build with `npm run package`. 5 | - If everything works fine, create the binaries with `npm run make`. -------------------------------------------------------------------------------- /desktop/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 |Welcome to your Electron application.
11 | 12 | 13 | -------------------------------------------------------------------------------- /web/src/lib/utils/api.ts: -------------------------------------------------------------------------------- 1 | import { get } from "svelte/store"; 2 | import { ipToSSLDomain } from "../../client/connections"; 3 | import { serverHost } from "../../stores/settings"; 4 | 5 | export function getEndpointUrl() { 6 | const server = get(serverHost) 7 | return `https://${ipToSSLDomain(server.ip)}:${server.port}/api`; 8 | } -------------------------------------------------------------------------------- /web/src/routes/panel/+page.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /web/src/app.d.ts: -------------------------------------------------------------------------------- 1 | import 'unplugin-icons/types/svelte' 2 | 3 | // See https://kit.svelte.dev/docs/types#app 4 | // for information about these interfaces 5 | // and what to do when importing types 6 | declare namespace App { 7 | // interface Locals {} 8 | // interface PageData {} 9 | // interface Error {} 10 | // interface Platform {} 11 | } 12 | -------------------------------------------------------------------------------- /web/src/components/demo/DisabledInDemoPopup.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | {#if checkIsDemo()} 6 |Disabled in demo
8 | 9 |Please scan the QRCode shown on your computer with your phone or manually enter your computer's IP using the buttons bellow.
5 |Make sure that both devices are on the same local network.
6 |
107 |
111 |
115 | {soundData.sound.name}
84 | ?
85 | 90 | Soundpaddon is a free and open-source application that adds a few 91 | features for Soundpad. 92 |
93 |94 | It allows you to control Soundpad remotely from any device connected to 95 | your local network. It also makes it fast and easy to import sounds from 96 | the web, YouTube, and more. 97 |
98 |102 | Soundpaddon runs on your computer and communicates with the devices you 103 | paired with. To pair devices, simply flash the QRCode on the screen with 104 | your phone, and it just works ! 105 |
106 |