歌い手が同じ一節を繰り返し、その下の伴奏だけが変わります。旋律は知っている形なのに、ある音が落ち着いたり、際立ったりする。歌い手は一音も変えていないかもしれません。
旋律の音は、同時に鳴る和声との関係で役割を持ちます。 今回は旋律を固定して背景を変え、続いて二つの和声音を短くつなぐ音を調べます。十〜十二分ほど取り、比較を一組ずつ繰り返してください。
同じ一音を、三つの背景で追う
「旋律だけ」で冒頭の E を覚えます。次に C の長三和音と A の短三和音を比べ、フレーズ全体の印象より先に、同じ E を追いましょう。最後に F の長三和音を試します。
図を準備しています
同じ旋律に三つの伴奏E4 G4 A4 G4 E4 D4 C4 C4 を単独、または C の長三和音、A の短三和音、F の長三和音に重ねます。変わるのは伴奏だけです。
{"id":"music-harmony-backdrop","title":"同じ旋律に三つの伴奏","summary":"E4 G4 A4 G4 E4 D4 C4 C4 を単独、または C の長三和音、A の短三和音、F の長三和音に重ねます。変わるのは伴奏だけです。","height":760,"html":"<h2 data-i18n=\"heading\"></h2><p class=\"mf-intro\" data-i18n=\"intro\"></p>\n<div id=\"variants\" class=\"mf-options\" role=\"group\" data-i18n-label=\"choose\"></div>\n<p id=\"facts\" class=\"mf-facts\" aria-live=\"polite\"></p>\n<svg id=\"plot\" class=\"mf-plot\" viewBox=\"0 0 540 200\" aria-hidden=\"true\"></svg>\n<div class=\"mf-axis\"><span data-i18n=\"axis\"></span><span id=\"duration\"></span></div>\n<div id=\"groups\" class=\"mf-groups\"></div><p id=\"notation\" class=\"mf-notation\"></p><p class=\"mf-key\" data-i18n=\"key\"></p>\n<div id=\"envelope-panel\" hidden><svg id=\"envelope-plot\" class=\"mf-plot\" viewBox=\"0 0 540 120\" aria-hidden=\"true\"></svg><p class=\"mf-key\" data-i18n=\"envelope\"></p></div>\n<div class=\"mf-actions\"><button id=\"play\" data-i18n=\"play\"></button><button id=\"stop\" data-i18n=\"stop\" disabled></button></div>\n<div class=\"mf-progress\" aria-hidden=\"true\"><span id=\"progress\"></span></div><p id=\"status\" class=\"mf-status\" role=\"status\" data-i18n=\"idle\"></p>\n<div class=\"mf-volume\"><label for=\"volume\" data-i18n=\"volume\"></label><input id=\"volume\" type=\"range\" min=\"0\" max=\"100\" value=\"65\"></div>\n","css":"body{padding:24px}h2{font-size:22px;line-height:1.4}.mf-intro{color:var(--muted);margin:10px 0 18px;line-height:1.7}.mf-options{display:flex;gap:8px;flex-wrap:wrap}.mf-options button{flex:1 1 125px;min-height:46px;font-size:16px;white-space:normal;line-height:1.45;text-align:left;padding:10px 12px}.mf-options button[aria-pressed=true]{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.mf-facts{margin:16px 0;padding:14px;border-left:3px solid var(--accent);background:var(--surface);font-size:16px;line-height:1.75;min-height:4em}.mf-plot{width:100%;height:auto;display:block;margin:12px 0 0;background:var(--surface);border:1px solid var(--rule);border-radius:8px}.mf-axis{display:flex;justify-content:space-between;font-size:13px;color:var(--muted);gap:16px;margin:6px 0}.mf-notation{font-size:15px;line-height:1.8;overflow-wrap:anywhere;margin:10px 0;color:var(--ink)}.mf-groups{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0}.mf-groups span{padding:6px 10px;border:1px solid var(--rule);border-radius:5px;font-size:15px;white-space:pre}.mf-actions{display:flex;gap:8px;margin:18px 0 12px}.mf-actions button{min-height:46px;font-size:16px;flex:1}.mf-progress{height:3px;background:var(--rule);overflow:hidden}.mf-progress span{display:block;height:100%;background:var(--accent);width:0}.mf-status{font-size:14px;line-height:1.7;margin:10px 0;min-height:3.4em;color:var(--muted)}.mf-volume{display:flex;gap:12px;align-items:center;margin-top:12px;border-top:1px solid var(--rule);padding-top:12px;font-size:14px}.mf-volume input{min-width:60px;max-width:180px}.mf-volume label{white-space:nowrap}.mf-key{color:var(--muted);font-size:14px;line-height:1.6;margin:12px 0}@media(max-width:420px){body{padding:20px 14px}h2{font-size:20px}.mf-options button{flex-basis:105px}.mf-facts{padding:12px}}\n\n.mf-groups span.is-current{border-color:var(--accent);background:var(--accent-soft);box-shadow:inset 0 -2px 0 var(--accent)}\n\n[hidden]{display:none!important}\n#blind-answers{flex-wrap:wrap}#blind-answers button{flex:1 1 100px;white-space:normal;line-height:1.5;min-width:0;padding:10px}\n","js":"const MODEL = {\"mode\":\"notes\",\"min\":41,\"max\":69,\"blind\":false,\"variants\":[{\"score\":{\"bpm\":90,\"beats\":8,\"events\":[{\"midi\":64,\"hz\":329.627557,\"beat\":0,\"duration\":0.5,\"gain\":0.8,\"wave\":\"triangle\",\"layer\":\"melody\"},{\"midi\":67,\"hz\":391.995436,\"beat\":1,\"duration\":0.5,\"gain\":0.8,\"wave\":\"triangle\",\"layer\":\"melody\"},{\"midi\":69,\"hz\":440.0,\"beat\":2,\"duration\":0.5,\"gain\":0.8,\"wave\":\"triangle\",\"layer\":\"melody\"},{\"midi\":67,\"hz\":391.995436,\"beat\":3,\"duration\":0.5,\"gain\":0.8,\"wave\":\"triangle\",\"layer\":\"melody\"},{\"midi\":64,\"hz\":329.627557,\"beat\":4,\"duration\":0.5,\"gain\":0.8,\"wave\":\"triangle\",\"layer\":\"melody\"},{\"midi\":62,\"hz\":293.664768,\"beat\":5,\"duration\":0.5,\"gain\":0.8,\"wave\":\"triangle\",\"layer\":\"melody\"},{\"midi\":60,\"hz\":261.625565,\"beat\":6,\"duration\":0.5,\"gain\":0.8,\"wave\":\"triangle\",\"layer\":\"melody\"},{\"midi\":60,\"hz\":261.625565,\"beat\":7,\"duration\":0.5,\"gain\":0.8,\"wave\":\"triangle\",\"layer\":\"melody\"}]},\"notation\":\"E4 G4 A4 G4 E4 D4 C4 C4\",\"groups\":[]},{\"score\":{\"bpm\":90,\"beats\":8,\"events\":[{\"midi\":64,\"hz\":329.627557,\"beat\":0,\"duration\":0.5,\"gain\":0.8,\"wave\":\"triangle\",\"layer\":\"melody\"},{\"midi\":67,\"hz\":391.995436,\"beat\":1,\"duration\":0.5,\"gain\":0.8,\"wave\":\"triangle\",\"layer\":\"melody\"},{\"midi\":69,\"hz\":440.0,\"beat\":2,\"duration\":0.5,\"gain\":0.8,\"wave\":\"triangle\",\"layer\":\"melody\"},{\"midi\":67,\"hz\":391.995436,\"beat\":3,\"duration\":0.5,\"gain\":0.8,\"wave\":\"triangle\",\"layer\":\"melody\"},{\"midi\":64,\"hz\":329.627557,\"beat\":4,\"duration\":0.5,\"gain\":0.8,\"wave\":\"triangle\",\"layer\":\"melody\"},{\"midi\":62,\"hz\":293.664768,\"beat\":5,\"duration\":0.5,\"gain\":0.8,\"wave\":\"triangle\",\"layer\":\"melody\"},{\"midi\":60,\"hz\":261.625565,\"beat\":6,\"duration\":0.5,\"gain\":0.8,\"wave\":\"triangle\",\"layer\":\"melody\"},{\"midi\":60,\"hz\":261.625565,\"beat\":7,\"duration\":0.5,\"gain\":0.8,\"wave\":\"triangle\",\"layer\":\"melody\"},{\"midi\":48,\"hz\":130.812783,\"beat\":0,\"duration\":1.15,\"gain\":0.45,\"wave\":\"triangle\",\"layer\":\"chord\"},{\"midi\":52,\"hz\":164.813778,\"beat\":0,\"duration\":1.15,\"gain\":0.45,\"wave\":\"triangle\",\"layer\":\"chord\"},{\"midi\":55,\"hz\":195.997718,\"beat\":0,\"duration\":1.15,\"gain\":0.45,\"wave\":\"triangle\",\"layer\":\"chord\"},{\"midi\":48,\"hz\":130.812783,\"beat\":2,\"duration\":1.15,\"gain\":0.45,\"wave\":\"triangle\",\"layer\":\"chord\"},{\"midi\":52,\"hz\":164.813778,\"beat\":2,\"duration\":1.15,\"gain\":0.45,\"wave\":\"triangle\",\"layer\":\"chord\"},{\"midi\":55,\"hz\":195.997718,\"beat\":2,\"duration\":1.15,\"gain\":0.45,\"wave\":\"triangle\",\"layer\":\"chord\"},{\"midi\":48,\"hz\":130.812783,\"beat\":4,\"duration\":1.15,\"gain\":0.45,\"wave\":\"triangle\",\"layer\":\"chord\"},{\"midi\":52,\"hz\":164.813778,\"beat\":4,\"duration\":1.15,\"gain\":0.45,\"wave\":\"triangle\",\"layer\":\"chord\"},{\"midi\":55,\"hz\":195.997718,\"beat\":4,\"duration\":1.15,\"gain\":0.45,\"wave\":\"triangle\",\"layer\":\"chord\"},{\"midi\":48,\"hz\":130.812783,\"beat\":6,\"duration\":1.15,\"gain\":0.45,\"wave\":\"triangle\",\"layer\":\"chord\"},{\"midi\":52,\"hz\":164.813778,\"beat\":6,\"duration\":1.15,\"gain\":0.45,\"wave\":\"triangle\",\"layer\":\"chord\"},{\"midi\":55,\"hz\":195.997718,\"beat\":6,\"duration\":1.15,\"gain\":0.45,\"wave\":\"triangle\",\"layer\":\"chord\"}]},\"notation\":\"C3 E3 G3 + E4 G4 A4 G4 E4 D4 C4 C4\",\"groups\":[]},{\"score\":{\"bpm\":90,\"beats\":8,\"events\":[{\"midi\":64,\"hz\":329.627557,\"beat\":0,\"duration\":0.5,\"gain\":0.8,\"wave\":\"triangle\",\"layer\":\"melody\"},{\"midi\":67,\"hz\":391.995436,\"beat\":1,\"duration\":0.5,\"gain\":0.8,\"wave\":\"triangle\",\"layer\":\"melody\"},{\"midi\":69,\"hz\":440.0,\"beat\":2,\"duration\":0.5,\"gain\":0.8,\"wave\":\"triangle\",\"layer\":\"melody\"},{\"midi\":67,\"hz\":391.995436,\"beat\":3,\"duration\":0.5,\"gain\":0.8,\"wave\":\"triangle\",\"layer\":\"melody\"},{\"midi\":64,\"hz\":329.627557,\"beat\":4,\"duration\":0.5,\"gain\":0.8,\"wave\":\"triangle\",\"layer\":\"melody\"},{\"midi\":62,\"hz\":293.664768,\"beat\":5,\"duration\":0.5,\"gain\":0.8,\"wave\":\"triangle\",\"layer\":\"melody\"},{\"midi\":60,\"hz\":261.625565,\"beat\":6,\"duration\":0.5,\"gain\":0.8,\"wave\":\"triangle\",\"layer\":\"melody\"},{\"midi\":60,\"hz\":261.625565,\"beat\":7,\"duration\":0.5,\"gain\":0.8,\"wave\":\"triangle\",\"layer\":\"melody\"},{\"midi\":45,\"hz\":110.0,\"beat\":0,\"duration\":1.15,\"gain\":0.45,\"wave\":\"triangle\",\"layer\":\"chord\"},{\"midi\":48,\"hz\":130.812783,\"beat\":0,\"duration\":1.15,\"gain\":0.45,\"wave\":\"triangle\",\"layer\":\"chord\"},{\"midi\":52,\"hz\":164.813778,\"beat\":0,\"duration\":1.15,\"gain\":0.45,\"wave\":\"triangle\",\"layer\":\"chord\"},{\"midi\":45,\"hz\":110.0,\"beat\":2,\"duration\":1.15,\"gain\":0.45,\"wave\":\"triangle\",\"layer\":\"chord\"},{\"midi\":48,\"hz\":130.812783,\"beat\":2,\"duration\":1.15,\"gain\":0.45,\"wave\":\"triangle\",\"layer\":\"chord\"},{\"midi\":52,\"hz\":164.813778,\"beat\":2,\"duration\":1.15,\"gain\":0.45,\"wave\":\"triangle\",\"layer\":\"chord\"},{\"midi\":45,\"hz\":110.0,\"beat\":4,\"duration\":1.15,\"gain\":0.45,\"wave\":\"triangle\",\"layer\":\"chord\"},{\"midi\":48,\"hz\":130.812783,\"beat\":4,\"duration\":1.15,\"gain\":0.45,\"wave\":\"triangle\",\"layer\":\"chord\"},{\"midi\":52,\"hz\":164.813778,\"beat\":4,\"duration\":1.15,\"gain\":0.45,\"wave\":\"triangle\",\"layer\":\"chord\"},{\"midi\":45,\"hz\":110.0,\"beat\":6,\"duration\":1.15,\"gain\":0.45,\"wave\":\"triangle\",\"layer\":\"chord\"},{\"midi\":48,\"hz\":130.812783,\"beat\":6,\"duration\":1.15,\"gain\":0.45,\"wave\":\"triangle\",\"layer\":\"chord\"},{\"midi\":52,\"hz\":164.813778,\"beat\":6,\"duration\":1.15,\"gain\":0.45,\"wave\":\"triangle\",\"layer\":\"chord\"}]},\"notation\":\"A2 C3 E3 + E4 G4 A4 G4 E4 D4 C4 C4\",\"groups\":[]},{\"score\":{\"bpm\":90,\"beats\":8,\"events\":[{\"midi\":64,\"hz\":329.627557,\"beat\":0,\"duration\":0.5,\"gain\":0.8,\"wave\":\"triangle\",\"layer\":\"melody\"},{\"midi\":67,\"hz\":391.995436,\"beat\":1,\"duration\":0.5,\"gain\":0.8,\"wave\":\"triangle\",\"layer\":\"melody\"},{\"midi\":69,\"hz\":440.0,\"beat\":2,\"duration\":0.5,\"gain\":0.8,\"wave\":\"triangle\",\"layer\":\"melody\"},{\"midi\":67,\"hz\":391.995436,\"beat\":3,\"duration\":0.5,\"gain\":0.8,\"wave\":\"triangle\",\"layer\":\"melody\"},{\"midi\":64,\"hz\":329.627557,\"beat\":4,\"duration\":0.5,\"gain\":0.8,\"wave\":\"triangle\",\"layer\":\"melody\"},{\"midi\":62,\"hz\":293.664768,\"beat\":5,\"duration\":0.5,\"gain\":0.8,\"wave\":\"triangle\",\"layer\":\"melody\"},{\"midi\":60,\"hz\":261.625565,\"beat\":6,\"duration\":0.5,\"gain\":0.8,\"wave\":\"triangle\",\"layer\":\"melody\"},{\"midi\":60,\"hz\":261.625565,\"beat\":7,\"duration\":0.5,\"gain\":0.8,\"wave\":\"triangle\",\"layer\":\"melody\"},{\"midi\":41,\"hz\":87.307058,\"beat\":0,\"duration\":1.15,\"gain\":0.45,\"wave\":\"triangle\",\"layer\":\"chord\"},{\"midi\":45,\"hz\":110.0,\"beat\":0,\"duration\":1.15,\"gain\":0.45,\"wave\":\"triangle\",\"layer\":\"chord\"},{\"midi\":48,\"hz\":130.812783,\"beat\":0,\"duration\":1.15,\"gain\":0.45,\"wave\":\"triangle\",\"layer\":\"chord\"},{\"midi\":41,\"hz\":87.307058,\"beat\":2,\"duration\":1.15,\"gain\":0.45,\"wave\":\"triangle\",\"layer\":\"chord\"},{\"midi\":45,\"hz\":110.0,\"beat\":2,\"duration\":1.15,\"gain\":0.45,\"wave\":\"triangle\",\"layer\":\"chord\"},{\"midi\":48,\"hz\":130.812783,\"beat\":2,\"duration\":1.15,\"gain\":0.45,\"wave\":\"triangle\",\"layer\":\"chord\"},{\"midi\":41,\"hz\":87.307058,\"beat\":4,\"duration\":1.15,\"gain\":0.45,\"wave\":\"triangle\",\"layer\":\"chord\"},{\"midi\":45,\"hz\":110.0,\"beat\":4,\"duration\":1.15,\"gain\":0.45,\"wave\":\"triangle\",\"layer\":\"chord\"},{\"midi\":48,\"hz\":130.812783,\"beat\":4,\"duration\":1.15,\"gain\":0.45,\"wave\":\"triangle\",\"layer\":\"chord\"},{\"midi\":41,\"hz\":87.307058,\"beat\":6,\"duration\":1.15,\"gain\":0.45,\"wave\":\"triangle\",\"layer\":\"chord\"},{\"midi\":45,\"hz\":110.0,\"beat\":6,\"duration\":1.15,\"gain\":0.45,\"wave\":\"triangle\",\"layer\":\"chord\"},{\"midi\":48,\"hz\":130.812783,\"beat\":6,\"duration\":1.15,\"gain\":0.45,\"wave\":\"triangle\",\"layer\":\"chord\"}]},\"notation\":\"F2 A2 C3 + E4 G4 A4 G4 E4 D4 C4 C4\",\"groups\":[]}]};\nconst $ = s => document.querySelector(s);\nconst variants = MODEL.variants;\nlet selected = 0;\nlet quizRevealed = !MODEL.blind;\nfunction visibility(){for(const q of ['#facts','#plot','.mf-axis','#groups','#notation','.mf-key'])$(q).toggleAttribute('hidden',!quizRevealed);document.body.dataset.quizRevealed=String(quizRevealed);}\nconst svgNS = 'http://www.w3.org/2000/svg';\nfunction node(tag, attrs = {}) { const el = document.createElementNS(svgNS, tag); for (const [k,v] of Object.entries(attrs)) el.setAttribute(k,v); return el; }\nfunction draw() {\n const v = variants[selected], plot = $('#plot'); plot.replaceChildren();\n $('#facts').textContent = viz.t('fact'+selected);\n $('#duration').textContent = viz.t('clip') + ' ' + (v.score.beats * 60 / v.score.bpm).toFixed(1) + ' ' + viz.t('seconds');\n $('#notation').textContent = v.notation;\n if (MODEL.mode === 'partials') {\n const e=v.score.events[0], p=e.partials;\n $('#envelope-panel').hidden=false;\n const envelope=$('#envelope-plot');envelope.replaceChildren();\n const attack=Math.min(e.attack,e.duration/2),points=[[12,108],[12+516*attack/e.duration,12]];\n for(let i=1;i<=60;i++){const t=attack+(e.duration-attack)*i/60,amplitude=Math.pow(.0001/(.05*e.gain),(t-attack)/(e.duration-attack));points.push([12+516*t/e.duration,108-amplitude*96]);}\n points.push([528,108]);envelope.append(node('polyline',{points:points.map(p=>p.join(',')).join(' '),fill:'none',stroke:'var(--accent)','stroke-width':3}));\n for(let i=0;i<4;i++) {\n plot.append(node('rect',{x:40+i*125,y:160-(p[i]||0)*125,width:58,height:(p[i]||0)*125,fill:'var(--accent)'}));\n const t=node('text',{x:69+i*125,y:185,'text-anchor':'middle',fill:'var(--ink)','font-size':18}); t.textContent=(i+1)+'×';plot.append(t);\n }\n } else {\n const events=v.score.events, min=MODEL.min??Math.min(...events.map(e=>e.midi)), max=MODEL.max??Math.max(...events.map(e=>e.midi));\n for(let i=0;i<=v.score.beats;i++) plot.append(node('line',{x1:12+i/v.score.beats*516,x2:12+i/v.score.beats*516,y1:16,y2:170,stroke:'var(--rule)'}));\n for(const e of events){\n const x=12+e.beat/v.score.beats*516;\n if(MODEL.mode==='pulse') plot.append(node('rect',{x,y:166-e.gain*140,width:Math.max(4,516/v.score.beats*.38),height:e.gain*140,rx:3,fill:'var(--accent)'}));\n else { const y=160-(e.midi-min)/Math.max(1,max-min)*130; plot.append(node('rect',{x,y:y-4,width:Math.max(4,Math.min(528-x,e.duration*v.score.bpm/60/v.score.beats*516)),height:8,rx:3,fill:e.layer==='bass'?'var(--ink)':'var(--accent)',opacity:e.layer==='chord'?'.45':'1'})); }\n }\n }\n if(MODEL.mode!=='partials') plot.append(node('line',{id:'cursor',x1:12,x2:12,y1:10,y2:177,stroke:'var(--ink)','stroke-width':2,visibility:'hidden'}));\n const groups=$('#groups'); groups.replaceChildren();\n for (const label of v.groups || []) {const chip=document.createElement('span');chip.textContent=label;groups.append(chip);}\n if(MODEL.blind)visibility();\n [...$('#variants').children].forEach((b,i)=>b.setAttribute('aria-pressed',String(i===selected)));\n}\nconst player=viz.audio({onState(state){document.body.dataset.audioState=state;$('#play').disabled=state!=='idle';$('#stop').disabled=state==='idle';$('#status').textContent=viz.t(state==='idle'?'idle':state==='starting'?'starting':'playing');},onTick(beat){const fraction=beat<0?0:Math.min(1,beat/variants[selected].score.beats);$('#progress').style.width=(fraction*100)+'%';const cursor=$('#cursor');if(cursor){cursor.setAttribute('x1',12+fraction*516);cursor.setAttribute('x2',12+fraction*516);cursor.setAttribute('visibility',beat<0?'hidden':'visible');}const chips=[...$('#groups').children];chips.forEach((el,i)=>el.classList.toggle('is-current',beat>=0&&i===Math.min(chips.length-1,Math.floor(fraction*chips.length))));},onError(){$('#status').textContent=viz.t('error');}});\nvariants.forEach((v,i)=>{const b=document.createElement('button');b.type='button';b.dataset.variant=i;b.textContent=viz.t('option'+i);b.onclick=()=>{player.stop();selected=i;draw();};$('#variants').append(b);});\n$('#play').onclick=()=>player.play(variants[selected].score);\n$('#stop').onclick=()=>player.stop();\n$('#volume').oninput=e=>player.setVolume(Number(e.target.value)/100);\ndocument.body.dataset.audioState='idle';draw();\n\nif(MODEL.blind){\n const panel=document.createElement('div');panel.className='mf-actions';panel.id='blind-answers';\n const result=document.createElement('p');result.className='mf-facts';result.id='blind-feedback';result.setAttribute('role','status');result.textContent=viz.t('before');\n for(const [key,correct]of [['choose_p',true],['choose_q',false],['reveal',null]]){const b=document.createElement('button');b.type='button';b.textContent=viz.t(key);b.dataset.blindAnswer=key;b.onclick=()=>{player.stop();quizRevealed=true;visibility();result.textContent=(correct===null?'':viz.t(correct?'correct':'wrong')+' ')+viz.t('comparison_correct');};panel.append(b);}\n $('#variants').after(panel,result);\n}\n","audio":true,"strings":{"axis":"時間 →・上ほど高い音","choose":"版を選ぶ","clip":"全長:","envelope":"時間に対する振幅 →(1.4 秒)。ピークまで上がり、その後減衰します。立ち上がりに使う時間を比べましょう。","error":"音声を開始できませんでした。再試行するか、図と文章で確認してください。","fact0":"この版で旋律を覚えましょう。ほかの版でも旋律の音とタイミングは同じです。","fact1":"冒頭の E は C–E–G の第三音です。","fact2":"同じ E が、今度は A–C–E の第五音になります。","fact3":"E は伴奏の F–A–C には含まれません。重ねると F の長七の和音として聴くこともできます。","heading":"同じ旋律に三つの伴奏","idle":"版を選んで再生します。変更すると停止し、各クリップは最後で自動停止します。","intro":"最初の E に注目してから、フレーズ全体を比べます。旋律は全版で同じです。","key":"左から右へ読みます。棒は発音の開始と設定した長さ、上下の重なりは同時発音です。音名と説明でも確認できます。","option0":"旋律だけ","option1":"C の長三和音","option2":"A の短三和音","option3":"F の長三和音","play":"この版を再生","playing":"再生中。いつでも停止できます。","seconds":"秒","starting":"音声を準備中…","stop":"停止","volume":"音量"}}
C–E–G の上では E は第三音、A–C–E の上では第五音です。周波数は同じで、ほかの音との関係が変わりました。伴奏は旋律より低いため、同じ音の種類が別のオクターブに現れます。
F–A–C の上では、E は土台の三和音に含まれません。しかし間違いとは限りません。F–A–C–E を合わせれば F の長七の和音として聴くこともできます。三和音に重なる旋律音と見るか、拡張された和音の構成音と見るかは、文脈と分析の目的によります。
| 背景の三和音 | 冒頭の E の役割 | 固定したもの |
| C–E–G | 第三音 | 旋律の音高、タイミング、音色 |
| A–C–E | 第五音 | 旋律の音高、タイミング、音色 |
| F–A–C | 三和音の外の音。拡張すれば第七音 | 旋律の音高、タイミング、音色 |
フレーズにはほかの関係もあります。例えば A は C–E–G の外ですが、A–C–E と F–A–C には含まれます。冒頭の E だけでは全瞬間を説明できません。次の再生では別の音を追い、その役割を比べてください。
図の下側の薄い棒は反復する和音、上側の濃い棒は旋律です。横方向に重なる位置が同時発音を示します。図が込み入って見えるなら、音名の列を使い、旋律だけの版へ戻りましょう。
和音にない音が、和音の音をつなぐ
和声音は、その時点で基準とする和音に含まれる音です。非和声音は、その和音には含まれない音。どちらも一時点での関係であり、良い音と悪い音の永久的な分類ではありません。
C の長三和音の上で C–D–E と動くとき、C と E は和声音です。D はその間を同じ方向への順次進行でつなぎます。この位置に短く現れる D は、基本的な経過音の例です。経過音は和声音同士を同方向への順次進行で結びます。非和声音
短い D と長い D を聴き、E に到着するまで中央の音がどれだけ表に出ているかに注目します。
図を準備しています
和音にない音:通り過ぎるか、留まるかC の長三和音上の C–D–E。D は一拍目の途中で始まり、短い版で 0.28 秒、長い版で 0.9 秒続きます。E は二拍目または三拍目に到着。G–A–B の例にも応用します。
{"id":"music-harmony-passing","title":"和音にない音:通り過ぎるか、留まるか","summary":"C の長三和音上の C–D–E。D は一拍目の途中で始まり、短い版で 0.28 秒、長い版で 0.9 秒続きます。E は二拍目または三拍目に到着。G–A–B の例にも応用します。","height":760,"html":"<h2 data-i18n=\"heading\"></h2><p class=\"mf-intro\" data-i18n=\"intro\"></p>\n<div id=\"variants\" class=\"mf-options\" role=\"group\" data-i18n-label=\"choose\"></div>\n<p id=\"facts\" class=\"mf-facts\" aria-live=\"polite\"></p>\n<svg id=\"plot\" class=\"mf-plot\" viewBox=\"0 0 540 200\" aria-hidden=\"true\"></svg>\n<div class=\"mf-axis\"><span data-i18n=\"axis\"></span><span id=\"duration\"></span></div>\n<div id=\"groups\" class=\"mf-groups\"></div><p id=\"notation\" class=\"mf-notation\"></p><p class=\"mf-key\" data-i18n=\"key\"></p>\n<div id=\"envelope-panel\" hidden><svg id=\"envelope-plot\" class=\"mf-plot\" viewBox=\"0 0 540 120\" aria-hidden=\"true\"></svg><p class=\"mf-key\" data-i18n=\"envelope\"></p></div>\n<div class=\"mf-actions\"><button id=\"play\" data-i18n=\"play\"></button><button id=\"stop\" data-i18n=\"stop\" disabled></button></div>\n<div class=\"mf-progress\" aria-hidden=\"true\"><span id=\"progress\"></span></div><p id=\"status\" class=\"mf-status\" role=\"status\" data-i18n=\"idle\"></p>\n<div class=\"mf-volume\"><label for=\"volume\" data-i18n=\"volume\"></label><input id=\"volume\" type=\"range\" min=\"0\" max=\"100\" value=\"65\"></div>\n","css":"body{padding:24px}h2{font-size:22px;line-height:1.4}.mf-intro{color:var(--muted);margin:10px 0 18px;line-height:1.7}.mf-options{display:flex;gap:8px;flex-wrap:wrap}.mf-options button{flex:1 1 125px;min-height:46px;font-size:16px;white-space:normal;line-height:1.45;text-align:left;padding:10px 12px}.mf-options button[aria-pressed=true]{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.mf-facts{margin:16px 0;padding:14px;border-left:3px solid var(--accent);background:var(--surface);font-size:16px;line-height:1.75;min-height:4em}.mf-plot{width:100%;height:auto;display:block;margin:12px 0 0;background:var(--surface);border:1px solid var(--rule);border-radius:8px}.mf-axis{display:flex;justify-content:space-between;font-size:13px;color:var(--muted);gap:16px;margin:6px 0}.mf-notation{font-size:15px;line-height:1.8;overflow-wrap:anywhere;margin:10px 0;color:var(--ink)}.mf-groups{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0}.mf-groups span{padding:6px 10px;border:1px solid var(--rule);border-radius:5px;font-size:15px;white-space:pre}.mf-actions{display:flex;gap:8px;margin:18px 0 12px}.mf-actions button{min-height:46px;font-size:16px;flex:1}.mf-progress{height:3px;background:var(--rule);overflow:hidden}.mf-progress span{display:block;height:100%;background:var(--accent);width:0}.mf-status{font-size:14px;line-height:1.7;margin:10px 0;min-height:3.4em;color:var(--muted)}.mf-volume{display:flex;gap:12px;align-items:center;margin-top:12px;border-top:1px solid var(--rule);padding-top:12px;font-size:14px}.mf-volume input{min-width:60px;max-width:180px}.mf-volume label{white-space:nowrap}.mf-key{color:var(--muted);font-size:14px;line-height:1.6;margin:12px 0}@media(max-width:420px){body{padding:20px 14px}h2{font-size:20px}.mf-options button{flex-basis:105px}.mf-facts{padding:12px}}\n\n.mf-groups span.is-current{border-color:var(--accent);background:var(--accent-soft);box-shadow:inset 0 -2px 0 var(--accent)}\n\n[hidden]{display:none!important}\n#blind-answers{flex-wrap:wrap}#blind-answers button{flex:1 1 100px;white-space:normal;line-height:1.5;min-width:0;padding:10px}\n","js":"const MODEL = {\"mode\":\"notes\",\"min\":48,\"max\":71,\"blind\":false,\"variants\":[{\"score\":{\"bpm\":90,\"beats\":4,\"events\":[{\"midi\":48,\"hz\":130.812783,\"beat\":0,\"duration\":2,\"gain\":0.45,\"wave\":\"triangle\",\"layer\":\"chord\"},{\"midi\":52,\"hz\":164.813778,\"beat\":0,\"duration\":2,\"gain\":0.45,\"wave\":\"triangle\",\"layer\":\"chord\"},{\"midi\":55,\"hz\":195.997718,\"beat\":0,\"duration\":2,\"gain\":0.45,\"wave\":\"triangle\",\"layer\":\"chord\"},{\"midi\":60,\"hz\":261.625565,\"beat\":0,\"duration\":0.28,\"gain\":0.8,\"wave\":\"triangle\",\"layer\":\"melody\"},{\"midi\":62,\"hz\":293.664768,\"beat\":0.5,\"duration\":0.28,\"gain\":0.8,\"wave\":\"triangle\",\"layer\":\"melody\"},{\"midi\":64,\"hz\":329.627557,\"beat\":1,\"duration\":1.3,\"gain\":0.8,\"wave\":\"triangle\",\"layer\":\"melody\"}]},\"notation\":\"C4 → D4 → E4\",\"groups\":[]},{\"score\":{\"bpm\":90,\"beats\":4,\"events\":[{\"midi\":48,\"hz\":130.812783,\"beat\":0,\"duration\":2,\"gain\":0.45,\"wave\":\"triangle\",\"layer\":\"chord\"},{\"midi\":52,\"hz\":164.813778,\"beat\":0,\"duration\":2,\"gain\":0.45,\"wave\":\"triangle\",\"layer\":\"chord\"},{\"midi\":55,\"hz\":195.997718,\"beat\":0,\"duration\":2,\"gain\":0.45,\"wave\":\"triangle\",\"layer\":\"chord\"},{\"midi\":60,\"hz\":261.625565,\"beat\":0,\"duration\":0.28,\"gain\":0.8,\"wave\":\"triangle\",\"layer\":\"melody\"},{\"midi\":62,\"hz\":293.664768,\"beat\":0.5,\"duration\":0.9,\"gain\":0.8,\"wave\":\"triangle\",\"layer\":\"melody\"},{\"midi\":64,\"hz\":329.627557,\"beat\":2,\"duration\":0.7,\"gain\":0.8,\"wave\":\"triangle\",\"layer\":\"melody\"}]},\"notation\":\"C4 → D4 —— → E4\",\"groups\":[]},{\"score\":{\"bpm\":90,\"beats\":4,\"events\":[{\"midi\":55,\"hz\":195.997718,\"beat\":0,\"duration\":2,\"gain\":0.45,\"wave\":\"triangle\",\"layer\":\"chord\"},{\"midi\":59,\"hz\":246.941651,\"beat\":0,\"duration\":2,\"gain\":0.45,\"wave\":\"triangle\",\"layer\":\"chord\"},{\"midi\":62,\"hz\":293.664768,\"beat\":0,\"duration\":2,\"gain\":0.45,\"wave\":\"triangle\",\"layer\":\"chord\"},{\"midi\":67,\"hz\":391.995436,\"beat\":0,\"duration\":0.28,\"gain\":0.8,\"wave\":\"triangle\",\"layer\":\"melody\"},{\"midi\":69,\"hz\":440.0,\"beat\":0.5,\"duration\":0.28,\"gain\":0.8,\"wave\":\"triangle\",\"layer\":\"melody\"},{\"midi\":71,\"hz\":493.883301,\"beat\":1,\"duration\":1.3,\"gain\":0.8,\"wave\":\"triangle\",\"layer\":\"melody\"}]},\"notation\":\"G4 → A4 → B4\",\"groups\":[]}]};\nconst $ = s => document.querySelector(s);\nconst variants = MODEL.variants;\nlet selected = 0;\nlet quizRevealed = !MODEL.blind;\nfunction visibility(){for(const q of ['#facts','#plot','.mf-axis','#groups','#notation','.mf-key'])$(q).toggleAttribute('hidden',!quizRevealed);document.body.dataset.quizRevealed=String(quizRevealed);}\nconst svgNS = 'http://www.w3.org/2000/svg';\nfunction node(tag, attrs = {}) { const el = document.createElementNS(svgNS, tag); for (const [k,v] of Object.entries(attrs)) el.setAttribute(k,v); return el; }\nfunction draw() {\n const v = variants[selected], plot = $('#plot'); plot.replaceChildren();\n $('#facts').textContent = viz.t('fact'+selected);\n $('#duration').textContent = viz.t('clip') + ' ' + (v.score.beats * 60 / v.score.bpm).toFixed(1) + ' ' + viz.t('seconds');\n $('#notation').textContent = v.notation;\n if (MODEL.mode === 'partials') {\n const e=v.score.events[0], p=e.partials;\n $('#envelope-panel').hidden=false;\n const envelope=$('#envelope-plot');envelope.replaceChildren();\n const attack=Math.min(e.attack,e.duration/2),points=[[12,108],[12+516*attack/e.duration,12]];\n for(let i=1;i<=60;i++){const t=attack+(e.duration-attack)*i/60,amplitude=Math.pow(.0001/(.05*e.gain),(t-attack)/(e.duration-attack));points.push([12+516*t/e.duration,108-amplitude*96]);}\n points.push([528,108]);envelope.append(node('polyline',{points:points.map(p=>p.join(',')).join(' '),fill:'none',stroke:'var(--accent)','stroke-width':3}));\n for(let i=0;i<4;i++) {\n plot.append(node('rect',{x:40+i*125,y:160-(p[i]||0)*125,width:58,height:(p[i]||0)*125,fill:'var(--accent)'}));\n const t=node('text',{x:69+i*125,y:185,'text-anchor':'middle',fill:'var(--ink)','font-size':18}); t.textContent=(i+1)+'×';plot.append(t);\n }\n } else {\n const events=v.score.events, min=MODEL.min??Math.min(...events.map(e=>e.midi)), max=MODEL.max??Math.max(...events.map(e=>e.midi));\n for(let i=0;i<=v.score.beats;i++) plot.append(node('line',{x1:12+i/v.score.beats*516,x2:12+i/v.score.beats*516,y1:16,y2:170,stroke:'var(--rule)'}));\n for(const e of events){\n const x=12+e.beat/v.score.beats*516;\n if(MODEL.mode==='pulse') plot.append(node('rect',{x,y:166-e.gain*140,width:Math.max(4,516/v.score.beats*.38),height:e.gain*140,rx:3,fill:'var(--accent)'}));\n else { const y=160-(e.midi-min)/Math.max(1,max-min)*130; plot.append(node('rect',{x,y:y-4,width:Math.max(4,Math.min(528-x,e.duration*v.score.bpm/60/v.score.beats*516)),height:8,rx:3,fill:e.layer==='bass'?'var(--ink)':'var(--accent)',opacity:e.layer==='chord'?'.45':'1'})); }\n }\n }\n if(MODEL.mode!=='partials') plot.append(node('line',{id:'cursor',x1:12,x2:12,y1:10,y2:177,stroke:'var(--ink)','stroke-width':2,visibility:'hidden'}));\n const groups=$('#groups'); groups.replaceChildren();\n for (const label of v.groups || []) {const chip=document.createElement('span');chip.textContent=label;groups.append(chip);}\n if(MODEL.blind)visibility();\n [...$('#variants').children].forEach((b,i)=>b.setAttribute('aria-pressed',String(i===selected)));\n}\nconst player=viz.audio({onState(state){document.body.dataset.audioState=state;$('#play').disabled=state!=='idle';$('#stop').disabled=state==='idle';$('#status').textContent=viz.t(state==='idle'?'idle':state==='starting'?'starting':'playing');},onTick(beat){const fraction=beat<0?0:Math.min(1,beat/variants[selected].score.beats);$('#progress').style.width=(fraction*100)+'%';const cursor=$('#cursor');if(cursor){cursor.setAttribute('x1',12+fraction*516);cursor.setAttribute('x2',12+fraction*516);cursor.setAttribute('visibility',beat<0?'hidden':'visible');}const chips=[...$('#groups').children];chips.forEach((el,i)=>el.classList.toggle('is-current',beat>=0&&i===Math.min(chips.length-1,Math.floor(fraction*chips.length))));},onError(){$('#status').textContent=viz.t('error');}});\nvariants.forEach((v,i)=>{const b=document.createElement('button');b.type='button';b.dataset.variant=i;b.textContent=viz.t('option'+i);b.onclick=()=>{player.stop();selected=i;draw();};$('#variants').append(b);});\n$('#play').onclick=()=>player.play(variants[selected].score);\n$('#stop').onclick=()=>player.stop();\n$('#volume').oninput=e=>player.setVolume(Number(e.target.value)/100);\ndocument.body.dataset.audioState='idle';draw();\n\nif(MODEL.blind){\n const panel=document.createElement('div');panel.className='mf-actions';panel.id='blind-answers';\n const result=document.createElement('p');result.className='mf-facts';result.id='blind-feedback';result.setAttribute('role','status');result.textContent=viz.t('before');\n for(const [key,correct]of [['choose_p',true],['choose_q',false],['reveal',null]]){const b=document.createElement('button');b.type='button';b.textContent=viz.t(key);b.dataset.blindAnswer=key;b.onclick=()=>{player.stop();quizRevealed=true;visibility();result.textContent=(correct===null?'':viz.t(correct?'correct':'wrong')+' ')+viz.t('comparison_correct');};panel.append(b);}\n $('#variants').after(panel,result);\n}\n","audio":true,"strings":{"axis":"時間 →・上ほど高い音","choose":"版を選ぶ","clip":"全長:","envelope":"時間に対する振幅 →(1.4 秒)。ピークまで上がり、その後減衰します。立ち上がりに使う時間を比べましょう。","error":"音声を開始できませんでした。再試行するか、図と文章で確認してください。","fact0":"D は和声音 C と E の間を順次進行で短くつなぎます。","fact1":"D が目立ち、E の到着は一拍遅れます。音の順序と伴奏は同じです。","fact2":"G–B–D の上では、短い A が同じようにつなぐ役割を果たします。","heading":"和音にない音:通り過ぎるか、留まるか","idle":"版を選んで再生します。変更すると停止し、各クリップは最後で自動停止します。","intro":"同じ三音と伴奏を比較。二つ目では中央の音を長くし、次の音の到着も遅らせます。","key":"左から右へ読みます。棒は発音の開始と設定した長さ、上下の重なりは同時発音です。音名と説明でも確認できます。","option0":"C–D–E・短い D","option1":"C–D–E・長い D","option2":"新しい例・G–A–B","play":"この版を再生","playing":"再生中。いつでも停止できます。","seconds":"秒","starting":"音声を準備中…","stop":"停止","volume":"音量"}}
C–D–E の両版で D は一拍目の途中から始まります。短い版では E が二拍目に到着し、長い版では D を延ばして E の到着を三拍目に遅らせます。音高の順序と伴奏は固定し、長さと到着時刻を一緒に変えています。
長い D は目立ち、先へ進む期待を強めるかもしれません。それでも同じ二音を順次進行で結んでいます。長くなっただけで誤音になるわけではなく、長さだけであらゆる分析名が決まるわけでもありません。
新しい例で役割を確認する
三つ目の版は G–B–D の上の G–A–B です。どの旋律音が土台の三和音に含まれず、前後とどうつながっていますか。さらに旋律を固定し、伴奏を A–C–E にした場合、A はまだ非和声音でしょうか。
答えと、基準の変化を見る
G–B–D の上では A が非和声音で、G と B を上行の順次進行で短く結びます。C の長三和音上の D に対応する役割です。
A–C–E の上では A は根音、つまり和声音です。背景が変わればラベルも変わります。その音が和音に含まれるかを決める前に、基準の和音を示すか推定する必要があります。
旋律のすべてを和声音と経過音で説明できる?
できません。刺繍音、掛留音、先取音、拡張された和音の音などには、さらに文脈が必要です。通常の三和音の連続を基盤にしない音楽もあります。今回の二つの語は比較の出発点であり、「基本的には和声音だけを使い、例外は短く」という規則ではありません。
同じ音も、和声を捉える範囲によって分析が変わります。三和音にはなくても七の和音には含まれるかもしれません。どの背景を仮定したかを説明してから、名前を付けましょう。
知っている曲で、旋律が繰り返され、低音や伴奏が変わる場所を探します。一つの長い旋律音を追い、「音は同じで、背景が変わった」と観察し、確かめられる関係を補ってください。次回は音高関係を保ちながら、音色と層を変えます。