▶ 実 行
▶ 実行
クリア
よみがなコンバーター(メロ譜作成&VOCALOID歌詞入力支援)
by 村上純 (MAGES.)
DOM親要素に『<h2 style="text-align:center">メロ譜作成&歌詞入力支援・よみがなコンバーター</h2> <div id="main" style="font-size:0.95em; font-family:Hiragino Sans,Hiragino Kaku Gothic ProN,sans-serif; width:70%; height:99%; margin:0 auto; display:flex; -webkit-justify-content:center; justify-content:center; align-items:center -webkit-align-items: center;"> <div id="left" style="width:99%;"></div> <div id="center" style="width:2%; display:flex; justify-content:center; align-items:center; color:#00F">></div> <div id="right" style="width:99%;"></div> </div> <div id="option"> <div id="checks" style="width:80%; max-width:430px; margin:0 auto;"> </div> </div> <div id="name" style="text-align:center"> <a href="https://note.com/junmurakami/n/n35cd70b8dc12" target="_blank" style="font-size:0.9em"> Developed by Jun Murakami.(解説記事&ご意見はこちらまで) </a><br><br> <p style="font-size:0.8em">※APIの仕様で1日3000回までの実行制限があるため、過度な連続実行はお控えください。<br>Windowsユーザーの方は<a href="https://note.com/junmurakami/n/n35cd70b8dc12" target="_blank">ローカルアプリ版</a>もお試しください。<br><br>(ver2.1)</p> </div> <div id="credit" style="text-align:center"> <a href="https://www.goo.ne.jp/"> <img src="//u.xgoo.jp/img/sgoo.png" width="150" alt="supported by goo" title="supported by goo"> </a> </div>』をHTML設定。 「#runbox」へDOM親要素設定。 DOM親要素の「幅」に「98%」をDOMスタイル設定。 DOM親要素の「高さ」に「98%」をDOMスタイル設定。 「#left」へDOM親要素設定。 「■歌詞テキスト」のラベル作成。改行作成。 空のテキストエリア作成して、歌詞エリアに代入。改行作成。 「変換実行」のボタン作成して、実行ボタンに代入。「 」のラベル作成。 「クリア」のボタン作成して、クリアボタンに代入。「 」のラベル作成。 //「クリップボードからペースト」のボタン作成して、ペーストボタンに代入。「 」のラベル作成。 改行作成。改行作成。 「#right」へDOM親要素設定。 「■変換後テキスト」のラベル作成。改行作成。 空のテキストエリア作成して、変換歌詞エリアに代入。改行作成。 「[は]→わ」のボタン作成して、HAWAボタンに代入。「 」のラベル作成。 「[へ]→え」のボタン作成して、HEEボタンに代入。「 」のラベル作成。 「改行削除」のボタン作成して、改行ボタンに代入。「 」のラベル作成。 「クリップボードへコピー」のボタン作成して、コピーボタンに代入。 改行作成。改行作成。 「#checks」へDOM親要素設定。 「英語を変換しない」のチェックボックス作成して、英語チェックに代入。「 」のラベル作成。 「カタカナを変換しない」のチェックボックス作成して、カナチェックに代入。改行作成。 「拗音(ゃゅょゎぁぃぅぇぉ)を繋げる」のチェックボックス作成して、拗音チェックに代入。「 」のラベル作成。 「促音(っ)を繋げる」のチェックボックス作成して、促音チェックに代入。改行作成。 「半角スペースで分離する(メロディ譜/DAW&スコアアプリ向け)」のチェックボックス作成して、スペースチェックに代入。改行作成。 //「"は" を "わ" に変換する(VOCALOID向け/変換後も操作可能)」のチェックボックス作成して、わ繋ぎチェックに代入。改行作成。 改行作成。改行作成。 英語チェックの「checked」にオンをDOM属性設定。 カナチェックの「checked」にオンをDOM属性設定。 拗音チェックの「checked」にオンをDOM属性設定。 促音チェックの「checked」にオンをDOM属性設定。 スペースチェックの「checked」にオンをDOM属性設定。 歌詞エリアに{"width":"99%","max-width":"99%","height":"300px","max-height":"500px"}をDOMスタイル一括設定。 変換歌詞エリアに{"width":"99%","max-width":"99%","height":"300px","max-height":"500px"}をDOMスタイル一括設定。 実行ボタンの「背景色」に「#cef」をDOMスタイル設定。 ID=歌詞エリアの「id」をDOM属性取得。 「document.getElementById('{ID}').focus();」をJS実行。 //グローバル変数 出力データは空配列。 変換スイッチ={"は":"","へ":""}。変換ストックHAWAは空配列。変換ストックHEEは空配列。 実行ボタンをクリックした時には、 カウンタとは変数。カウンタ=0。歌詞データは空配列。分解リストは空配列。処理中行=空。処理中文字=空。キープ=空。カタカナキープ=空。英字キープ=空。 歌詞データ=歌詞エリアのテキスト取得して改行で区切る 歌詞データを反復 対象を文字列分解して反復 処理中文字は対象。 拗音は空。促音は空。 もし、(処理中文字を「/[ャュョヮァィゥェォ]/」で正規表現マッチ)<>NULL&&(拗音チェックの「checked」をDOM属性取得)=はいならば 拗音は「ON」 違えば、もし、(処理中文字=「ッ」)&&(促音チェックの「checked」をDOM属性取得)=はいならば 促音は「ON」 ここまで。 もし、(処理中文字をカタカナか判定)=はい&&(カナチェックの「checked」をDOM属性取得)=はいならば もし、カタカナキープ=空ならば カタカナキープは処理中文字。 もし、英字キープ<>空ならば 処理中行は「{処理中行} {英字キープ}」 英字キープは空。 違えば、もし、キープ<>空ならば キープを分解リストに配列追加。 もし、(拗音=「ON」||促音=「ON」)ならば 処理中行は「{処理中行}Ka@{カウンタ}¥」 違えば 処理中行は「{処理中行} Ka@{カウンタ}¥」 ここまで。 カウンタ=カウンタ+1 キープは空 ここまで。 違えば もし、(拗音=「ON」||促音=「ON」)ならば カタカナキープは「{カタカナキープ}{処理中文字}」 違えば カタカナキープは「{カタカナキープ} {処理中文字}」 ここまで。 ここまで。 違えば、もし、(処理中文字を英字か判定)=はい&&(英語チェックの「checked」をDOM属性取得)=はいならば もし、英字キープ=空ならば 英字キープは処理中文字。 もし、カタカナキープ<>空ならば 処理中行は「{処理中行} {カタカナキープ}」 カタカナキープは空。 違えば、もし、キープ<>空ならば キープを分解リストに配列追加。 もし、(拗音=「ON」||促音=「ON」)ならば 処理中行は「{処理中行}Ka@{カウンタ}¥」 違えば 処理中行は「{処理中行} Ka@{カウンタ}¥」 ここまで。 カウンタ=カウンタ+1 キープは空 ここまで。 違えば 英字キープは「{英字キープ}{処理中文字}」 ここまで。 違えば、 もし、(カタカナキープ<>空)ならば 処理中行は「{処理中行} {カタカナキープ}」 キープは「{キープ}{処理中文字}」 カタカナキープは空 違えば、もし、(英字キープ<>空)ならば 処理中行は「{処理中行} {英字キープ}」 キープは「{キープ}{処理中文字}」 英字キープは空 違えば、 キープは「{キープ}{処理中文字}」 ここまで。 ここまで。 ここまで。 もし、(カタカナキープ<>空)ならば 処理中行は「{処理中行} {カタカナキープ}」 キープは空。カタカナキープは空 違えば、もし、(英字キープ<>空)ならば 処理中行は「{処理中行} {英字キープ}」 キープは空。英字キープは空 違えば、もし、(キープ<>空)ならば キープを分解リストに配列追加。 もし、(拗音=「ON」||促音=「ON」)ならば 処理中行は「{処理中行}Ka@{カウンタ}¥」 違えば 処理中行は「{処理中行} Ka@{カウンタ}¥」 ここまで。 カウンタ=カウンタ+1 キープは空。カタカナキープは空 違えば、 処理中行は「{処理中行} {処理中文字}」 ここまで。 処理中行の1から1だけ文字削除して処理中行に代入 出力データに処理中行を一行追加 処理中文字は空。処理中行は空。 ここまで。 URL=「https://labs.goo.ne.jp/api/hiragana」 appid=「92459f8ae678689f6a463f553c77c7cb3c36e67f8dbffc5d7c8f22c5412e23ea」 type=「hiragana」 分解リスト=分解リストを「≒」で配列結合 分解リスト=分解リストの「,」を「,」に置換 obj={"app_id":appid,"sentence":分解リスト,"output_type":type} objでAJAXオプションPOST設定 URLへAJAX送信した時には 変換済みとは変数。変換済み=空。 結果=対象をJSONデコード 結果["converted"]を文字列分解して反復 処理中文字は対象 もし、(処理中文字を「/[ゃゅょゎぁぃぅぇぉャュョヮァィゥェォ]/」で正規表現マッチ)<>NULL&&(拗音チェックの「checked」をDOM属性取得)=はいならば 拗音は「ON」 違えば、もし、(処理中文字=「っ」||処理中文字=「ッ」)&&(促音チェックの「checked」をDOM属性取得)=はいならば 促音は「ON」 違えば、もし、(処理中文字=『 』||処理中文字=『 』)ならば 処理中文字は空 ここまで。 もし、(変換済み<>空)&&(拗音<>「ON」)&&(促音<>「ON」)ならば 変換済みは「{変換済み} 」 ここまで。 もし、(変換済み=空)ならば 変換済みは処理中文字 違えば 変換済みは「{変換済み}{処理中文字}」 ここまで。 拗音は空。促音は空。 ここまで。 変換済み=変換済みを『≒』で区切る 変換済みを反復 出力データの「Ka@{対象キー}¥」を対象に置換して出力データに代入。 ここまで。 もし、(スペースチェックの「checked」をDOM属性取得)=はいならば 出力データの『[ ]{2,}』を「 」へ正規表現置換して出力データに代入。 出力データの「[ ]*,[ ]*」を「{改行}」へ正規表現置換して出力データに代入。 出力データの「,」を「,」へ置換して出力データに代入。 違えば、 出力データの「 」を「」に置換して出力データに代入。 出力データの「[ ]*,[ ]*」を「{改行}」へ正規表現置換して出力データに代入。 出力データの「,」を「,」へ置換して出力データに代入。 ここまで。 出力データの「 ([.,;:/.,;:/@、。!?\"#$%&'=¥”#$%&!?’=|])」を「$1」へ正規表現置換して出力データに代入。 出力データを変換歌詞エリアにテキスト設定。 出力データ=[]。変換スイッチ={"は":"","へ":""}。変換ストックHAWAは空配列。変換ストックHEEは空配列。 HAWAボタンに「[は]→わ」をDOMテキスト設定。HEEボタンに「[へ]→え」をDOMテキスト設定。 ここまで。 ここまで。 クリアボタンをクリックした時には、 歌詞エリアに空をDOMテキスト設定。 //変換歌詞エリアに空をDOMテキスト設定。 ここまで。 /* ペーストボタンをクリックした時には、 クリップボード取得した時には もし、対象=NULLならば 「クリップボードのデータを取得できませんでした。{改行}ブラウザのセキュリティ設定によっては動作しないことがあります。{改行}手動でテキストをペーストしてください。」と言う。 違えば 歌詞エリアに対象をDOMテキスト設定。 ここまで。 ここまで。 ここまで。 */ コピーボタンをクリックした時には、 変換歌詞エリアからテキスト取得して、それをクリップボード設定。 ここまで。 HAWAボタンをクリックした時には、 「は」と「わ」で相互変換 ここまで。 HEEボタンをクリックした時には、 「へ」と「え」で相互変換 ここまで。 改行ボタンをクリックした時には、 「変換後テキストの改行を削除して繋げます。{改行}(空白行のみ、そのまま残ります。){改行}{改行}この操作は元に戻せません。実行しますか?」で二択 もし、それがはいなら Sは空配列。連続判定は0。 変換歌詞エリアのテキスト取得 それを反復 もし、対象=改行なら もし、連続判定=1なら タブをSに配列追加。 連続判定は1。 違えば もし、(スペースチェックの「checked」をDOM属性取得)=はいならば 「 」をSに配列追加。 ここまで。 連続判定は1。 ここまで。 違えば 対象をSに配列追加。 連続判定は0。 ここまで。 ここまで。 //Sを表示 Sを変換歌詞エリアにテキスト設定。 変換歌詞エリアのテキスト取得の「,」を「」に置換 それのタブを改行&改行に置換を変換歌詞エリアにテキスト設定。 ここまで。 ここまで。 ●(Sが|Sの|Sを)英字か判定とは Sを「^[A-Za-zA-Za-z]」で正規表現マッチ。 もし、それがNULLならば、 いいえを戻す。 違えば、 はいを戻す。 ここまで。 ここまで。 ●(AとBを|AとBで|AとBの)相互変換とは 変換リストは空配列。 カウンタ=0。 出力テキスト=空配列。 変換ストック=空配列。 もし、A=「は」ならば 変換ストックは変換ストックHAWA 違えば 変換ストックは変換ストックHEE ここまで。 もし、変換スイッチ@A=「」ならば 変換歌詞エリアのテキスト取得を文字列分解して反復 もし、対象がAならば 変換リストにBを配列追加。変換ストックにAを配列追加。 違えば、もし、対象がBならば 変換リストにBを配列追加。変換ストックにBを配列追加 ここまで。 ここまで。 変換スイッチ@AはA 違えば、 変換歌詞エリアのテキスト取得を文字列分解して反復 もし、対象がAならば もし、変換スイッチ@A=Bならば 変換リストにBを配列追加 違えば、 変換リストにAを配列追加 ここまで。 違えば、もし、対象がBならば もし、変換スイッチ@A=Aならば 変換リストにAを配列追加 違えば 変換リストにBを配列追加 ここまで。 ここまで。 ここまで。 もし、(変換リストの配列要素数)<>(変換ストックの配列要素数)ならば 「[{A}] と [{B}] の合計数が前回の変換時と異なります。{改行}再変換しますか?」で二択 もし、それがいいえならば 戻る 違えば 変換ストック=空配列 変換歌詞エリアのテキスト取得を文字列分解して反復 もし、対象がAならば 変換ストックにAを配列追加。 違えば、もし、対象がBならば 変換ストックにBを配列追加 ここまで。 ここまで。 ここまで。 ここまで。 変換リストを反復 もし、対象=Aならば もし、(変換ストック@対象キー)=B&&(変換スイッチ@A=A)ならば 変換リスト[対象キー]はB ここまで。 ここまで。 ここまで。 もし、変換スイッチ@A=Bならば 変換スイッチ@AはA 違えば 変換スイッチ@AはB ここまで。 ここまで。 変換歌詞エリアのテキスト取得を文字列分解して反復 もし、(対象=A)||(対象=B)ならば 出力テキスト[対象キー]は変換リスト[カウンタ]。カウンタ=カウンタ+1 違えば、もし、対象が「」ならば 出力テキスト[対象キー]はタブ。 違えば、 出力テキスト[対象キー]は対象。 ここまで。 ここまで。 出力テキストを空で配列結合 それのタブを改行に置換してそれを変換歌詞エリアにテキスト設定。 もし、A=「は」ならば 変換ストックHAWAは変換ストック もし、変換スイッチ@A=Aならば HAWAボタンに「[{B}]→{A}」をDOMテキスト設定。 違えば HAWAボタンに「[{A}]→{B}」をDOMテキスト設定。 ここまで。 違えば 変換ストックHEEは変換ストック もし、変換スイッチ@A=Aならば HEEボタンに「[{B}]→{A}」をDOMテキスト設定。 違えば HEEボタンに「[{A}]→{B}」をDOMテキスト設定。 ここまで。 ここまで。 ここまで。
cca97bea3452200adc761e2629908c40
2028