Side length per format: team table with songs a side; palette control
Deploy test site / deploy (push) Successful in 47s

Side length "at most" per format is now the table the team supplied
(October 2026, from recordplayerexpert.com, songs counted at an average
4:32): 12" 22 / 15 min, 10" 15 / 12 min, 7" 7 / 5 min at 33 1/3 / 45 rpm.
Changes against the earlier microcut.studio figures: 10" 33 1/3 16 -> 15,
10" 45 11 -> 12, 7" 45 6 -> 5. The comfortable column stays the lower end
of microcut.studio's ranges.

- artist-platform.md: table with a songs column, both sources, and the
  three formats where cutting rooms disagree (10" 45 is now more generous
  than microcut.studio and Diggers Factory) as re-check points for the
  cutting engineer
- artist-order.html: LIM and the side-length table (songs column, sources)
- make-a-record.html: LIM; format cards show the at-most time and about
  how many songs a side; step 2 hint adds the songs; the last control in
  each colour row is now a labelled "Palette" pill with a colour wheel,
  showing the chosen colour and "Your colour" when a custom colour is set
This commit is contained in:
grabowski committed 2026-10-15 16:36:11 +07:00
1 parent 607f6631a7
commit 4b20ca4f48
3 files changed
+50 -30

No files matched your search

+7 -5
View File
@@ -358,8 +358,10 @@ const R={
deposit:{v:0.5,u:"of a direct order",t:"Deposit on a direct order",k:"est",src:"Placeholder; deposit terms are not set yet."}
};
const tierIdx=q=>q>=1000?3:q>=500?2:q>=300?1:0;
/* side length per format, minutes [comfortable, at most]: microcut.studio format guide (lower end of each range), checked October 2026 */
const LIM={"12":{"33":[18,22],"45":[12,15]},"10":{"33":[12,16],"45":[8,11]},"7":{"33":[5,7],"45":[4.5,6]}};
/* side length per format, minutes [comfortable, at most]: comfortable = lower end of the microcut.studio format guide;
at most = the team's table (October 2026, from recordplayerexpert.com), see artist-platform.md "Side length per format" */
const LIM={"12":{"33":[18,22],"45":[12,15]},"10":{"33":[12,15],"45":[8,12]},"7":{"33":[5,7],"45":[4.5,5]}};
const SONG=272; /* seconds: the 4:32 average song the at-most table counts songs with */
const LOUD=0.6; /* Diggers Factory: dance music ~11:27 against 19:23 standard on a 12" LP */
const JNAME={none:"Jacket supplied by you",plain:"Plain jacket",printed:"Printed jacket",gatefold:"Printed gatefold jacket"};
const ART={jacket:{t:"Jacket front",mm:{12:320,10:266,7:190}},label:{t:"Label",mm:{12:106,10:106,7:96}}};
@@ -850,13 +852,13 @@ function rateText(k){
}
function renderPL(){
const kb={doc:"doc",team:"team",est:"estimate"};
const lim=[["12\"","33"],["12\"","45"],["10\"","33"],["10\"","45"],["7\"","33"],["7\"","45"]].map(([s,r])=>{const v=LIM[s.replace("\"","")][r];return `<tr><td>${s}, ${r==="33"?"33⅓":"45"} rpm</td><td class="num">${mmss(v[0]*60)}</td><td class="num">${mmss(v[1]*60)}</td></tr>`;}).join("");
const lim=[["12\"","33"],["12\"","45"],["10\"","33"],["10\"","45"],["7\"","33"],["7\"","45"]].map(([s,r])=>{const v=LIM[s.replace("\"","")][r];return `<tr><td>${s}, ${r==="33"?"33⅓":"45"} rpm</td><td class="num">${mmss(v[0]*60)}</td><td class="num">${mmss(v[1]*60)}</td><td class="num">${(v[1]*60/SONG).toFixed(1)}</td></tr>`;}).join("");
$("#plCard").innerHTML=`<h2>Price list ${PLV}, and where every number comes from</h2>
<p class="hint">The planning docs give the price per title (19,000 to 57,000 THB, midpoint 38,000) and per copy (115 to 150 THB, midpoint 132) as working assumptions at Western benchmark rates. This demo splits them into lines; every split is an estimate. The Thai market pays far more today (650 to 950 THB a copy at 300 copies), so do not read the price level off this page: the real price list follows market validation. Rates are in THB; USD at 1 USD = 33 THB.</p>
<div class="tscroll"><table><tbody><tr class="hd"><th>Item</th><th>Rate</th><th>Unit</th><th>Kind</th><th>Basis</th></tr>${Object.keys(R).map(k=>`<tr><td>${R[k].t}</td><td>${rateText(k)}</td><td><small>${R[k].u}</small></td><td><span class="badge b-${R[k].k}">${kb[R[k].k]}</span></td><td><small>${R[k].src}</small></td></tr>`).join("")}</tbody></table></div>
<h2 style="margin-top:18px">Side length per format</h2>
<div class="tscroll"><table style="max-width:460px"><tbody><tr class="hd"><th>Format</th><th class="num">Comfortable</th><th class="num">At most</th></tr>${lim}</tbody></table></div>
<p class="hint">Published cutting-room guidance, checked October 2026: microcut.studio's format guide (lower end of each range); Diggers Factory lists hard maxima of 22, 12, 17, 10, 6 and 5 minutes and A to Z Media 14 to 18 minutes as ideal on a 12" LP. Loud or bass-heavy music: limits times 0.6, from Diggers Factory's dance-music figures. The engineer check decides, not this table.</p>
<div class="tscroll"><table style="max-width:460px"><tbody><tr class="hd"><th>Format</th><th class="num">Comfortable</th><th class="num">At most</th><th class="num">Songs</th></tr>${lim}</tbody></table></div>
<p class="hint">Comfortable: lower end of the ranges in microcut.studio's format guide (checked October 2026). At most: the team's table (October 2026, from recordplayerexpert.com, which counts songs at an average 4:32). Cutting rooms differ: microcut.studio gives 16, 11 and 6 minutes at most for 10" 33⅓, 10" 45 and 7" 45 (this table 15, 12 and 5), Diggers Factory hard maxima of 22, 12, 17, 10, 6 and 5 minutes, A to Z Media 14 to 18 minutes as ideal on a 12" LP. Loud or bass-heavy music: limits times 0.6, from Diggers Factory's dance-music figures. The engineer check decides, not this table.</p>
<h2 style="margin-top:18px">Lead time</h2>
<p class="hint">Stage durations: mature-plant column of the production timeline. Quote: 7 to 9 weeks for a new title, full service, mature plant, counted from test-pressing approval as the timeline says a quote should be made; 1 to 2 weeks less without a printed jacket. Campaign ship month: campaign close, plus the stages before test-pressing approval, plus the quote.</p>
<h2 style="margin-top:18px">Not in the demo yet</h2>