Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 26 additions & 26 deletions about.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,19 @@
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
<title>About — Elevator Three</title>
<style>
/* 本体 (index.html) の EK の見た目を踏襲する。漆黒の筐体に黄色のアクセント、細い罫線で囲んだモジュール */
/* 本体 (index.html) と同じ青紫と淡いクリームの配色、細い罫線で囲んだモジュール */
:root{
/* 紫の5色 (D-13)。本体の index.html と揃える */
--bg:#3100a2;
--box:#2a008c;
--panel:rgba(76,0,153,.55);
--line:rgba(216,178,255,.26);
--ink:#d8b2ff;
--body:rgba(216,178,255,.9);
--dim:rgba(216,178,255,.6);
--accent:#b266ff;
--hot:#4500e2;
--glow:#d8b2ff;
/* 本体の index.html と配色を揃える */
--bg:#7474b0;
--box:#4e4e94;
--panel:rgba(207,207,232,.08);
--line:rgba(207,207,232,.65);
--ink:#ffffff;
--body:#ffffff;
--dim:#cfcfe8;
--accent:#ffffee;
--hot:#313178;
--glow:#ffffff;
--white:#ffffff;
--disp:'Helvetica Neue','Arial Narrow','Hiragino Sans','Hiragino Kaku Gothic ProN',sans-serif;
--data:'Menlo','Monaco',monospace;
Expand Down Expand Up @@ -85,7 +85,7 @@
content:counter(s);position:absolute;left:0;top:.15rem;
width:1.6rem;height:1.6rem;display:flex;align-items:center;justify-content:center;
font-family:var(--data);font-size:.8rem;color:var(--white);background:var(--hot);
box-shadow:0 0 10px rgba(178,102,255,.5);
box-shadow:0 0 10px rgba(255,255,238,.5);
}
ol.steps li strong{font-size:1.02rem}
.playglyph{
Expand All @@ -110,18 +110,18 @@
/* monitor の表示例 */
pre.mon{
font-family:var(--data);font-size:.72rem;line-height:1.75;color:var(--dim);
border:1px solid var(--line);background:#1c005e;padding:.6rem .75rem;margin:.5rem 0 .3rem;overflow-x:auto;
border:1px solid var(--line);background:#313178;padding:.6rem .75rem;margin:.5rem 0 .3rem;overflow-x:auto;
}
pre.mon b{color:var(--ink);font-weight:400}
pre.mon i{font-style:normal;color:var(--accent)}
dl.mon dt{font-family:var(--data);font-size:.78rem;color:var(--ink);margin-top:.6rem}
dl.mon dd{color:var(--body);margin-left:1rem}

/* ステップ列の凡例。本体のキーと同じ色 */
.key{display:inline-block;width:.95rem;height:.95rem;vertical-align:-.15em;border-radius:2px;border:1px solid rgba(216,178,255,.18);margin-right:.2rem}
.key.now{background:var(--glow);border-color:var(--glow);box-shadow:0 0 6px rgba(216,178,255,.8)}
.key.on{background:var(--hot);border-color:rgba(178,102,255,.6)}
.key.hat{background:rgba(178,102,255,.28)}
.key{display:inline-block;width:.95rem;height:.95rem;vertical-align:-.15em;border-radius:2px;border:1px solid rgba(207,207,232,.18);margin-right:.2rem}
.key.now{background:var(--glow);border-color:var(--glow);box-shadow:0 0 6px rgba(207,207,232,.8)}
.key.on{background:var(--hot);border-color:rgba(255,255,238,.6)}
.key.hat{background:rgba(255,255,238,.28)}
.key.off{background:var(--box)}

footer{
Expand Down Expand Up @@ -306,17 +306,17 @@ <h3>control</h3>
<tr><td class="k">evolution</td><td class="v">0–1 / 0.90</td><td>シーンの長さ (0 で約5分、1 で約2分) と、フレーズが8小節で早めに切り替わる確率</td></tr>
<tr><td class="k">mutate</td><td class="v">0–1 / 0.80</td><td>リズムの並びが書き換わる確率。0 に近いほど同じ並びを繰り返す</td></tr>
<tr class="grp"><td colspan="3">tonality</td></tr>
<tr><td class="k">shift</td><td class="v">0–1 / 0.5</td><td>形を保ったまま調を平行にずらす転調。3度の横滑りを主に、盛り上げでの全音上げ、ベースだけ前の音に留まるペダルも入る。0 なら五度圏の近い調へ移るだけ</td></tr>
<tr><td class="k">lush</td><td class="v">0–1 / 0.5</td><td>e.piano と strings の回路で、テンションの多い和音を開いた配置で置き、声部を滑らかに運ぶ。分数コードや内声の半音の動きも入る</td></tr>
<tr><td class="k">shift</td><td class="v">0–1 / 0.8</td><td>形を保ったまま調を平行にずらす転調。3度の横滑りを主に、盛り上げでの全音上げ、ベースだけ前の音に留まるペダルも入る。0 なら五度圏の近い調へ移るだけ</td></tr>
<tr><td class="k">lush</td><td class="v">0–1 / 0.8</td><td>e.piano と strings の回路で、テンションの多い和音を開いた配置で置き、声部を滑らかに運ぶ。分数コードや内声の半音の動きも入る</td></tr>
<tr class="grp"><td colspan="3">decision</td></tr>
<tr><td class="k">jev</td><td class="v">0–1 / 0.8</td><td>次のシーン、フレーズ、仕掛け、dub、キー、リフの旋律といった判断のうち、Jev に任せる割合。0 にすると何も問い合わせず、Elevator Two と同じ判断で鳴る</td></tr>
<tr><td class="k">jev</td><td class="v">0–1 / 1.0</td><td>次のシーン、フレーズ、仕掛け、dub、キー、リフの旋律といった判断のうち、Jev に任せる割合。0 にすると何も問い合わせず、Elevator Two と同じ判断で鳴る</td></tr>
</tbody>
</table></div>
<p class="note">character / motion / tonality のスライダーを触ると、シーン名に <code>(edit)</code> が付き、dark-bright は波に戻されなくなる。
次のシーンに入ると (手で選んでも、自動で移っても) 元に戻る。<code>reset all</code> はすべてのスライダーを既定値に戻す (mixer の保存値と SOLO / MUTE も消す)。</p>

<h3>mixer</h3>
<p>音源ごとの量を 0–200% で変える (100% が標準)。値はこのブラウザに保存され、次に開いたときも残る。</p>
<p>音源ごとの量を 0–200% で変える (既定は bass 2種が50%、その他100%)。値はこのブラウザに保存され、次に開いたときも残る。</p>
<div class="tw"><table>
<thead><tr><th>群</th><th>スライダー</th></tr></thead>
<tbody>
Expand Down Expand Up @@ -547,17 +547,17 @@ <h3>control</h3>
<tr><td class="k">evolution</td><td class="v">0–1 / 0.90</td><td>Scene length (about 5 minutes at 0, about 2 at 1) and the chance of a phrase changing early at eight bars</td></tr>
<tr><td class="k">mutate</td><td class="v">0–1 / 0.80</td><td>Chance that the rhythm gets rewritten. Near 0, patterns repeat</td></tr>
<tr class="grp"><td colspan="3">tonality</td></tr>
<tr><td class="k">shift</td><td class="v">0–1 / 0.5</td><td>Parallel key shifts that keep the shape of everything — mostly sliding by thirds — plus whole-step lifts at the climax and a bass that lingers on the old root. At 0 the key only moves by fifths between scenes</td></tr>
<tr><td class="k">lush</td><td class="v">0–1 / 0.5</td><td>In the e.piano and strings circuits: tension-rich chords in open voicings with smooth voice leading, slash chords and inner voices moving by semitones</td></tr>
<tr><td class="k">shift</td><td class="v">0–1 / 0.8</td><td>Parallel key shifts that keep the shape of everything — mostly sliding by thirds — plus whole-step lifts at the climax and a bass that lingers on the old root. At 0 the key only moves by fifths between scenes</td></tr>
<tr><td class="k">lush</td><td class="v">0–1 / 0.8</td><td>In the e.piano and strings circuits: tension-rich chords in open voicings with smooth voice leading, slash chords and inner voices moving by semitones</td></tr>
<tr class="grp"><td colspan="3">decision</td></tr>
<tr><td class="k">jev</td><td class="v">0–1 / 0.8</td><td>How much of the decision-making — next scene, phrase, events, dub, key, riff melody — is handed to Jev. At 0 nothing is asked and it decides exactly like Elevator Two</td></tr>
<tr><td class="k">jev</td><td class="v">0–1 / 1.0</td><td>How much of the decision-making — next scene, phrase, events, dub, key, riff melody — is handed to Jev. At 0 nothing is asked and it decides exactly like Elevator Two</td></tr>
</tbody>
</table></div>
<p class="note">Touching a character, motion or tonality slider adds <code>(edit)</code> to the scene name, and dark-bright stops following the wave until the next scene begins, whether you pick it or it arrives on its own.
<code>reset all</code> returns every slider to its default and also clears the saved mixer levels and any solo / mute.</p>

<h3>mixer</h3>
<p>Set each sound from 0 to 200% (100% is normal). The levels are saved in this browser and come back next time.</p>
<p>Set each sound from 0 to 200% (defaults: both bass levels 50%, all others 100%). The levels are saved in this browser and come back next time.</p>
<div class="tw"><table>
<thead><tr><th>group</th><th>sliders</th></tr></thead>
<tbody>
Expand Down
16 changes: 8 additions & 8 deletions docs/desc.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,18 @@
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>自動で編曲し、演奏するブラウザ楽器</title>
<style>
:root{--bg:#3100a2;--panel:#2a008c;--panel2:#4c0099;--text:#f6eeff;--muted:rgba(216,178,255,.78);--line:rgba(216,178,255,.28);--accent:#b266ff;--accent2:#d8b2ff;--max:980px}
*{box-sizing:border-box} html{scroll-behavior:smooth} body{margin:0;background:linear-gradient(180deg,#2a008c 0,#3100a2 35%,#2a008c 100%);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,"Noto Sans JP","Hiragino Sans","Yu Gothic",sans-serif;line-height:1.85}
:root{--bg:#4e4e94;--panel:#4e4e94;--panel2:#313178;--text:#ffffff;--muted:#cfcfe8;--line:rgba(207,207,232,.28);--accent:#ffffee;--accent2:#cfcfe8;--max:980px}
*{box-sizing:border-box} html{scroll-behavior:smooth} body{margin:0;background:linear-gradient(180deg,#4e4e94 0,#4e4e94 35%,#4e4e94 100%);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,"Noto Sans JP","Hiragino Sans","Yu Gothic",sans-serif;line-height:1.85}
body:before{content:"";position:fixed;inset:0;pointer-events:none;background:repeating-linear-gradient(0deg,rgba(255,255,255,.018) 0,rgba(255,255,255,.018) 1px,transparent 1px,transparent 4px);opacity:.35}
.hero{border-bottom:1px solid var(--line);padding:76px 24px 54px;background:radial-gradient(circle at 80% 10%,rgba(178,102,255,.22),transparent 32%),radial-gradient(circle at 15% 30%,rgba(69,0,226,.45),transparent 28%)}
.hero{border-bottom:1px solid var(--line);padding:76px 24px 54px;background:radial-gradient(circle at 80% 10%,rgba(255,255,238,.22),transparent 32%),radial-gradient(circle at 15% 30%,rgba(49,49,120,.45),transparent 28%)}
.hero-inner,main{max-width:var(--max);margin:auto} .eyebrow{font:700 12px ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.22em;color:var(--accent);text-transform:uppercase}
h1{font-size:clamp(34px,6vw,68px);line-height:1.08;letter-spacing:-.045em;margin:.3em 0 .28em;max-width:900px} .subtitle{font-size:18px;color:var(--muted);max-width:760px}
main{padding:48px 24px 96px} h2{font-size:30px;line-height:1.3;margin:2.4em 0 .7em;padding-top:.3em;border-top:1px solid var(--line)} h2:before{content:"// ";color:var(--accent);font-family:ui-monospace,monospace}
h3{font-size:21px;margin:1.8em 0 .45em;color:#fff} p{margin:.85em 0} strong{color:#fff} a{color:var(--accent2)}
blockquote{margin:1.6em 0;padding:20px 24px;border-left:3px solid var(--accent);background:rgba(178,102,255,.13);font-size:18px}
pre{overflow:auto;background:#1c005e;border:1px solid var(--line);padding:22px;border-radius:8px;line-height:1.5;color:#e9d6ff;box-shadow:inset 0 0 28px rgba(216,178,255,.05)} code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.92em}
p code,li code,td code{background:#4c0099;border:1px solid rgba(216,178,255,.3);border-radius:4px;padding:.12em .35em;color:#e9d6ff}
ul,ol{padding-left:1.5em} li{margin:.38em 0} .tablewrap{overflow:auto;margin:1.4em 0} table{width:100%;border-collapse:collapse;background:var(--panel)} th,td{padding:12px 14px;border:1px solid var(--line);text-align:left;vertical-align:top} th{background:#4500e2;color:#d8b2ff;font-size:13px;letter-spacing:.04em}
blockquote{margin:1.6em 0;padding:20px 24px;border-left:3px solid var(--accent);background:rgba(255,255,238,.13);font-size:18px}
pre{overflow:auto;background:#313178;border:1px solid var(--line);padding:22px;border-radius:8px;line-height:1.5;color:#cfcfe8;box-shadow:inset 0 0 28px rgba(207,207,232,.05)} code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.92em}
p code,li code,td code{background:#313178;border:1px solid rgba(207,207,232,.3);border-radius:4px;padding:.12em .35em;color:#cfcfe8}
ul,ol{padding-left:1.5em} li{margin:.38em 0} .tablewrap{overflow:auto;margin:1.4em 0} table{width:100%;border-collapse:collapse;background:var(--panel)} th,td{padding:12px 14px;border:1px solid var(--line);text-align:left;vertical-align:top} th{background:#313178;color:#cfcfe8;font-size:13px;letter-spacing:.04em}
.footer{border-top:1px solid var(--line);color:var(--muted);font-size:13px;padding:28px 24px 50px} .footer div{max-width:var(--max);margin:auto}
@media(max-width:640px){.hero{padding-top:48px} main{padding-top:28px} h2{font-size:25px}}
@media print{body{background:white;color:#111} body:before{display:none} .hero{background:white} .subtitle,.footer{color:#555} h2{border-color:#ccc} pre{background:#f5f5f5;color:#111}}
Expand Down Expand Up @@ -61,7 +61,7 @@ <h3>最大確率を取らない</h3>
<h3>時間との折り合い</h3>
<p>音の予約は、その小節が鳴るおよそ0.12秒前に確定する。問い合わせの往復 (実測で中央値230ms前後) を待つ余裕はない。そこで判断が要る場面の2〜16小節前に先回りして問い合わせ、答えを予約しておき、その場面が来たら使う。答えが間に合わなければ捨てて、elevator-two と同じ手元の判断で鳴らす。つまり、繋がらなくても音楽は止まらない。</p>
<h3>任せる割合は人が決める</h3>
<p><code>jev</code> スライダーは、判断のうち Jev に任せる割合である (既定 0.8)。0 にすれば何も問い合わせず、elevator-two と同じに鳴る。monitor には、Jev に何を問い、何が返り、そのうち何を使ったかが、その場で流れる。</p>
<p><code>jev</code> スライダーは、判断のうち Jev に任せる割合である (既定 1.0)。0 にすれば何も問い合わせず、elevator-two と同じに鳴る。monitor には、Jev に何を問い、何が返り、そのうち何を使ったかが、その場で流れる。</p>
<p>実際に鳴らしてみると、Jev は4小節の節目の仕掛けについて「何もしない」を5〜7割選ぶ。手元の規則より、仕掛けを控えめにする傾向がある。</p>
<h2>4. 同時にいくつもの時間を見ている</h2>
<p>elevator-three は、16分音符だけを見て次の音を決めているわけではない。異なる時間スケールの判断が重なっている。</p>
Expand Down
14 changes: 7 additions & 7 deletions docs/knowledge-model.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,18 @@
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>elevator-three の音楽知識モデル</title>
<style>
:root{--bg:#3100a2;--panel:#2a008c;--panel2:#4c0099;--text:#f6eeff;--muted:rgba(216,178,255,.78);--line:rgba(216,178,255,.28);--accent:#b266ff;--accent2:#d8b2ff;--max:980px}
*{box-sizing:border-box} html{scroll-behavior:smooth} body{margin:0;background:linear-gradient(180deg,#2a008c 0,#3100a2 35%,#2a008c 100%);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,"Noto Sans JP","Hiragino Sans","Yu Gothic",sans-serif;line-height:1.85}
:root{--bg:#4e4e94;--panel:#4e4e94;--panel2:#313178;--text:#ffffff;--muted:#cfcfe8;--line:rgba(207,207,232,.28);--accent:#ffffee;--accent2:#cfcfe8;--max:980px}
*{box-sizing:border-box} html{scroll-behavior:smooth} body{margin:0;background:linear-gradient(180deg,#4e4e94 0,#4e4e94 35%,#4e4e94 100%);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,"Noto Sans JP","Hiragino Sans","Yu Gothic",sans-serif;line-height:1.85}
body:before{content:"";position:fixed;inset:0;pointer-events:none;background:repeating-linear-gradient(0deg,rgba(255,255,255,.018) 0,rgba(255,255,255,.018) 1px,transparent 1px,transparent 4px);opacity:.35}
.hero{border-bottom:1px solid var(--line);padding:76px 24px 54px;background:radial-gradient(circle at 80% 10%,rgba(178,102,255,.22),transparent 32%),radial-gradient(circle at 15% 30%,rgba(69,0,226,.45),transparent 28%)}
.hero{border-bottom:1px solid var(--line);padding:76px 24px 54px;background:radial-gradient(circle at 80% 10%,rgba(255,255,238,.22),transparent 32%),radial-gradient(circle at 15% 30%,rgba(49,49,120,.45),transparent 28%)}
.hero-inner,main{max-width:var(--max);margin:auto} .eyebrow{font:700 12px ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.22em;color:var(--accent);text-transform:uppercase}
h1{font-size:clamp(34px,6vw,68px);line-height:1.08;letter-spacing:-.045em;margin:.3em 0 .28em;max-width:900px} .subtitle{font-size:18px;color:var(--muted);max-width:760px}
main{padding:48px 24px 96px} h2{font-size:30px;line-height:1.3;margin:2.4em 0 .7em;padding-top:.3em;border-top:1px solid var(--line)} h2:before{content:"// ";color:var(--accent);font-family:ui-monospace,monospace}
h3{font-size:21px;margin:1.8em 0 .45em;color:#fff} p{margin:.85em 0} strong{color:#fff} a{color:var(--accent2)}
blockquote{margin:1.6em 0;padding:20px 24px;border-left:3px solid var(--accent);background:rgba(178,102,255,.13);font-size:18px}
pre{overflow:auto;background:#1c005e;border:1px solid var(--line);padding:22px;border-radius:8px;line-height:1.5;color:#e9d6ff;box-shadow:inset 0 0 28px rgba(216,178,255,.05)} code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.92em}
p code,li code,td code{background:#4c0099;border:1px solid rgba(216,178,255,.3);border-radius:4px;padding:.12em .35em;color:#e9d6ff}
ul,ol{padding-left:1.5em} li{margin:.38em 0} .tablewrap{overflow:auto;margin:1.4em 0} table{width:100%;border-collapse:collapse;background:var(--panel)} th,td{padding:12px 14px;border:1px solid var(--line);text-align:left;vertical-align:top} th{background:#4500e2;color:#d8b2ff;font-size:13px;letter-spacing:.04em}
blockquote{margin:1.6em 0;padding:20px 24px;border-left:3px solid var(--accent);background:rgba(255,255,238,.13);font-size:18px}
pre{overflow:auto;background:#313178;border:1px solid var(--line);padding:22px;border-radius:8px;line-height:1.5;color:#cfcfe8;box-shadow:inset 0 0 28px rgba(207,207,232,.05)} code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.92em}
p code,li code,td code{background:#313178;border:1px solid rgba(207,207,232,.3);border-radius:4px;padding:.12em .35em;color:#cfcfe8}
ul,ol{padding-left:1.5em} li{margin:.38em 0} .tablewrap{overflow:auto;margin:1.4em 0} table{width:100%;border-collapse:collapse;background:var(--panel)} th,td{padding:12px 14px;border:1px solid var(--line);text-align:left;vertical-align:top} th{background:#313178;color:#cfcfe8;font-size:13px;letter-spacing:.04em}
.footer{border-top:1px solid var(--line);color:var(--muted);font-size:13px;padding:28px 24px 50px} .footer div{max-width:var(--max);margin:auto}
@media(max-width:640px){.hero{padding-top:48px} main{padding-top:28px} h2{font-size:25px}}
@media print{body{background:white;color:#111} body:before{display:none} .hero{background:white} .subtitle,.footer{color:#555} h2{border-color:#ccc} pre{background:#f5f5f5;color:#111}}
Expand Down
Loading
Loading