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