{"id":1394,"date":"2026-08-22T16:31:13","date_gmt":"2026-08-22T16:31:13","guid":{"rendered":"https:\/\/burstingrainbow.com\/index.php\/experiment\/sonic-portrait-booth\/"},"modified":"2026-08-22T16:32:16","modified_gmt":"2026-08-22T16:32:16","slug":"sonic-portrait-booth","status":"publish","type":"experiment","link":"https:\/\/burstingrainbow.com\/index.php\/experiment\/sonic-portrait-booth\/","title":{"rendered":"Sonic Portrait Booth"},"content":{"rendered":"<p><strong>Sonic Portrait Booth<\/strong> turns a short sound into a browser-made audiovisual self-portrait. Speak, hum, whistle, or use fallback mode; the microphone signal shapes the artwork locally and is not recorded or uploaded.<\/p>\n<div class=\"spb-lab\" data-sonic-portrait>\n  <div class=\"spb-shell\">\n    <div class=\"spb-copy\">\n      <p class=\"spb-kicker\">Browser audio portrait<\/p>\n      <h3>Make a sound. Become an image.<\/h3>\n      <p>A 15-second audiovisual self-portrait made from the way you sound, not the words you say.<\/p>\n      <p class=\"spb-privacy\">Your microphone is used only in this browser session to shape the artwork. Nothing is recorded or uploaded.<\/p>\n    <\/div>\n    <div class=\"spb-status\" aria-live=\"polite\">\n      <span data-spb-state>Ready<\/span>\n      <strong data-spb-time>15.0<\/strong>\n    <\/div>\n  <\/div>\n\n  <div class=\"spb-stage-wrap\">\n    <canvas class=\"spb-canvas\" data-spb-canvas width=\"1200\" height=\"760\" aria-label=\"Sonic portrait canvas\"><\/canvas>\n    <div class=\"spb-meter\" aria-hidden=\"true\"><span data-spb-meter><\/span><\/div>\n    <div class=\"spb-empty\" data-spb-empty>\n      <strong>Begin with a sound<\/strong>\n      <span>Speak, hum, whistle, clap, or use fallback mode.<\/span>\n    <\/div>\n  <\/div>\n\n  <div class=\"spb-controls\">\n    <button type=\"button\" class=\"spb-primary\" data-spb-begin>Begin<\/button>\n    <button type=\"button\" data-spb-stop disabled>Stop \/ make portrait<\/button>\n    <button type=\"button\" data-spb-reset>Reset<\/button>\n    <button type=\"button\" data-spb-download disabled>Download PNG<\/button>\n    <button type=\"button\" data-spb-mute aria-pressed=\"false\">Sound bed on<\/button>\n  <\/div>\n\n  <div class=\"spb-fallback\">\n    <label for=\"spb-fallback-level\">No mic? Paint with energy.<\/label>\n    <input id=\"spb-fallback-level\" data-spb-fallback type=\"range\" min=\"0\" max=\"100\" value=\"0\">\n  <\/div>\n\n  <div class=\"spb-readout\">\n    <div><span>Volume<\/span><strong data-spb-vol>0.00<\/strong><\/div>\n    <div><span>Low<\/span><strong data-spb-low>0.00<\/strong><\/div>\n    <div><span>Bright<\/span><strong data-spb-high>0.00<\/strong><\/div>\n    <div><span>Rhythm<\/span><strong data-spb-rhythm>0.00<\/strong><\/div>\n  <\/div>\n\n  <div class=\"spb-result\" data-spb-result hidden>\n    <p class=\"spb-title\" data-spb-title>Portrait No. 001 - Waiting Signal<\/p>\n    <p data-spb-note>A quiet field, waiting for a signal.<\/p>\n  <\/div>\n<\/div>\n    \n","protected":false},"excerpt":{"rendered":"<p>A browser-based audiovisual self-portrait that turns a visitor sound into a local, generative canvas image.<\/p>\n","protected":false},"featured_media":1393,"template":"","experiment_tool":[31,32,47,33],"experiment_type":[26,43,23,24],"class_list":["post-1394","experiment","type-experiment","status-publish","has-post-thumbnail","hentry","experiment_tool-codex","experiment_tool-novamira","experiment_tool-web-audio-api","experiment_tool-wordpress","experiment_type-code","experiment_type-motion","experiment_type-music","experiment_type-web"],"acpt":{"meta":[{"meta_box":"details","meta_fields":[{"name":"short_description","type":"Text","options":[],"value":null,"default":"","required":false,"showInAdmin":false,"advancedOptions":[]},{"name":"external_url","type":"Url","options":[],"value":null,"default":"","required":false,"showInAdmin":false,"advancedOptions":[]},{"name":"featured_experiment","type":"Toggle","options":[],"value":null,"default":"","required":false,"showInAdmin":false,"advancedOptions":[]},{"name":"display_style","type":"Select","options":[{"label":"Standard","value":"standard"},{"label":"Wide","value":"wide"},{"label":"Tall","value":"tall"},{"label":"Featured","value":"featured"}],"value":null,"default":"standard","required":false,"showInAdmin":false,"advancedOptions":[]}]}]},"_links":{"self":[{"href":"https:\/\/burstingrainbow.com\/index.php\/wp-json\/wp\/v2\/experiment\/1394","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/burstingrainbow.com\/index.php\/wp-json\/wp\/v2\/experiment"}],"about":[{"href":"https:\/\/burstingrainbow.com\/index.php\/wp-json\/wp\/v2\/types\/experiment"}],"version-history":[{"count":1,"href":"https:\/\/burstingrainbow.com\/index.php\/wp-json\/wp\/v2\/experiment\/1394\/revisions"}],"predecessor-version":[{"id":1395,"href":"https:\/\/burstingrainbow.com\/index.php\/wp-json\/wp\/v2\/experiment\/1394\/revisions\/1395"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/burstingrainbow.com\/index.php\/wp-json\/wp\/v2\/media\/1393"}],"wp:attachment":[{"href":"https:\/\/burstingrainbow.com\/index.php\/wp-json\/wp\/v2\/media?parent=1394"}],"wp:term":[{"taxonomy":"experiment_tool","embeddable":true,"href":"https:\/\/burstingrainbow.com\/index.php\/wp-json\/wp\/v2\/experiment_tool?post=1394"},{"taxonomy":"experiment_type","embeddable":true,"href":"https:\/\/burstingrainbow.com\/index.php\/wp-json\/wp\/v2\/experiment_type?post=1394"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}