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