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