[{"data":1,"prerenderedAt":1668},["ShallowReactive",2],{"docs-page-en-\u002Finstallation":3,"docs-nav-en":242},{"id":4,"title":5,"body":6,"description":235,"extension":236,"meta":237,"navigation":238,"order":177,"path":239,"seo":240,"stem":12,"__hash__":241},"content_en\u002Finstallation.md","Installation",{"type":7,"value":8,"toc":228},"minimark",[9,13,30,35,59,62,66,80,83,87,112,123,127,134,138,153,186,203,224],[10,11,5],"h1",{"id":12},"installation",[14,15,16,17,22,23,29],"p",{},"Grab a build from the ",[18,19,21],"a",{"href":20},"\u002Fdownload","Download page"," or from ",[18,24,28],{"href":25,"rel":26},"https:\u002F\u002Fgithub.com\u002Fmarcus-universe\u002FSoundNinja\u002Freleases\u002Flatest",[27],"nofollow","GitHub Releases",". SoundNinja is in early development, so treat builds as beta.",[31,32,34],"h2",{"id":33},"windows","Windows",[36,37,38,50,53,56],"ul",{},[39,40,41,45,46,49],"li",{},[42,43,44],"strong",{},"Installer (.exe)"," or ",[42,47,48],{},"MSI (.msi)"," for 64-bit Windows",[39,51,52],{},"Landing page target: Windows 10 and newer",[39,54,55],{},"The app README also lists Windows 8 and above",[39,57,58],{},"The NSIS installer uses a dark theme. Pick a language during setup — SoundNinja remembers it on the next launch.",[14,60,61],{},"Run the installer, then launch SoundNinja from the Start menu.",[31,63,65],{"id":64},"macos","macOS",[36,67,68,74,77],{},[39,69,70,73],{},[42,71,72],{},"Universal .dmg"," for Apple Silicon and Intel",[39,75,76],{},"Landing page target: macOS 10.14 and newer",[39,78,79],{},"The app README lists macOS 10.15 and above",[14,81,82],{},"Open the disk image and drag SoundNinja to Applications.",[31,84,86],{"id":85},"linux","Linux",[36,88,89,95,101,109],{},[39,90,91,94],{},[42,92,93],{},"Debian (.deb)"," for Ubuntu \u002F Debian",[39,96,97,100],{},[42,98,99],{},"AppImage"," for other distros",[39,102,103,104,108],{},"After a release is published, Arch users can install ",[105,106,107],"code",{},"soundninja-bin"," from the AUR",[39,110,111],{},"Tested on Ubuntu 20.04",[14,113,114,115,118,119,122],{},"Desktop builds need WebKit and GTK packages. On Debian\u002FUbuntu that usually means ",[105,116,117],{},"libwebkit2gtk",", ",[105,120,121],{},"libgtk-3-0",", and an app-indicator library.",[31,124,126],{"id":125},"updates","Updates",[14,128,129,130,133],{},"In the app, open ",[42,131,132],{},"Help → Check for Updates",". You can also let SoundNinja check on startup in Settings.",[31,135,137],{"id":136},"build-from-source","Build from source",[14,139,140,141,146,147,152],{},"Need a custom build? Clone ",[18,142,145],{"href":143,"rel":144},"https:\u002F\u002Fgithub.com\u002Fmarcus-universe\u002FSoundNinja",[27],"the repo",", install ",[18,148,151],{"href":149,"rel":150},"https:\u002F\u002Fv2.tauri.app\u002Fstart\u002Fprerequisites\u002F",[27],"Tauri prerequisites",", then:",[154,155,160],"pre",{"className":156,"code":157,"language":158,"meta":159,"style":159},"language-bash shiki shiki-themes github-light github-dark","bun install\nbun run tauri:serve\n","bash","",[105,161,162,175],{"__ignoreMap":159},[163,164,167,171],"span",{"class":165,"line":166},"line",1,[163,168,170],{"class":169},"sScJk","bun",[163,172,174],{"class":173},"sZZnC"," install\n",[163,176,178,180,183],{"class":165,"line":177},2,[163,179,170],{"class":169},[163,181,182],{"class":173}," run",[163,184,185],{"class":173}," tauri:serve\n",[14,187,188,118,191,194,195,198,199,202],{},[105,189,190],{},"npm",[105,192,193],{},"pnpm",", or ",[105,196,197],{},"deno"," work too. Production build: ",[105,200,201],{},"bun run tauri:build",".",[14,204,205,208,209,214,215,218,219,202],{},[42,206,207],{},"Windows only:"," every Windows compile includes ASIO via the ",[18,210,213],{"href":211,"rel":212},"https:\u002F\u002Fwww.steinberg.net\u002Fasiosdk",[27],"Steinberg ASIO SDK",". Run ",[105,216,217],{},"bun run setup:asio"," once (SDK is not in git). Linux and macOS use PipeWire \u002F Core Audio — skip that step. Full notes: ",[18,220,223],{"href":221,"rel":222},"https:\u002F\u002Fgithub.com\u002Fmarcus-universe\u002FSoundNinja\u002Fblob\u002Fmain\u002Fdocs\u002Fbuild-from-source.md",[27],"build-from-source.md",[225,226,227],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":159,"searchDepth":177,"depth":177,"links":229},[230,231,232,233,234],{"id":33,"depth":177,"text":34},{"id":64,"depth":177,"text":65},{"id":85,"depth":177,"text":86},{"id":125,"depth":177,"text":126},{"id":136,"depth":177,"text":137},"Install SoundNinja on Windows, macOS, or Linux.","md",{},true,"\u002Finstallation",{"title":5,"description":235},"outLmMLibzOL_84ZfoLBrmphO4wVu0zaTr0u_DS4GUg",[243,370,505,654,1067,1202,1348,1570],{"id":244,"title":245,"body":246,"description":365,"extension":236,"meta":366,"navigation":238,"order":166,"path":367,"seo":368,"stem":250,"__hash__":369},"content_en\u002Foverview.md","Overview",{"type":7,"value":247,"toc":359},[248,251,254,257,260,264,278,282,321,325,334,338],[10,249,245],{"id":250},"overview",[14,252,253],{},"SoundNinja is an open-source soundboard for live streaming, chatting with friends, and podcast recording. It is built with Tauri v2 and Nuxt 4 so it stays light on RAM and disk.",[14,255,256],{},"The goal is simple: keep a huge sound library easy to scan, then play the right clip in milliseconds. The UI also works well as a dashboard in VR.",[14,258,259],{},"SoundNinja is still in early development. Features work, but not every platform is fully tested.",[31,261,263],{"id":262},"who-it-is-for","Who it is for",[36,265,266,269,272,275],{},[39,267,268],{},"Streamers who need instant sound cues",[39,270,271],{},"Friends who want a shared board for voice chat",[39,273,274],{},"Podcasters who record clips and drop them onto a board",[39,276,277],{},"Anyone who wants a customizable, local-first soundboard",[31,279,281],{"id":280},"what-you-can-do","What you can do",[36,283,284,287,290,293,296,299,302,305,308,315,318],{},[39,285,286],{},"Build a soundboard from your own audio files",[39,288,289],{},"Organize sounds in colored tabs, groups, tags, and search",[39,291,292],{},"Filter by tags (OR) and sort by name, date, duration, or size",[39,294,295],{},"Multi-select with marquee or Shift-range, then bulk color, move, or delete",[39,297,298],{},"Set per-sound volume from the context menu",[39,300,301],{},"Design the look with the Theme Creator",[39,303,304],{},"Record PC audio or a microphone in the Record Editor",[39,306,307],{},"Assign hotkeys to individual sounds",[39,309,310,311],{},"Trigger sounds from ",[18,312,314],{"href":313},"\u002Fdocs\u002Fremote-control","Bitfocus Companion",[39,316,317],{},"Import and export a full soundboard to share with others",[39,319,320],{},"Use GIFs or images on sound buttons — from a local folder library, GifSnap, or KLIPY",[31,322,324],{"id":323},"license","License",[14,326,327,328,333],{},"SoundNinja is free software under ",[18,329,332],{"href":330,"rel":331},"https:\u002F\u002Fgithub.com\u002Fmarcus-universe\u002FSoundNinja\u002Fblob\u002Fmain\u002FLICENSE",[27],"GPL-3.0",". Fork it, change it, share it.",[31,335,337],{"id":336},"next-steps","Next steps",[339,340,341,347,353],"ol",{},[39,342,343],{},[18,344,346],{"href":345},"\u002Fdocs\u002Finstallation","Install SoundNinja",[39,348,349],{},[18,350,352],{"href":351},"\u002Fdocs\u002Fadding-sounds","Add sounds",[39,354,355],{},[18,356,358],{"href":357},"\u002Fdocs\u002Forganizing-sounds","Organize your board",{"title":159,"searchDepth":177,"depth":177,"links":360},[361,362,363,364],{"id":262,"depth":177,"text":263},{"id":280,"depth":177,"text":281},{"id":323,"depth":177,"text":324},{"id":336,"depth":177,"text":337},"What SoundNinja is and what you can do with it.",{},"\u002Foverview",{"title":245,"description":365},"ciX-o6xn9WNflrd68yNckSQNZcLM9rkTqZf-UgjpGJc",{"id":4,"title":5,"body":371,"description":235,"extension":236,"meta":503,"navigation":238,"order":177,"path":239,"seo":504,"stem":12,"__hash__":241},{"type":7,"value":372,"toc":496},[373,375,382,384,398,400,402,412,414,416,432,438,440,444,446,454,472,482,494],[10,374,5],{"id":12},[14,376,16,377,22,379,29],{},[18,378,21],{"href":20},[18,380,28],{"href":25,"rel":381},[27],[31,383,34],{"id":33},[36,385,386,392,394,396],{},[39,387,388,45,390,49],{},[42,389,44],{},[42,391,48],{},[39,393,52],{},[39,395,55],{},[39,397,58],{},[14,399,61],{},[31,401,65],{"id":64},[36,403,404,408,410],{},[39,405,406,73],{},[42,407,72],{},[39,409,76],{},[39,411,79],{},[14,413,82],{},[31,415,86],{"id":85},[36,417,418,422,426,430],{},[39,419,420,94],{},[42,421,93],{},[39,423,424,100],{},[42,425,99],{},[39,427,103,428,108],{},[105,429,107],{},[39,431,111],{},[14,433,114,434,118,436,122],{},[105,435,117],{},[105,437,121],{},[31,439,126],{"id":125},[14,441,129,442,133],{},[42,443,132],{},[31,445,137],{"id":136},[14,447,140,448,146,451,152],{},[18,449,145],{"href":143,"rel":450},[27],[18,452,151],{"href":149,"rel":453},[27],[154,455,456],{"className":156,"code":157,"language":158,"meta":159,"style":159},[105,457,458,464],{"__ignoreMap":159},[163,459,460,462],{"class":165,"line":166},[163,461,170],{"class":169},[163,463,174],{"class":173},[163,465,466,468,470],{"class":165,"line":177},[163,467,170],{"class":169},[163,469,182],{"class":173},[163,471,185],{"class":173},[14,473,474,118,476,194,478,198,480,202],{},[105,475,190],{},[105,477,193],{},[105,479,197],{},[105,481,201],{},[14,483,484,208,486,214,489,218,491,202],{},[42,485,207],{},[18,487,213],{"href":211,"rel":488},[27],[105,490,217],{},[18,492,223],{"href":221,"rel":493},[27],[225,495,227],{},{"title":159,"searchDepth":177,"depth":177,"links":497},[498,499,500,501,502],{"id":33,"depth":177,"text":34},{"id":64,"depth":177,"text":65},{"id":85,"depth":177,"text":86},{"id":125,"depth":177,"text":126},{"id":136,"depth":177,"text":137},{},{"title":5,"description":235},{"id":506,"title":507,"body":508,"description":648,"extension":236,"meta":649,"navigation":238,"order":650,"path":651,"seo":652,"stem":512,"__hash__":653},"content_en\u002Fadding-sounds.md","Adding Sounds",{"type":7,"value":509,"toc":640},[510,513,516,520,539,543,575,579,598,602,616,619,623,630,634],[10,511,507],{"id":512},"adding-sounds",[14,514,515],{},"A board is empty until you add clips. SoundNinja can import files, whole folders, a recording, or a shared soundboard pack.",[31,517,519],{"id":518},"import-audio-files","Import audio files",[339,521,522,533,536],{},[39,523,524,525,528,529,532],{},"Open ",[42,526,527],{},"File → Import Audio Files",", or use ",[42,530,531],{},"Import"," in the navbar.",[39,534,535],{},"Pick one or more audio files.",[39,537,538],{},"Sounds land in the current tab.",[31,540,542],{"id":541},"import-folders","Import folders",[339,544,545,555,558],{},[39,546,524,547,550,551,554],{},[42,548,549],{},"File → Import Folders"," (or ",[42,552,553],{},"Import Folders"," in the navbar).",[39,556,557],{},"Add one or more folders. Drag to reorder them before you import.",[39,559,560,561],{},"Choose how they land:\n",[36,562,563,569],{},[39,564,565,568],{},[42,566,567],{},"Import as Tabs"," — each folder becomes its own tab",[39,570,571,574],{},[42,572,573],{},"Import to current Tab"," — every file goes into the active tab",[31,576,578],{"id":577},"record-a-clip","Record a clip",[14,580,581,582,586,587,590,591,45,594,597],{},"Open the ",[18,583,585],{"href":584},"\u002Fdocs\u002Frecording-editor","Record Editor"," from the ",[42,588,589],{},"Record"," button in the player bar. Capture, trim, then ",[42,592,593],{},"Import selected",[42,595,596],{},"Import all"," into the current tab or a tab you pick.",[31,599,601],{"id":600},"import-a-soundboard","Import a soundboard",[14,603,604,607,608,611,612,615],{},[42,605,606],{},"File → Import Soundboard"," loads a shared pack. Packs are a ",[105,609,610],{},".zip"," that contains ",[105,613,614],{},"project.sninja"," plus the sound files. After import, open the project and play.",[14,617,618],{},"You can also keep several projects (profiles). Use the project selector to switch boards.",[31,620,622],{"id":621},"relink-missing-files","Relink missing files",[14,624,625,626,629],{},"If audio files move on disk, SoundNinja shows a ",[42,627,628],{},"Missing sound files"," dialog. Pick a folder to search and relink the clips.",[31,631,633],{"id":632},"next","Next",[14,635,636,637,202],{},"Organize tabs, tags, filters, and hotkeys in ",[18,638,639],{"href":357},"Organizing Sounds",{"title":159,"searchDepth":177,"depth":177,"links":641},[642,643,644,645,646,647],{"id":518,"depth":177,"text":519},{"id":541,"depth":177,"text":542},{"id":577,"depth":177,"text":578},{"id":600,"depth":177,"text":601},{"id":621,"depth":177,"text":622},{"id":632,"depth":177,"text":633},"Import audio, folders, recordings, and shared soundboards.",{},3,"\u002Fadding-sounds",{"title":507,"description":648},"SBUvL_H4633CrDyNUKazqKwru4aq1hhgoH4_o99rBsE",{"id":655,"title":639,"body":656,"description":1061,"extension":236,"meta":1062,"navigation":238,"order":1063,"path":1064,"seo":1065,"stem":660,"__hash__":1066},"content_en\u002Forganizing-sounds.md",{"type":7,"value":657,"toc":1046},[658,661,668,672,699,706,710,713,727,734,740,744,754,759,791,795,801,805,838,844,848,851,878,881,885,899,903,909,930,946,953,957,967,970,974,981,991,997,1001,1009,1016,1043],[10,659,639],{"id":660},"organizing-sounds",[14,662,663,664,667],{},"SoundNinja is built for large libraries. Use ",[42,665,666],{},"tags and filters",", tabs, search, multi-select, and hotkeys so the clip you need is one click (or one key) away.",[31,669,671],{"id":670},"tabs","Tabs",[36,673,674,681,688],{},[39,675,676,677,680],{},"Add a tab with ",[42,678,679],{},"Add tab",". Give it a color so you can scan the bar fast.",[39,682,683,684,687],{},"The ",[42,685,686],{},"All"," view shows every sound across tabs.",[39,689,690,691,694,695,698],{},"A sound can belong to ",[42,692,693],{},"one or more tabs",". Right-click a sound and use ",[42,696,697],{},"Move to tab"," to assign it.",[14,700,701,702,705],{},"Tab transitions live in ",[42,703,704],{},"Settings → Main",": Slide, Fade, Buttons one by one, or None.",[31,707,709],{"id":708},"groups","Groups",[14,711,712],{},"Since v0.5.3, separators can become named groups:",[36,714,715,718,721,724],{},[39,716,717],{},"Add, rename, or remove a group from the context menu",[39,719,720],{},"Drag the group header — children move with it",[39,722,723],{},"Drop sounds in or out of a group",[39,725,726],{},"Set group border color, name color, and button alignment (or use the tab default)",[14,728,729,730,733],{},"You can still add a plain ",[42,731,732],{},"Separator"," if you only need a visual break.",[14,735,736,737,202],{},"Right-click empty board space to ",[42,738,739],{},"Add Group",[31,741,743],{"id":742},"tags-filters","Tags \u002F Filters",[14,745,746,747,750,751,753],{},"Tags cut across tabs. The slide-out ",[42,748,749],{},"Filter"," panel (sidebar ",[42,752,749],{},") is where you create them and turn them into a board filter.",[755,756,758],"h3",{"id":757},"create-and-edit-tags","Create and edit tags",[339,760,761,766,777,784],{},[39,762,524,763,765],{},[42,764,749],{}," in the sidebar.",[39,767,768,769,772,773,776],{},"Under ",[42,770,771],{},"Tags",", use ",[42,774,775],{},"Add tag"," — give it a name and a color.",[39,778,779,780,783],{},"Rename, recolor, or ",[42,781,782],{},"Delete tag"," from the same list.",[39,785,786,787,790],{},"If you see ",[42,788,789],{},"No tags yet",", add one here before you assign anything.",[755,792,794],{"id":793},"assign-tags-to-sounds","Assign tags to sounds",[14,796,797,798,800],{},"Right-click a sound → ",[42,799,771],{}," (checkboxes). A sound can have several tags. If none exist yet, the menu tells you to open the filter panel.",[755,802,804],{"id":803},"filter-the-board","Filter the board",[36,806,807,813,824,835],{},[39,808,809,810,202],{},"Toggle tags in the Filter panel, or as ",[42,811,812],{},"chips under the search bar",[39,814,815,816,819,820,823],{},"Matching is ",[42,817,818],{},"OR",": a sound stays visible if it has ",[42,821,822],{},"any"," selected tag.",[39,825,826,827,830,831,834],{},"The navbar ",[42,828,829],{},"Search"," field ",[42,832,833],{},"ANDs"," with the active tag filter (type + tags together).",[39,836,837],{},"Turn chips off (or clear the filter) to show the full tab again.",[14,839,840,841,202],{},"Colored tag names can appear on buttons. Toggle them in ",[42,842,843],{},"Settings → Behavior → Show tag badges",[31,845,847],{"id":846},"sort","Sort",[14,849,850],{},"Open the filter panel and pick a sort mode:",[36,852,853,859],{},[39,854,855,858],{},[42,856,857],{},"User defined"," — your tab order, with groups visible",[39,860,861,118,864,118,867,194,870,873,874,877],{},[42,862,863],{},"Name",[42,865,866],{},"Added time",[42,868,869],{},"Play time",[42,871,872],{},"File size"," — a flat sorted list; ",[42,875,876],{},"groups are hidden"," in these modes",[14,879,880],{},"Duration sort may warm duration metadata the first time you use it.",[31,882,884],{"id":883},"reorder","Reorder",[14,886,887,888,891,892,895,896,898],{},"Turn on drag-and-drop in ",[42,889,890],{},"Settings → Behavior"," (",[42,893,894],{},"Allow reorder","). Then drag sounds and groups into place. Reorder applies in ",[42,897,857],{}," sort.",[31,900,902],{"id":901},"multi-select","Multi-select",[14,904,905,906,908],{},"Turn on ",[42,907,902],{}," in the navbar, then:",[36,910,911,914,920,927],{},[39,912,913],{},"Click a sound to toggle it",[39,915,916,919],{},[42,917,918],{},"Shift+click"," to select a range from the last anchor",[39,921,922,923,926],{},"Drag a ",[42,924,925],{},"marquee"," on empty board space",[39,928,929],{},"Click empty board (or outside) to clear the selection",[14,931,932,933,118,936,118,939,942,943,202],{},"A bulk bar appears with the count, plus ",[42,934,935],{},"Color",[42,937,938],{},"Move to tab…",[42,940,941],{},"Delete",", and ",[42,944,945],{},"Done",[14,947,948,949,952],{},"In multi-select, each button shows an ",[42,950,951],{},"8-character ID chip",". Right-click the chip to copy it.",[31,954,956],{"id":955},"per-sound-volume","Per-sound volume",[14,958,797,959,962,963,966],{},[42,960,961],{},"Volume",". Drag the slider from 0% to 100%. ",[42,964,965],{},"Double-click"," the slider to reset to 100%.",[14,968,969],{},"This stacks with the master output volume in Settings.",[31,971,973],{"id":972},"hotkeys-and-sound-ids","Hotkeys and sound IDs",[14,975,976,977,980],{},"Every sound has an 8-character ID. Copy it from the button context menu (",[42,978,979],{},"Copy ID",") or the multi-select ID chip.",[14,982,524,983,986,987,990],{},[42,984,985],{},"Settings → Hotkeys"," to bind a key to a sound ID. Global hotkeys are optional. ",[42,988,989],{},"Assign hotkey"," on the context menu jumps there with the ID prefilled.",[14,992,993,994,996],{},"The same ID is what ",[18,995,314],{"href":313}," uses to trigger a clip.",[31,998,1000],{"id":999},"background-images-and-colors","Background images and colors",[14,1002,1003,1004,1008],{},"Right-click a sound to set per-button colors or a background image. That is separate from the ",[18,1005,1007],{"href":1006},"\u002Fdocs\u002Ftheme-editor","Theme Creator",", which styles the whole board.",[14,1010,1011,1012,1015],{},"The picker is a ",[42,1013,1014],{},"Background image"," dialog (PNG, JPEG, GIF, WebP):",[36,1017,1018,1024,1034],{},[39,1019,1020,1023],{},[42,1021,1022],{},"Local files"," — add folders, pick a single file, search filenames, preview the grid, or remove a folder from the library",[39,1025,1026,1029,1030,202],{},[42,1027,1028],{},"GifSnap"," — search online GIFs with no API key. The first visit asks you to accept GifSnap requests; search results are cached to cut traffic. See ",[18,1031,1028],{"href":1032,"rel":1033},"https:\u002F\u002Fgifsnap.com",[27],[39,1035,1036,1039,1040,1042],{},[42,1037,1038],{},"KLIPY"," — search online GIFs. Set your own API key in ",[42,1041,890],{},". The key is not stored in project files.",[14,1044,1045],{},"After you pick an image, pan and crop it on the button.",{"title":159,"searchDepth":177,"depth":177,"links":1047},[1048,1049,1050,1055,1056,1057,1058,1059,1060],{"id":670,"depth":177,"text":671},{"id":708,"depth":177,"text":709},{"id":742,"depth":177,"text":743,"children":1051},[1052,1053,1054],{"id":757,"depth":650,"text":758},{"id":793,"depth":650,"text":794},{"id":803,"depth":650,"text":804},{"id":846,"depth":177,"text":847},{"id":883,"depth":177,"text":884},{"id":901,"depth":177,"text":902},{"id":955,"depth":177,"text":956},{"id":972,"depth":177,"text":973},{"id":999,"depth":177,"text":1000},"Tags, filters, tabs, groups, sort, multi-select, volume, and hotkeys.",{},4,"\u002Forganizing-sounds",{"title":639,"description":1061},"nLl5gKMgo_ujNsmT6-aaMuxebqJtuEKMBGOijwuoYiw",{"id":1068,"title":1069,"body":1070,"description":1196,"extension":236,"meta":1197,"navigation":238,"order":1198,"path":1199,"seo":1200,"stem":1074,"__hash__":1201},"content_en\u002Ftheme-editor.md","Theme Editor",{"type":7,"value":1071,"toc":1190},[1072,1075,1081,1085,1112,1115,1119,1133,1137,1163,1166,1170,1176],[10,1073,1069],{"id":1074},"theme-editor",[14,1076,1077,1078,202],{},"The Theme Creator is the full visual editor for your board. Open it from ",[42,1079,1080],{},"Settings → Main → Theme Creator",[31,1082,1084],{"id":1083},"three-tabs","Three tabs",[339,1086,1087,1101,1107],{},[39,1088,1089,1092,1093,1096,1097,1100],{},[42,1090,1091],{},"General"," — theme name, shared colors, and font uploads (",[105,1094,1095],{},".ttf"," \u002F ",[105,1098,1099],{},".otf",")",[39,1102,1103,1106],{},[42,1104,1105],{},"Buttons"," — sound button colors, type, layout, and GIF overlay",[39,1108,1109,1111],{},[42,1110,671],{}," — tab bar colors, type, and border thickness",[14,1113,1114],{},"A live preview shows tabs and buttons as you edit.",[31,1116,1118],{"id":1117},"what-you-can-change","What you can change",[36,1120,1121,1124,1127,1130],{},[39,1122,1123],{},"Primary and accent colors, backgrounds, button colors, tab colors",[39,1125,1126],{},"Button and tab font family and size",[39,1128,1129],{},"Button width, radius, border width, gaps, and padding",[39,1131,1132],{},"GIF overlay opacity (normal and hover)",[31,1134,1136],{"id":1135},"save-and-share","Save and share",[36,1138,1139,1145,1151,1157],{},[39,1140,1141,1144],{},[42,1142,1143],{},"Export .css"," — write a theme file you can back up or send to a friend",[39,1146,1147,1150],{},[42,1148,1149],{},"Add to Themes"," — save the file into your Themes folder and apply it",[39,1152,1153,1156],{},[42,1154,1155],{},"Import .css"," — load a built-in preset or a saved theme",[39,1158,1159,1162],{},[42,1160,1161],{},"Reset"," — return to SoundNinja defaults",[14,1164,1165],{},"If you close the window with unsaved changes, SoundNinja asks you to save first.",[31,1167,1169],{"id":1168},"without-the-full-editor","Without the full editor",[14,1171,1172,1173,1175],{},"In ",[42,1174,704],{}," you can still:",[36,1177,1178,1181,1187],{},[39,1179,1180],{},"Pick a theme from the list",[39,1182,1183,1184,1100],{},"Edit CSS variables live (",[42,1185,1186],{},"Custom CSS",[39,1188,1189],{},"Import a theme file into the Themes folder",{"title":159,"searchDepth":177,"depth":177,"links":1191},[1192,1193,1194,1195],{"id":1083,"depth":177,"text":1084},{"id":1117,"depth":177,"text":1118},{"id":1135,"depth":177,"text":1136},{"id":1168,"depth":177,"text":1169},"Design colors, fonts, buttons, and tabs in the Theme Creator.",{},5,"\u002Ftheme-editor",{"title":1069,"description":1196},"zpMjxENa49aUipEX7TBxcqrbaZNweyJ019KsLAMJeoc",{"id":1203,"title":1204,"body":1205,"description":1342,"extension":236,"meta":1343,"navigation":238,"order":1344,"path":1345,"seo":1346,"stem":1209,"__hash__":1347},"content_en\u002Frecording-editor.md","Recording Editor",{"type":7,"value":1206,"toc":1336},[1207,1210,1216,1220,1226,1246,1249,1253,1278,1282,1297,1301,1315,1326],[10,1208,1204],{"id":1209},"recording-editor",[14,1211,1212,1213,1215],{},"Record a clip inside SoundNinja, trim it, then import it onto a tab. Open the editor with the ",[42,1214,589],{}," button in the player bar.",[31,1217,1219],{"id":1218},"choose-an-input","Choose an input",[14,1221,1172,1222,1225],{},[42,1223,1224],{},"Settings → Audio",":",[36,1227,1228,1234,1240],{},[39,1229,1230,1233],{},[42,1231,1232],{},"Input Devices"," — microphone",[39,1235,1236,1239],{},[42,1237,1238],{},"Output Devices (PC Audio)"," — loopback of what your PC is playing",[39,1241,1242,1245],{},[42,1243,1244],{},"Input volume"," — capture gain from 0% to 200%",[14,1247,1248],{},"The Record button uses the device you pick here.",[31,1250,1252],{"id":1251},"edit-the-take","Edit the take",[36,1254,1255,1258,1261,1269,1272,1275],{},[39,1256,1257],{},"Record and stop",[39,1259,1260],{},"Watch the input level meter",[39,1262,1263,45,1266],{},[42,1264,1265],{},"Normalize",[42,1267,1268],{},"Noise Cancelation",[39,1270,1271],{},"Trim the whole clip, trim to a selection, or delete a selection",[39,1273,1274],{},"Undo \u002F redo",[39,1276,1277],{},"Zoom in and out",[31,1279,1281],{"id":1280},"stage-and-import","Stage and import",[339,1283,1284,1287,1290],{},[39,1285,1286],{},"Add the selection or the full track to the staging list.",[39,1288,1289],{},"The list starts empty: record, edit, then add a clip.",[39,1291,1292,45,1294,1296],{},[42,1293,593],{},[42,1295,596],{}," into the current tab or a tab you choose.",[31,1298,1300],{"id":1299},"stem-separation-optional","Stem separation (optional)",[14,1302,1303,1304,1307,1308,45,1311,1314],{},"Official Windows, macOS, and Linux release builds ship the ",[42,1305,1306],{},"stems"," feature. The Record Editor can keep ",[42,1309,1310],{},"vocals",[42,1312,1313],{},"music"," using BS-RoFormer.",[14,1316,1317,1318,1321,1322,1325],{},"The model is about 158 MB and is ",[42,1319,1320],{},"not"," bundled with the installer. Download it from ",[42,1323,1324],{},"Settings → Stem Separation",", or accept the first-run prompt. The Windows installer can also offer to download the model on first launch.",[14,1327,1328,1329,1096,1332,1335],{},"Custom source builds need an extra flag (",[105,1330,1331],{},"tauri:serve:stems",[105,1333,1334],{},"tauri:build:stems",").",{"title":159,"searchDepth":177,"depth":177,"links":1337},[1338,1339,1340,1341],{"id":1218,"depth":177,"text":1219},{"id":1251,"depth":177,"text":1252},{"id":1280,"depth":177,"text":1281},{"id":1299,"depth":177,"text":1300},"Capture mic or PC audio, edit the clip, and drop it on your board.",{},6,"\u002Frecording-editor",{"title":1204,"description":1342},"WLz7ozLeboeLKawRkz53eUj5KSVCj4xkPMhYg5P_MIo",{"id":1349,"title":1350,"body":1351,"description":1564,"extension":236,"meta":1565,"navigation":238,"order":1566,"path":1567,"seo":1568,"stem":1355,"__hash__":1569},"content_en\u002Fremote-control.md","Remote Control",{"type":7,"value":1352,"toc":1557},[1353,1356,1359,1363,1392,1395,1398,1433,1437,1457,1460,1464,1496,1500,1506],[10,1354,1350],{"id":1355},"remote-control",[14,1357,1358],{},"SoundNinja can listen on your local network so Bitfocus Companion (or any HTTP\u002FWebSocket client) can play and stop sounds.",[31,1360,1362],{"id":1361},"enable-the-remote-server","Enable the remote server",[339,1364,1365,1370,1376,1382],{},[39,1366,524,1367,202],{},[42,1368,1369],{},"Settings → Remote",[39,1371,1372,1373,202],{},"Enable the remote server. Default port is ",[42,1374,1375],{},"7331",[39,1377,1378,1379,202],{},"Optional: set a token. Clients must send it as a Bearer token or ",[105,1380,1381],{},"?token=",[39,1383,1384,1385,1388,1389,202],{},"Copy the ",[105,1386,1387],{},"http:\u002F\u002FIP:PORT"," URL, or copy the system IP from ",[42,1390,1391],{},"Settings → About",[14,1393,1394],{},"Windows may show a firewall prompt the first time the server starts. Allow private-network access.",[31,1396,314],{"id":1397},"bitfocus-companion",[339,1399,1400,1407,1416,1426],{},[39,1401,1402,1403,202],{},"Install ",[18,1404,314],{"href":1405,"rel":1406},"https:\u002F\u002Fbitfocus.io\u002Fcompanion",[27],[39,1408,1409,1410,1415],{},"Download ",[18,1411,1414],{"href":1412,"rel":1413},"https:\u002F\u002Fgithub.com\u002Fmarcus-universe\u002Fcompanion-module-soundninja\u002Freleases\u002Flatest",[27],"SoundNinja-Companion.tgz",". There is no Companion Store package yet.",[39,1417,1418,1419,1422,1423,202],{},"In Companion: ",[42,1420,1421],{},"Modules → Load module package"," and pick the ",[105,1424,1425],{},".tgz",[39,1427,1428,1429,1432],{},"Add a ",[42,1430,1431],{},"Sound Ninja"," connection. Paste the PC IP, port, and token if you set one.",[31,1434,1436],{"id":1435},"actions","Actions",[36,1438,1439,1445,1451],{},[39,1440,1441,1444],{},[42,1442,1443],{},"Trigger Sound"," — pick from the live dropdown, or type an 8-character sound ID (Companion variables work)",[39,1446,1447,1450],{},[42,1448,1449],{},"Stop Sound"," — stop one playing sound by ID",[39,1452,1453,1456],{},[42,1454,1455],{},"Stop All"," — stop every playing sound",[14,1458,1459],{},"Copy a sound ID in SoundNinja from the button context menu or the multi-select ID chip.",[31,1461,1463],{"id":1462},"feedbacks-and-variables","Feedbacks and variables",[36,1465,1466,1472,1484,1490],{},[39,1467,1468,1471],{},[42,1469,1470],{},"Sound Playing"," — true while that sound ID is active (use it for button color)",[39,1473,1474,1477,1478,1096,1481],{},[105,1475,1476],{},"$(soundninja:connected)"," — ",[105,1479,1480],{},"true",[105,1482,1483],{},"false",[39,1485,1486,1489],{},[105,1487,1488],{},"$(soundninja:playing_count)"," — how many sounds are playing",[39,1491,1492,1495],{},[105,1493,1494],{},"$(soundninja:last_triggered)"," — last triggered sound ID",[31,1497,1499],{"id":1498},"http-api-advanced","HTTP API (advanced)",[14,1501,1502,1503],{},"Base path: ",[105,1504,1505],{},"\u002Fapi\u002Fv1",[36,1507,1508,1514,1520,1526,1536,1542,1551],{},[39,1509,1510,1513],{},[105,1511,1512],{},"GET \u002Finfo"," — app name, version, protocol, whether a token is required",[39,1515,1516,1519],{},[105,1517,1518],{},"GET \u002Fsounds"," — sound list (id, name, tabs, active)",[39,1521,1522,1525],{},[105,1523,1524],{},"GET \u002Fstate"," — sounds plus currently playing IDs",[39,1527,1528,1531,1532,1535],{},[105,1529,1530],{},"POST \u002Ftrigger"," with ",[105,1533,1534],{},"{ \"id\" }"," — play a sound",[39,1537,1538,1541],{},[105,1539,1540],{},"GET \u002Ftrigger\u002F:id"," — play (easy to test in a browser)",[39,1543,1544,1547,1548,1550],{},[105,1545,1546],{},"POST \u002Fstop"," with optional ",[105,1549,1534],{}," — stop one sound or all",[39,1552,1553,1556],{},[105,1554,1555],{},"GET \u002Fws"," — live state; send trigger\u002Fstop commands inbound",{"title":159,"searchDepth":177,"depth":177,"links":1558},[1559,1560,1561,1562,1563],{"id":1361,"depth":177,"text":1362},{"id":1397,"depth":177,"text":314},{"id":1435,"depth":177,"text":1436},{"id":1462,"depth":177,"text":1463},{"id":1498,"depth":177,"text":1499},"Trigger SoundNinja from Bitfocus Companion over the local network.",{},7,"\u002Fremote-control",{"title":1350,"description":1564},"G5BV4-hARZULMfsuLaTyczPL2Qt2QKaPmATZuk65Lik",{"id":1571,"title":1572,"body":1573,"description":1662,"extension":236,"meta":1663,"navigation":238,"order":1664,"path":1665,"seo":1666,"stem":1577,"__hash__":1667},"content_en\u002Fsupport.md","Support",{"type":7,"value":1574,"toc":1655},[1575,1578,1581,1585,1588,1595,1603,1607,1614,1616,1629,1633,1644,1648],[10,1576,1572],{"id":1577},"support",[14,1579,1580],{},"SoundNinja is a community project in early beta. The fastest way to get help is GitHub.",[31,1582,1584],{"id":1583},"report-a-bug-or-ask-a-question","Report a bug or ask a question",[14,1586,1587],{},"Open an issue on GitHub:",[14,1589,1590],{},[18,1591,1594],{"href":1592,"rel":1593},"https:\u002F\u002Fgithub.com\u002Fmarcus-universe\u002FSoundNinja\u002Fissues",[27],"github.com\u002Fmarcus-universe\u002FSoundNinja\u002Fissues",[14,1596,1597,1598,45,1600,1602],{},"Include your OS, SoundNinja version (",[42,1599,132],{},[42,1601,1391],{},"), and steps to reproduce.",[31,1604,1606],{"id":1605},"email","Email",[14,1608,1609,1610],{},"Maintainer contact: ",[18,1611,1613],{"href":1612},"mailto:contact@marcus-universe.de","contact@marcus-universe.de",[31,1615,126],{"id":125},[14,1617,1618,1619,1621,1622,1624,1625,202],{},"In the app, use ",[42,1620,132],{},". New builds also appear on the ",[18,1623,21],{"href":20}," and on ",[18,1626,28],{"href":1627,"rel":1628},"https:\u002F\u002Fgithub.com\u002Fmarcus-universe\u002FSoundNinja\u002Freleases",[27],[31,1630,1632],{"id":1631},"contribute","Contribute",[14,1634,1635,1636,1640,1641,202],{},"Pull requests are welcome. The app repo is ",[18,1637,1639],{"href":143,"rel":1638},[27],"github.com\u002Fmarcus-universe\u002FSoundNinja",". The project is licensed under ",[18,1642,332],{"href":330,"rel":1643},[27],[31,1645,1647],{"id":1646},"legal","Legal",[14,1649,1650,1651,202],{},"Imprint and contact details: ",[18,1652,1654],{"href":1653},"\u002Fimpressum","Impressum",{"title":159,"searchDepth":177,"depth":177,"links":1656},[1657,1658,1659,1660,1661],{"id":1583,"depth":177,"text":1584},{"id":1605,"depth":177,"text":1606},{"id":125,"depth":177,"text":126},{"id":1631,"depth":177,"text":1632},{"id":1646,"depth":177,"text":1647},"Where to get help and report bugs.",{},8,"\u002Fsupport",{"title":1572,"description":1662},"jRExoghmWgAfTmnmgqLhtQedAnIjqFIbv0_OahYrhTc",1792346514686]