Skip to content
1 viewer
Graph Explorer
Vertex

SitePage

One durable vertex in the hypergraph: its properties, and every edge incident to it.

Kind
SitePage
Id
site/page/field-to-s…
Props
15
Edges
0
site/page/field-to-soundscape/planner

Properties

KeyValue
body<div class="pilot"><div class="wrap"><article class="toolpage"><div class="eyebrow">FREE TOOL / FIELD TO SOUNDSCAPE</div><h1>Leave with a plan.<br>Return with a piece.</h1><p class="lede">Plan one soundwalk and a three-minute arrangement. Download a project brief you can take with you.</p><div class="planner-panel" data-planner="sound"><h2 style="font-size:2rem">Your soundwalk.</h2><div class="planner-grid"><label class="" for="project-name">Project name<input type="text" id="project-name" value="A courtyard in motion" maxlength="120"></label><label class="" for="walk-place">Place / setting<input type="text" id="walk-place" value="A place where recording is welcome" maxlength="160"></label><label class="" for="walk-minutes">Soundwalk length · minutes<input type="number" id="walk-minutes" value="20" min="1" max="240" step="1"></label><label class="" for="device">Recording device<input type="text" id="device" value="Phone or recorder" maxlength="120"></label><label for="intention">What do you want to notice?<textarea id="intention" maxlength="1200">Listen for the contrast between a steady texture and small changes.</textarea></label><label for="boundaries">Where is recording welcome, and what will you avoid?<textarea id="boundaries" maxlength="1200">Choose a suitable place and keep clear of private conversations.</textarea></label></div><h2 style="font-size:2rem;margin-top:36px">Three roles to collect.</h2><div class="planner-grid"><label for="bed">Bed · a continuous texture<textarea id="bed" maxlength="1200">A steady environmental texture to hold the scene together.</textarea></label><label for="detail">Detail · something the listener can follow<textarea id="detail" maxlength="1200">A small repeated event with a clear shape.</textarea></label><label for="change">Change · an arrival, departure or contrast<textarea id="change" maxlength="1200">An event that changes the sense of the place.</textarea></label></div><h2 style="font-size:2rem;margin-top:36px">Shape three minutes.</h2><div class="planner-grid"><label class="" for="opening-seconds">Opening · seconds<input type="number" id="opening-seconds" value="30" min="1" max="180" step="1"></label><label for="opening-note">Opening intention<textarea id="opening-note" maxlength="1200">Introduce the bed and leave room to recognize it.</textarea></label><label class="" for="development-seconds">Development · seconds<input type="number" id="development-seconds" value="110" min="1" max="180" step="1"></label><label for="development-note">Development intention<textarea id="development-note" maxlength="1200">Bring the detail forward and try one change in perspective.</textarea></label><label class="" for="ending-seconds">Ending · seconds<input type="number" id="ending-seconds" value="40" min="1" max="180" step="1"></label><label for="ending-note">Ending intention<textarea id="ending-note" maxlength="1200">Let one recognizable texture remain, then finish deliberately.</textarea></label></div><div class="metric-grid"><div class="metric"><span>Planned piece length</span><output id="duration-total" aria-live="polite">—</output></div></div><p class="small" id="duration-note"></p><div class="planner-grid"><label for="transition">One transition to try<textarea id="transition" maxlength="1200">Overlap two textures and compare a short fade with a longer fade.</textarea></label><label for="review-question">Final listening question<textarea id="review-question" maxlength="1200">Can I hear an opening, a meaningful change and an intentional ending?</textarea></label></div><p id="planner-errors" class="planner-error" role="status" hidden></p><div class="actions"><button class="btn" type="button" id="export-plan">Download my plan</button><button class="btn secondary" type="button" id="reset-plan">Reload example</button></div><p class="small" style="margin-top:18px">Your entries stay in this tab. Download a copy before closing or reloading.</p></div><section class="section"><h2>Use the plan lightly.</h2><p>The brief gives you something to listen for. Let the recordings change the plan when they offer a more interesting direction. Keep a source log so you can connect each sound to the place and moment you recorded it.</p><p>The three section lengths describe a project target, not a rule for every piece. Recording time and final listening time are different: a 20-minute soundwalk can become a three-minute arrangement.</p></section><div class="tool-links"><a href="/course">Work through the free exercises</a><a href="/guide">See the PDF contents &amp; sample</a></div></article></div></div><script>(() => { 'use strict'; const root = document.querySelector('[data-planner]'); if (!root) return; const get = id => root.querySelector('#' + id); const value = id => get(id).value.trim(); const number = id => { const s=value(id); return s === '' ? NaN : Number(s); }; const whole = n => Number.isFinite(n) && Number.isInteger(n) && n >= 0 && n <= 100000; const money = n => Number.isFinite(n) && n >= 0 && n <= 1000000 && Math.abs(n*100-Math.round(n*100)) < 0.000001; const usd = n => new Intl.NumberFormat('en-US',{style:'currency',currency:'USD'}).format(n); const show = (id, text) => { get(id).textContent = text; }; const download = (text, name, type) => { const url=URL.createObjectURL(new Blob([text],{type})); const a=document.createElement('a'); a.href=url; a.download=name; a.click(); setTimeout(()=>URL.revokeObjectURL(url),1000); }; const csvCell = v => { let s=String(v); if (typeof v!=='number' && /^[=+\-@\t\r]/.test(s)) s="'"+s; return '"'+s.replaceAll('"','""')+'"'; }; let exportText='', exportCsv=''; function update() { const errors=[]; if (root.dataset.planner==='pottery') { const rows=[1,2,3].map(i=>({name:value('name-'+i),stock:number('stock-'+i),sold:number('sold-'+i),price:number('price-'+i),cost:number('cost-'+i)})); const fixed=number('fixed-cost'), labor=number('labor-cost'); for (const [index,r] of rows.entries()) { if(!r.name) errors.push('Give item '+(index+1)+' a name.'); if(!whole(r.stock)||!whole(r.sold)) errors.push('Stock and sold quantities must be whole numbers from 0 to 100,000.'); else if(r.sold>r.stock) errors.push(r.name+': sold quantity cannot exceed starting stock.'); if(!money(r.price)||!money(r.cost)) errors.push('Prices and unit costs must be amounts from 0 to 1,000,000 USD with at most two decimal places.'); } if(!money(fixed)||!money(labor)) errors.push('Event costs and labor allowance must be amounts from 0 to 1,000,000 USD with at most two decimal places.'); if(!errors.length) { const total=k=>rows.reduce((sum,r)=>sum+r[k],0); const revenueCents=rows.reduce((sum,r)=>sum+r.sold*Math.round(r.price*100),0); const variableCents=rows.reduce((sum,r)=>sum+r.sold*Math.round(r.cost*100),0); const revenue=revenueCents/100, variable=variableCents/100; const contribution=(revenueCents-variableCents)/100, afterEvent=(revenueCents-variableCents-Math.round(fixed*100))/100, afterLabor=(revenueCents-variableCents-Math.round(fixed*100)-Math.round(labor*100))/100; show('revenue',usd(revenue)); show('variable-cost',usd(variable)); show('contribution',usd(contribution)); show('after-event',usd(afterEvent)); show('after-labor',usd(afterLabor)); show('stock-left',String(total('stock')-total('sold'))); show('mix-note',total('sold')+' units modeled as sold out of '+total('stock')+' starting units. Unsold production costs, taxes and any omitted costs are not included in this result.'); const csvRows=[['Item','Starting units','Modeled sold units','Price USD','Included variable cost per sold unit USD','Revenue USD','Included variable costs USD','Units remaining'],...rows.map(r=>[r.name,r.stock,r.sold,r.price,r.cost,Number((r.sold*r.price).toFixed(2)),Number((r.sold*r.cost).toFixed(2)),r.stock-r.sold]),[],['Included event costs USD',fixed],['Optional owner labor allowance USD',labor],['Revenue USD',revenue],['Included variable costs USD',variable],['Contribution before event costs USD',contribution],['After included event costs USD',afterEvent],['After optional labor allowance USD',afterLabor]]; exportCsv=csvRows.map(r=>r.map(csvCell).join(',')).join('\r\n'); exportText=['FIRST POTTERY MARKET — SCENARIO','Currency: USD','This is a planning scenario, not a record of actual sales.',...rows.map(r=>r.name+': '+r.stock+' starting / '+r.sold+' modeled sold / '+usd(r.price)+' price / '+usd(r.cost)+' included variable cost per sold unit'),'Revenue: '+usd(revenue),'Included variable costs: '+usd(variable),'Contribution before event costs: '+usd(contribution),'Included event costs: '+usd(fixed),'After included event costs: '+usd(afterEvent),'Optional owner labor allowance: '+usd(labor),'After optional labor allowance: '+usd(afterLabor),'Unsold production costs, taxes and omitted costs are not included.','Next observation: '+value('next-observation')].join('\n'); } } else { const walk=number('walk-minutes'), opening=number('opening-seconds'), development=number('development-seconds'), ending=number('ending-seconds'); if(!value('project-name')) errors.push('Add a project name.'); if(!Number.isInteger(walk)||walk<1||walk>240) errors.push('Soundwalk length must be a whole number from 1 to 240 minutes.'); if(![opening,development,ending].every(n=>Number.isInteger(n)&&n>=1&&n<=180)) errors.push('Each section needs a whole number of seconds from 1 to 180.'); const total=opening+development+ending; show('duration-total',Number.isFinite(total)?Math.floor(total/60)+':'+String(total%60).padStart(2,'0'):'—'); if(Number.isFinite(total)&&total!==180) errors.push('For the three-minute brief, '+(total<180?'add '+(180-total):'remove '+(total-180))+' seconds across your sections.'); if(!errors.length) { show('duration-note','Your arrangement plan totals three minutes. Recording time is '+walk+' minutes; it is separate from the finished piece.'); exportText=['FIELD TO SOUNDSCAPE — PROJECT BRIEF','Project: '+value('project-name'),'Place / setting: '+value('walk-place'),'Listening intention: '+value('intention'),'Soundwalk length: '+walk+' minutes','Recording device: '+value('device'),'Recording is welcome here / boundaries: '+value('boundaries'),'','COLLECT THREE ROLES','Bed: '+value('bed'),'Detail: '+value('detail'),'Change: '+value('change'),'','THREE-MINUTE ARRANGEMENT','Opening (0:'+String(opening).padStart(2,'0')+' seconds): '+value('opening-note'),'Development ('+development+' seconds): '+value('development-note'),'Ending ('+ending+' seconds): '+value('ending-note'),'Total: 180 seconds','Transition to try: '+value('transition'),'Final listening question: '+value('review-question'),'','Keep a copy of your source log and note one change after listening again.'].join('\n'); } else show('duration-note','Adjust the fields above to complete your three-minute project brief.'); } show('planner-errors',[...new Set(errors)].join(' ')); get('planner-errors').hidden=!errors.length; get('export-plan').disabled=!!errors.length; if(get('export-csv')) get('export-csv').disabled=!!errors.length; root.dataset.valid=errors.length?'false':'true'; if(errors.length&&root.dataset.planner==='pottery') { for(const id of ['revenue','variable-cost','contribution','after-event','after-labor','stock-left']) show(id,'—'); show('mix-note','Correct the fields above to calculate this scenario.'); } } root.addEventListener('input',update); get('export-plan').addEventListener('click',()=>{update();if(root.dataset.valid==='true')download(exportText,root.dataset.planner==='pottery'?'pottery-market-plan.txt':'soundwalk-project-brief.txt','text/plain;charset=utf-8');}); if(get('export-csv')) get('export-csv').addEventListener('click',()=>{update();if(root.dataset.valid==='true')download(exportCsv,'pottery-market-scenario.csv','text/csv;charset=utf-8');}); get('reset-plan').addEventListener('click',()=>{root.querySelectorAll('input,textarea').forEach(el=>{el.value=el.defaultValue;});update();}); update(); })(); </script>
claimed_byaccount-a1a1c77d8735e292
formathtml
meta_descriptionPlan a soundwalk and three-minute soundscape, then download your project brief.
metadata{"checkout_status":"stripe_deferred","content_version":"1.1","tool_kind":"soundwalk_brief"}
og_imagehttps://www.cre8.xyz/atoms/5e1c6cc718d5f4eff9f04c42c12e6cb0f5a9aafa788d500da4d14fd19754374d
publishedtrue
search{"card":"document","connection":"Site.GetPage","data_type":"page","details":{"Format":"html"},"href":"/site/bundle/field-to-soundscape/planner","owner_account_id":"account-a1a1c77d8735e292","reader_account_ids":[],"tags":[],"text":"<div class=\"pilot\"><div class=\"wrap\"><article class=\"toolpage\"><div class=\"eyebrow\">FREE TOOL / FIELD TO SOUNDSCAPE</div><h1>Leave with a plan.<br>Return with a piece.</h1><p class=\"lede\">Plan one soundwalk and a three-minute arrangement. Download a project brief you can take with you.</p><div class=\"planner-panel\" data-planner=\"sound\"><h2 style=\"font-size:2rem\">Your soundwalk.</h2><div class=\"planner-grid\"><label class=\"\" for=\"project-name\">Project name<input type=\"text\" id=\"project-name\" value=\"A courtyard in motion\" maxlength=\"120\"></label><label class=\"\" for=\"walk-place\">Place / setting<input type=\"text\" id=\"walk-place\" value=\"A place where recording is welcome\" maxlength=\"160\"></label><label class=\"\" for=\"walk-minutes\">Soundwalk length · minutes<input type=\"number\" id=\"walk-minutes\" value=\"20\" min=\"1\" max=\"240\" step=\"1\"></label><label class=\"\" for=\"device\">Recording device<input type=\"text\" id=\"device\" value=\"Phone or recorder\" maxlength=\"120\"></label><label for=\"intention\">What do you want to notice?<textarea id=\"intention\" maxlength=\"1200\">Listen for the contrast between a steady texture and small changes.</textarea></label><label for=\"boundaries\">Where is recording welcome, and what will you avoid?<textarea id=\"boundaries\" maxlength=\"1200\">Choose a suitable place and keep clear of private conversations.</textarea></label></div><h2 style=\"font-size:2rem;margin-top:36px\">Three roles to collect.</h2><div class=\"planner-grid\"><label for=\"bed\">Bed · a continuous texture<textarea id=\"bed\" maxlength=\"1200\">A steady environmental texture to hold the scene together.</textarea></label><label for=\"detail\">Detail · something the listener can follow<textarea id=\"detail\" maxlength=\"1200\">A small repeated event with a clear shape.</textarea></label><label for=\"change\">Change · an arrival, departure or contrast<textarea id=\"change\" maxlength=\"1200\">An event that changes the sense of the place.</textarea></label></div><h2 style=\"font-size:2rem;margin-top:36px\">Shape three minutes.</h2><div class=\"planner-grid\"><label class=\"\" for=\"opening-seconds\">Opening · seconds<input type=\"number\" id=\"opening-seconds\" value=\"30\" min=\"1\" max=\"180\" step=\"1\"></label><label for=\"opening-note\">Opening intention<textarea id=\"opening-note\" maxlength=\"1200\">Introduce the bed and leave room to recognize it.</textarea></label><label class=\"\" for=\"development-seconds\">Development · seconds<input type=\"number\" id=\"development-seconds\" value=\"110\" min=\"1\" max=\"180\" step=\"1\"></label><label for=\"development-note\">Development intention<textarea id=\"development-note\" maxlength=\"1200\">Bring the detail forward and try one change in perspective.</textarea></label><label class=\"\" for=\"ending-seconds\">Ending · seconds<input type=\"number\" id=\"ending-seconds\" value=\"40\" min=\"1\" max=\"180\" step=\"1\"></label><label for=\"ending-note\">Ending intention<textarea id=\"ending-note\" maxlength=\"1200\">Let one recognizable texture remain, then finish deliberately.</textarea></label></div><div class=\"metric-grid\"><div class=\"metric\"><span>Planned piece length</span><output id=\"duration-total\" aria-live=\"polite\">—</output></div></div><p class=\"small\" id=\"duration-note\"></p><div class=\"planner-grid\"><label for=\"transition\">One transition to try<textarea id=\"transition\" maxlength=\"1200\">Overlap two textures and compare a short fade with a longer fade.</textarea></label><label for=\"review-question\">Final listening question<textarea id=\"review-question\" maxlength=\"1200\">Can I hear an opening, a meaningful change and an intentional ending?</textarea></label></div><p id=\"planner-errors\" class=\"planner-error\" role=\"status\" hidden></p><div class=\"actions\"><button class=\"btn\" type=\"button\" id=\"export-plan\">Download my plan</button><button class=\"btn secondary\" type=\"button\" id=\"reset-plan\">Reload example</button></div><p class=\"small\" style=\"margin-top:18px\">Your entries stay in this tab. Download a copy before closing or reloading.</p></div><section class=\"section\"><h2>Use the plan lightly.</h2><p>The brief gives you something to listen for. Let the recordings change the plan when they offe","title":"Field to Soundscape | Free project planner","updated_at_ms":1791169238963,"version":1,"visibility":"public"}
sections[]
site_idfield-to-soundscape
slugplanner
tags[]
template_id
titleField to Soundscape | Free project planner
updated_at_ms1791169238963

Connections

no edges: this node is not yet wired into the graph

Comments

No comments yet. Start the conversation.

Add a comment