JavaScript is not enabled on browser.
演奏機能の更新履歴
Ver.1.82.15 ・WebWorkersのspec追記
Ver.1.81.15 ・spec追記
Ver.1.80.15 ・Ver.1.80.14の不備を修正
 overtoneなしの位相初期化の不具合を修正
 位相の連続性を改善
Ver.1.80.14 ・overtoneを更新
 各音階の自然なgain調整の演算を追加
 各音階の位相初期値を更新(mod 5-1の演算)
・testcase-Yuyake_Koyake/_overtoneを更新(type/g1を削除・overtone=4 ⇒ 5)
・testcase-Auld_Lang_Syne/_overtoneを更新(type/f0/g0/f1/g1を削除・overtone=3 ⇒ 5)
Ver.1.79.14 ・testcase-Auld_Lang_Syne_overtoneを更新(overtone=4 ⇒ 3)
Ver.1.78.14 ・testcase-tableを更新($typedef1を追加)
・testcase-Auld_Lang_Syne/_overtoneを更新
 f0/g0/f1/g1:調整後 ⇒ 調整前
・testcase-Auld_Lang_Syne_overtone2を追加
 f0/g0/f1/g1:調整後
・?testcase link-Auld_Lang_Syne-overtone-2を追加
Ver.1.77.14 ・output_wave.jsを更新(glissandoの各音階gainの過小評価を改善)
・testcase-glissando1/_duty0/glissando2を更新
 amplitude0=2 ⇒ amplitude1=0.5
Ver.1.76.14 ・testcase-Auld_Lang_Syne/_overtoneを追加
 f0/g0/f1/g1を調整(filter gainで1/fゆらぎを調整)
・?testcase link-Auld_Lang_Syne/-overtoneを追加
Ver.1.75.14 ・input-amplitude(kampli)の仕様修正
 kampliとamplitude0/amplitude1:従属 ⇒ 独立
・handler_wave_worker_sw2.jsを更新
・output_wave.jsを更新
・?testcase link-glissando1/glissando2を調整
・?testcase link-glissando1-duty0/-echoを追加
[test]play-buttonsを更新
 glissando1~2を追加
 overtone1~3を調整
Ver.1.74.14 ・拡張datasetにti/toの項目を追加
・?testcase link-glissando1/glissando2を追加
[test]play-buttonsを更新
Ver.1.73.14 ・handler_wave_worker_sw2.jsを整理
 self.str2sec()を追加
 self.str2freq()を追加
 self.str2arr_f()を追加
Ver.1.72.14 ・testcase-Yuyake_Koyakeのscriptを調整(出力の変更なし)
・testcase-*_overtoneを更新
 s_stereo:100 ⇒ 75
Ver.1.71.14 ・dataset-typeを拡張(任意波形tableの線形補間に対応)
 format修正:type=x0,x1,...xn:y0,y1,...yn ⇒ type=[x0,x1,...xn:y0,y1,...yn]
 基本dataset:通常formatに対応
・拡張datasetを更新(重複定義のerror終了処理を追加)
・wave-typeを更新
 sawsmooth/sawsmooth_randを追加
・testcase-tableを追加
・?testcase link-tableを追加
[test]play-buttonsを更新
 table1~3を追加
Ver.1.70.14 ・script-Verを追加
 Ver.1:後方互換性を担保
 Ver.2:基本dataset:通常formatの仕様変更
・拡張datasetを更新
 command単体で実行可
 代入formatを列挙して実行可(項目数の制限なし)
・?testcase linkを一括更新(script-Ver.2用)
 testcase-1を調整(clear;の使用例)
 testcase-Froschgesang_echo/_overtoneを修正($e1/$e2を適用)
 一括調整:$1; r; ⇒ r; $1;
・tVer@URL-parameterを追加
・testcase-Yuyake_Koyakeを更新(overtoneなしを追加)
Ver.1.69.14 ・handler_wave.js/handler_wave_worker_sw2.jsを整理(dataset定義の仕様変更の準備)
・代入formatのerror終了処理を改善
Ver.1.68.14 ・file nameを更新(任意名を入力可)
 要素:span ⇒ input
 拡張子:あり ⇒ なし
 auto checked時、後方互換性あり
 固有名詞を含むtestcaseの場合、auto非表示
・testcase-Yuyake_Koyakeを追加
 $commonを修正:p1=0 ⇒ 削除
 余韻の調整:$lastを追加
 $commonを変更:type無指定 ⇒ type=1
 作詞/作曲の順番を訂正:曲先 ⇒ 詩先
 $chord1~3の音の長さを修正(引用を明記)
 $sheetを一旦、削除(command不足)
・?testcase link-Yuyake_Koyakeを追加
Ver.1.67.14 ・overtoneを更新
 倍音のgainを厳密化(音質の劣化を改善:max係数の目安≒7.15 ⇒ 6.15)
・testcase-duty0/duty1を更新(order_dを調整)
Ver.1.66.14 ・old-weightを更新(default:0.005 ⇒ 0)
Ver.1.65.14 ・datasetを拡張(代入formatを追加)
・dataset不正のerror終了処理を追加
・testcase-duty0/duty1を追加
・?testcase link-beep3以降を更新(macro定義の一部を代入formatに変更)
・?testcase link-0/duty0/duty1/1を追加
[test]play-buttonsを更新(代入formatを追記)
Ver.1.64.14 ・overtoneを追加(基音より高周波数の倍音を自動付与)
 select-0~12 ⇒ input-0~24
 単音/和音pageのamplitudeの内部limiterを解除・max係数の目安を改善
・拡張datasetにovertoneの項目を追加
・?testcase link-overtoneを追加
・?testcase link-beep3を更新
[test]play-buttonsを更新
 beep3を変更
 chord2を追加
 overtone1~3を追加
・handler_wave.jsを更新
 $.inputVal_id() ⇒ $.inputNum_id()
Ver.1.63.14 [test]play-buttonsを更新
 sweep1~3を追加
 play9~11 with vibratoを削除
 vibrato1~3を追加
Ver.1.62.14 [test]play-buttons-beep1/beep2のdatasetを修正(testcaseに準拠)
 rate=-2 ⇒ 2^-2=0.25
 order=2 ⇒ 2^2=4
Ver.1.62.13 wave plotから[spec]wave plotのpageを分離
Ver.1.61.13 ・random-buttonを追加(test case用)
Ver.1.60.13 [test]play-buttonsを更新(dataset列を追加・beep3を追加)
・?testcase link-beep3を追加
Ver.1.59.13 ・file size制限の不具合を再修正(check時のみ、params.number_samplesが未反映の状態を修正)
 self.update_number_samples()のcall箇所:self.waveo.init()直前とplay直前 ⇒ self.waveo.init()直後
Ver.1.59.12 [test]play-buttonsを更新(chordを追加)
Ver.1.58.12 [test]play-buttonsを更新(default/beep1/beep2/play with vibratoを追加)
 厳密なJSONを記述するtextareaに変更(任意の周波数で無音の場合、gainの要調整)
 JSON項目の列挙順を変更(拡張datasetに準拠)
Ver.1.57.12 ・f_vibrato[Hz]を追加
 f_vib=-10~10 ⇒ 無制限(着信音の場合、10~15[Hz])
・?testcase link-beep1/beep2を追加(各種機能の結合test用)
Ver.1.56.12 ・sweep中の位相の連続性を改善(dataset内で位相の前回値を継承)
 f_vib=-3~3 ⇒ -10~10
Ver.1.56.11 ・拡張datasetにf_vibの項目を追加(vibratoを模擬)
Ver.1.55.11 ・?testcase link-echoを追加(長いdelay成分の反響を模擬)
・spec追記
Ver.1.54.11 ・?testcase link-100sの追加表示
Ver.1.53.11 ・並列処理の最適なNthread既定値を自動選択
Ver.1.52.11 ・script入力のみ、BPMを追加(tempoに自動変換)
・script入力のみ、Δf[Hz]に=4/tempoのcheckboxを追加
・tempo入力欄のtime演算表示の位置を調整(time* ⇒ *time)
・Δfの定義の一部を削除して訂正
 1/fゆらぎ(spectrum強度∝1/fの関係)と区別
・testcaseを更新
 tempo=0.5 ⇒ 0.5172413793103449(体内時計の116BPM:月に同調のtempo)
 Δf[Hz]=10 ⇒ 4/tempo=7.73...(θ~α脳波の周波数:地球の固有振動数||放射線帯基準peak付近)
Ver.1.51.11 [test]wave plotを更新
Ver.1.50.11 ・sample数/secを更新
Ver.1.49.11 ・fade-orderを更新(cosを追加)
 script入力値:order_fade=3
 UI選択値:cos
・handler_baseview.jsを整理
[test]wave plotを更新
Ver.1.48.11 ・高音質のint24に対応(3Byte数/sampleを追加)
・handler_baseview.jsを更新(DataView非対応のint24は文字列操作で実装)
[test]wave plotを更新
Ver.1.47.11 [test]play-buttonsを更新
 check_limit(params)を統廃合
Ver.1.46.11 ・超高音質のint32に対応(4Byte数/sampleを追加)
[test]wave plotを更新
[test]play-buttonsの動作を正常化
Ver.1.45.11 ・script入力のみ、amplitudeにauto-maxのcheckboxを追加
 post処理で振幅を最大化する自動scaling(scale比大で波形の劣化あり)
Ver.1.44.11 ・scriptのdatasetの最小単位を更新(時間を省略時、1beatの指定周波数に変換)
 {r; 0; 440; [440,880];} -> {b:r; b:0; b:440; b:[440,880];}
・testcaseを更新
・testcaseのmacro定義のspellを訂正
 code ⇒ chord
・sourceの変数名を修正
 (octave, code) ⇒ (octave, note)
Ver.1.43.11 ・macro定義のtagの正規表現に空白||改行文字を追加
 ES6対応環境のみ、spacingを保持してtext置換可
Ver.1.42.11 ・macro定義のdatasetの正規表現にminus-とplus+を追加
 数値の符号入力||指数表記に対応
 datasetのorder_fade||oc記法を正常化
Ver.1.42.10 ・original scriptのmacro残存の場合、error終了に変更
・macro定義のtagの正規表現にunderscore_とhyphen-を追加
Ver.1.41.10 ・amplitudeのint値over-flow@stream処理の場合、error終了に修正(Ver.1.40.9の追加修正)
Ver.1.41.9 ・macro機能を追加(入力textの前方からmacro定義順に{}内のtext置換)
・original script出力欄を追加(text置換結果の確認用)
Ver.1.40.9 ・amplitudeのint値over-flow@post処理の場合、error終了に修正
Ver.1.40.8 fade-rangeのp0/p1の仕様変更
 割合指定 ⇒ 時間[sec]指定(単音等、datasetのtime[msec]=1000の場合、同義)
・fade-orderを更新
・従来の各設定値を変更
 script入力値:order_fade=-1 || -2
 UI選択値:old1 || old2
Ver.1.39.8 ・fade-orderを更新
 order_fade=1の曲線近似を追加
・従来の重み平均処理の設定値を変更
 script入力値:order_fade=0
 UI選択値:1.
Ver.1.38.8 ・fade-orderを追加
・fade-order=2でp0/p1既定値を調整
・testcaseを更新
Ver.1.37.8 ・ゆらぎありΔf≠0@s_stereo<100でchannel間の合成の不具合(stereo出力が左右反転)を修正
 newVal0 = (1-s)*val0+s*val1 ⇒ newVal0 = s*val0+(1-s)*val1
Ver.1.37.7 [test]wave plotのpageを追加(出力int値の確認用)
Ver.1.36.7 ・ゆらぎありΔf≠0でmonaural低音質出力の不具合(int値のoffset未考慮)を修正
 val1 = 0 ⇒ val1 = val_offset
Ver.1.35.6 ・script入力のみ、amplitudeの上限解放(int値over-flowの場合、pulse波のnoise発生)
 play実行後、amplitude上限値の目安を表示
Ver.1.34.6 ・wave-typeを更新
 sawtoothrev/sawtooth0/sawtooth0revを追加
 各type_randを追加(位相初期値に乱数を付与)
Ver.1.33.6 ・ゆらぎ周波数Δfの他channel合成率s_stereoを追加
・testcaseを更新
Ver.1.32.6 ・ゆらぎ周波数Δfのばらつき強度s_randomを追加
・Δfのmonaural出力に対応
Ver.1.31.6 ・duty||amplitudeの変化率のorderを追加(script限定)
Ver.1.30.6 ・square||sawtoothの波形を選択時、休止||f=0の間にnoise発生の不具合を修正
Ver.1.30.5 ・file size制限の不具合を修正(limiter機能を正常化)
・file sizeの上限up
Ver.1.30.4 ・本pageを分離して独立化
Ver.1.29.4 ・stereo効果のゆらぎ周波数Δfを追加
Ver.1.28.4 amplitudeの仕様変更(tempo||pitchに準拠)
Ver.1.27.4 testcase@URL-parameterを追加
Ver.1.26.4 sweep-orderを追加
Ver.1.25.4 sweep-rateを更新(filter gain適用)
Ver.1.24.4 sweep-rateを追加(filter gain固定)
Ver.1.20.4 datasetを拡張
Ver.1.19.4 "f"+周波数入力の小数点以下を有効化
・時間の入力形式を拡張(60BPM基準の演算子b=1000msecを定義)
Ver.1.18.4 ・binary生値fade-in/out機能raw-value fadeを復帰
Ver.1.17.4 ・tempo/pitch/amplitudeの設定項目を追加
・fade-in/outの設定項目を拡張
time=0の場合、error終了に仕様変更
Ver.1.16.4 ・wave-dutyの設定項目を追加
Ver.1.15.4 scientific pitch記法に対応
Ver.1.14.4 ・frequency checkerを追加
Ver.1.13.4 ・88鍵盤標準のscientific pitch記法に準拠
・MIDI-octave数に負数を指定できない致命的な不具合を修正
Ver.1.13.3 ・pitchに影響する生値fade-in/out ⇒ 物理的な振幅fade-in/outに修正
Ver.1.13.2 ・parallel Multi-threadingに対応
Ver.1.4.2 ・生値fade-in/outを追加

scriptの入力形式
項目 内容 実装
macro機能
Ver.1.41.9追加
Ver.1.42.10追加
Ver.1.42.11追加
Ver.1.43.11追加
Ver.1.65.14追加
{}外に定義 入力textの前方からmacro定義順に{}内のtext置換
・macro定義のformat:$[0-9a-zA-Z_-]+([0-9a-zA-Z_-+=.,:;[]$\s]+)
 0-9a-zA-Z_部分は\wで短縮可
・置換内容:{$tag; -> dataset||chordset;}
 区切り文字;を残す方が間違いが少ない
 ES6対応環境のみ、spacingを保持してtext置換可
・macroをnestingする場合、chordsetの単位chordを入力textの後方に定義
$chordsets($chordset;$chordset)
$chordset($chord;$chord)
$chord(:$C;:$D;:$E)
$C([C4,C5,C6])$D([D4,D5,D6])$E([E4,E5,E6])

macro定義の厳密な正規表現を確認する場合、正規表現text置換参照
・$tagから空文字を含む任意の文字列にmacro置換実行可
 ES6対応環境のみ、空白||改行文字を保持
channel 時系列の音dataを出力 stream処理:channel内の合成(binary出力)
post処理:channel間の合成(binary入出力)
channelの区別 {} channelの区切り文字(半角の波括弧)
channel番号=1~ 入力textの前方から昇順に番号を付与
channel間の合成
Ver.1.37.8修正
奇数番channel:channel1に合成
偶数番channel:channel2||1に合成(channel数に依存)
Δf≠0:channel1とchannel2を合成(stereo出力が左右反転する不具合を修正)

binary出力順:channel1 -> channel2
入力例
Ver.1.44.11更新
{r} || {0} || {} || {}{} || {}{}{} -> error終了(時間指定なし)
{r} || {0} || {:}{} || {:} || {b:0} -> 保存可能(1beatの無音)
{r; 0; 440; [440,880];} -> {b:r; b:0; b:440; b:[440,880];}
dataset
Ver.1.30.6対応
Ver.1.44.11更新
Ver.1.65.14更新
音dataの単位 基本dataset
・値不正のerror終了処理を追加


音階;
時間:音階;
時間:[音階0,音階1,...];
時間:r;
休止時間:0;

要素省略時:1beatの休止(b:0に同義)
・時間省略時:1beat
・音階省略時:r||0
Ver.1.55.11追記
Ver.1.67.14追記
: dataset要素の区切り文字(半角のcolon)
; datasetの区切り文字(半角のsemi-colon)
・dataset間の直接音の残響と反響(空間の反射成分)は未考慮
・dataset間のlegato(なめらかに):現状、複数のchannelで音の重なり部分を調整
[,] 音階列挙の区切り文字(半角の角括弧)
音階の区切り文字(半角のcomma)
r
Ver.1.65.14更新
休止記号(半角のr)
・正規表現を厳密化:^r ⇒ ^r$
拡張dataset
Ver.1.20.4追加
Ver.1.24.4追加
Ver.1.26.4追加
Ver.1.31.6追加
Ver.1.35.6更新
Ver.1.38.8追加
Ver.1.39.8更新
Ver.1.40.8更新
Ver.1.49.11更新
Ver.1.56.11更新
Ver.1.56.12更新
Ver.1.57.12更新
Ver.1.64.14更新
Ver.1.71.14更新
Ver.1.74.14更新
通常format
Ver.1.65.14更新
Ver.1.71.14更新
Ver.1.75.14更新
拡張設定値を列挙
・値不正のerror終了処理を追加
・重複定義のerror終了処理を追加(代入formatを含む)

音階;
時間:音階
時間:[音階0,音階1,...]
時間:r
休止時間:0
:command=""||"clear"
:type=0~13:duty0=0~1:duty1=0~1:amplitude0=0~1:amplitude1=0~1
:w0=0~1:p0=0~1:w1=0~1:p1=0~1:f0:g0=0~1:f1:g1=0~1
:rate=0~:order=0~:order_d=0~:order_a=0~
:order_fade=floor(-2~3):f_vib:overtone=floor(0~24):ti=0~:to=0~;

script入力のみ対応の項目
・order_d/order_a
・ti/to
代入format
Ver.1.65.14追加
Ver.1.69.14更新
Ver.1.70.14更新
Ver.1.71.14更新
拡張設定項目=拡張設定値を列挙
b:A4:clear:1:0.5::::::::::::::::::5
b:A4:clear:1:0.5:overtone=5
b:A4:clear:1:duty0=0.5:overtone=5
b:A4:clear:duty0=0.5:type=1:overtone=5
・拡張設定項目のみ、指定可(順不同)
・重複定義の場合、代入formatの左から順次上書きerror終了
・構文不正(項目名のspellを含む)の場合、error終了
・値不正の場合、error終了
・複数の代入記号=が存在する場合、error終了
・代入formatを列挙して実行可(項目数の制限なし)
拡張設定項目
Ver.1.70.14追加
type以降の設定項目 基本dataset:通常formatの仕様
・script-Ver.1:直前datasetの拡張設定値を継承(後方互換性を担保)
・script-Ver.2:dataset内のみ拡張設定値が有効
command
Ver.1.65.14更新
Ver.1.70.14更新
省略時:直前datasetの拡張設定値を継承||clear状態でUI設定値を参照
clear:直前datasetの拡張設定値をclear
・command不正のerror終了処理を追加
・command単体で実行可
type
Ver.1.34.6更新
Ver.1.71.14更新
波形の種類
0:sin
1:triangle
2:square
3:sawtooth
4:sawtoothrev
5:sawtooth0
6:sawtooth0rev
7:sin_rand
8:triangle_rand
9:square_rand
10:sawtooth_rand
11:sawtoothrev_rand
12:sawsmooth
13:sawsmooth_rand

任意波形tableの線形補間に対応
・tableのformat:type=[x0,x1,...xn:y0,y1,...yn]
・基本dataset:通常formatの場合、非対応(error終了)
・x範囲=[0,1]
・y範囲=[-1,1]
・x前提:昇順sort済み
duty0
duty1

order_d=1@default
N個中n番目sampleのduty比
=duty0+(duty1-duty0)*pow(n/N,order_d)
amplitude0
amplitude1

order_a=1@default
N個中n番目sampleの振幅の比例係数
=amplitude0+(amplitude1-amplitude0)*pow(n/N,order_a)
w0
p0
w1
p1
振幅fade-in/outのfilter特性値
dataset間の連続条件 w0=0
w1=0
((時間*1e3*tempo)%(1000*1e3/周波数))%1=0
:[1000]:::0:0.5:0:1:0:0:0:0;:[1000]:::0.5:0.5:1:1;:[1000]:::0.5:1:1:0;
f0
g0
f1
g1
振幅gainのfilter特性値
f_vib=0@default
Ver.1.56.11追加
Ver.1.56.12更新
f_vibrato[Hz]
overtone=0@default
Ver.1.64.14追加
基音より高周波数の倍音の整数倍上限値
ti=0@default
to=0@default
Ver.1.74.14追加
Ver.1.77.14更新
ti:in時間差[msec]
to:out時間差[msec]
・b使用可
[test]play-buttonsの場合、時間[sec]を指定

音階列挙の左からglissando
・script入力のみ
・各音階でduty/amplitude/rate可変
・各音階(overtoneを含む)で別途、fade-in/out処理を実施
 (p0/p1指定時間に対する直線近似処理)
・発音条件:(ti+to)×(音階の個数-1)<時間
・各音階gainの過小評価を改善(max係数の目安≒14.99 ⇒ 4.13)
時間[msec] b
Ver.1.19.4追加
1beatの単位を表す中置の除算演算子
・演算後、60BPM基準1beat=1000msecを乗算

b = b1 = 1b = 1b1 = 2b2 = 4b4 = 1000
2b = 2b1 = 4b2 = 2000
4b = 4b1 = 8b2 = 4000
b2 = 1b2 = 2b4 = 500
b4 = 1b4 = 2b8 = 250
1.5b = 1.5b1 = 15e-1b1.0e+0 = 3b2 = 1500
周波数[Hz]
Ver.1.19.4更新
f frequency checker参照

小数点以下を有効化
音階
Ver.1.13.4修正
o
c
n
f
音階の記法参照
"o"+MIDI-octave数-1~9+"c"+MIDI-相対note数0~11~
"n"+MIDI-絶対note数0~
"f"+周波数
周波数

MIDI-octave数の負数を有効化・範囲修正-2~8 ⇒ -1~9
過去の入力形式から変更する場合、octave数の降順に1加算して正規表現text置換の要修正
out=text.replace(/o8/gm,"o9"); ⇒ out=text.replace(/o7/gm,"o8"); ⇒ ...

o4c9 = o3c21 = o2c33 = o1c45 = o0c57 = o-1c69 = n69 = A4 = f440 = 440
o5c0 = o-1c72 = n72 = C5 = f523.25 = f5.2325e2 = 523.25 = 5.2325e2

音階の記法@octave=4
MIDI-相対note数 音階 pitch記法(正順)
Ver.1.15.4追加
oc記法(逆順)
Ver.1.13.4修正
n記法 f記法(f省略可)
00 C(ド) C4 o4c0
o4c00
n60 f261.6255653005986
01 C#/D♭ C4s
D4f
o4c01 n61 f277.1826309768721
02 D(レ) D4 o4c02 n62 f293.6647679174076
03 D#/E♭ D4s
E4f
o4c03 n63 f311.12698372208087
04 E(ミ) E4 o4c04 n64 f329.6275569128699
05 F(ファ) F4 o4c05 n65 f349.2282314330039
06 F#/G♭ F4s
G4f
o4c06 n66 f369.99442271163446
07 G(ソ) G4 o4c07 n67 f391.99543598174927
08 G#/A♭ G4s
A4f
o4c08 n68 f415.3046975799451
09 A(ラ) A4 o4c09 n69 f440
10 A#/B♭ A4s
B4f
o4c10 n70 f466.1637615180899
11 B(シ) B4 o4c11 n71 f493.8833012561241

URL-parameter@browser上部URL入力欄
項目 内容 実装
testcase
Ver.1.27.4追加
Ver.1.33.6更新
Ver.1.38.8更新
Ver.1.44.11更新
Ver.1.52.11更新
Ver.1.65.14更新
Ver.1.67.14更新
Ver.1.68.14更新
Ver.1.76.14更新
test case 0:1octaveのstereo出力(左右の差なし・Δf=0)
duty0:1octaveの1ch出力(duty0=0・order_d=0.5)
duty1:1octaveの1ch出力(duty1=0・order_d=2)
1:1octaveのstereo出力(左右の差あり・Δf=0)
Froschgesang:かえるの合唱(25秒・Δf=107.73...・fade-inを有効化・fade-outを有効化
Froschgesang100:かえるの合唱(100秒・Δf=107.73...・fade-inを有効化・fade-outを有効化
・macro定義のspellを訂正:code ⇒ chord
Yuyake_Koyake:ja.wikipedia.org/wiki/夕焼小焼(作詞:中村雨紅/作曲:草川信)
Auld_Lang_Syne:ja.wikipedia.org/wiki/オールド・ラング・サイン(slur記号なしの楽譜)
tVer
Ver.1.70.14追加
testcase-Ver tVer=1:script-Ver.1用のtestcaseを表示
それ以外:script-Ver.2用のtestcaseを表示

UI設定
項目 内容 実装
Byte数/sample
Ver.1.46.11追加
Ver.1.48.11追加
1sampleのByte数 1:低音質
2:音質
3:高音質
4:超高音質
sample数/sec
Ver.1.50.11更新
1秒当たりのsample数
sampling rate
44100:音楽
48000:映像

samples_perSecond=8000~192000
・音階の分解能:周波数[Hz]<samples_perSecond/2
channel数 出力のchannel数 1:monaural
2:stereo
wave-type
Ver.1.30.6修正
Ver.1.34.6更新
Ver.1.71.14更新
波形の種類 dataset優先

sin:正弦波
triangle:三角波
square:矩形波(波形@f=0を修正)
sawtooth:のこぎり波=-1~|/|(波形@f=0を修正)
sawtoothrev:逆のこぎり波=1~|\|
sawtooth0:のこぎり波=0~/|/
sawtooth0rev:逆のこぎり波=0~\|\
sawsmooth:のこぎり波(より滑らか)=0~/|0~\

各type:datasetの位相初期値=0
各type_rand:datasetの位相初期値=[0,2π)の乱数
wave-duty
Ver.1.16.4追加
波形のduty比 dataset優先

上ON/下ON時間の非対称性を定義
duty=0.5:上下対称
duty≠0.5:上下非対称・上下不連続(duty比を閾値に比例係数を2値化)

wave-type=square:duty可変のpulse波に対応

詳細はGraphing Calculator-test case-wave参照
sweep-rate
Ver.1.24.4追加
Ver.1.56.12更新
出だし音の周波数sweep用
指定周波数基準rate
dataset優先

rate=1:周波数のsweepなし(周波数を固定)
rate=0.5:指定時間で周波数を半減
rate=2:指定時間で周波数を倍増
rate>>1:sample数/sec>>10000(要分解能)
・sweep中の位相の連続性を改善(dataset内で位相の前回値を継承)
sweep-order
Ver.1.25.4追加
周波数sweepの次数 dataset優先

order=1:線形に変化
order<1:減速的に変化
order>1:加速的に変化
order>>1:sample数/sec>>10000(要分解能)
f_vibrato[Hz]
Ver.1.57.12追加
vibratoの周波数 dataset優先

vibratoを模擬
・pitch変化のみを想定
・変化量の連続性を考慮
・着信音の場合、10~15[Hz]

omega_vib=2pi*f_vib
dkf_vib=(1-pow(2,1/12))/2 半音の半値幅の振幅を仮定
kdf=sin(omega_vib*t)*dkf_vib ±両側の変動を仮定
df=kdf*f
f=f+df
overtone
Ver.1.64.14追加
Ver.1.67.14更新
Ver.1.80.14更新
Ver.1.81.15追記
倍音の整数倍上限値 dataset優先

基音より高周波数の倍音を自動付与
・overtone=0||1の場合、無効
・乱数なしの整数倍
・log-log filterを適用
・現状、script入力のみ、max係数が厳密
・単音/和音pageのamplitudeの内部limiterを解除
・単音/和音pageのmax係数の目安を改善(gain和で単純換算のため、過小評価)
・倍音のgainを厳密化(音質の劣化を改善:max係数の目安≒7.15 ⇒ 6.15)

・各音階の自然なgain調整の演算を追加
・各音階の位相初期値を更新(mod 5-1の演算)

 極限の音色:sawtooth ⇒ triangle

詳細はGraphing Calculator-test case-wave-overtone参照
time[sec] 出力時間の全長
tempo
Ver.1.17.4追加
時間の長さ datasetの時間に乗算

BPM=60/tempo
・60BPM基準1beat=1000msec
pitch
Ver.1.17.4追加
音の高さ datasetの周波数に乗算

音の媒体:空気の圧力変動を可視化する場合、Incompressible flow参照
amplitude
Ver.1.17.4追加
Ver.1.28.4更新
Ver.1.35.6更新
Ver.1.40.9修正
Ver.1.45.11追加
Ver.1.75.14修正
音の大きさ dataset優先
datasetの振幅に乗算
・kampliとamplitude0/amplitude1:従属 ⇒ 独立

script入力のみ、振幅の上限解放
・int値over-flowの場合、pulse波のnoise発生
post処理でerror終了に修正
Ver.1.41.10以降、stream処理も同様に、error終了に修正
・WebWorkers準備中にerror終了の場合、Uncaught NetworkErrorが発生

play実行後、amplitude上限値(max係数)の目安を表示
・datasetの振幅不変の前提でint値の余裕から推定
・乱数で多少の変動あり
・post処理でint値over-flowの場合、overflowを表示
・単音||和音の場合、max係数のfeedforward入力値で内部制限あり

auto-maxのcheckboxを追加
・post処理で振幅を最大化する自動scaling(scale比大で波形の劣化あり)
・scale比=max係数/入力値(scale比=1で波形の劣化なし)
・scale比はint値範囲内の安全側に丸める(scale比=1を除く)
・scale比=1の場合、=max係数を表示
・scale比>1の場合、≒floor(max係数の小数点2桁以上)の目安を表示
・演奏の場合、全波形の合成後、max係数が決まるため、feedback入力の方が確実
Δf
Ver.1.29.4追加
Ver.1.32.6更新
Ver.1.33.6更新
Ver.1.52.11更新
stereo効果のゆらぎ周波数[Hz] stereo出力限定
post最終処理
・monaural出力の場合、stereo出力@s_stereo=100のchannel1のみを出力

Δf=0:channel間の合成なし(左右を完全分離)
|Δf|>0:channel間の合成あり(左右をゆらぎ周波数で合成)
|Δf|<<0.001:channel間を平滑化(s_stereo=100の場合、左右を同一化)
↑s_random
Ver.1.32.6追加
Δfのばらつき強度 Δfのばらつき範囲:Δf*pow(2,s_random*[-1,1))

s_random=0:ばらつきなし(ゆらぎが一様)
s_random≠0:ばらつきあり(play実行毎に異なる乱数を生成)
↑s_stereo
Ver.1.33.6追加
Ver.1.37.8修正
左右で振動する音量の調整用
Δfの他channel合成率[%]
Δfの振幅強度[%]
stereo出力限定
・monaural出力の場合、左右の振動なし

s_stereo>0:他channelの合成あり
s_stereo=0:他channelの合成なし(左右を完全分離)
s_stereo=100:左右均等の重みで合成

重み平均:newVal0 = (1-s)*val0+s*val1 ⇒ newVal0 = s*val0+(1-s)*val1
・s=0.5@s_stereo=100
・s=1@s_stereo=0
volume[%] play時の音量 play機能のみ有効
play encodeの実行button 正常終了時
・soundを再生
・downloadの準備完了
stop playの中断button Multi-threadのみ中断可
random
Ver.1.61.13追加
test caseの生成button 設定項目
・datasetの個数=0~
・休止状態の遷移確率=0~1
・音階初期状態の遷移確率=0~1
・変化量の前回値の重み=0~1
log 実行結果のlog
file size[MB]
Ver.1.30.5修正
保存file size file size制限の条件を追加
・dataset毎の制限
・全datasetの制限(演奏用)

limit:1GB=1024MB=1024^2KB=1024^3B=1073741824B
link download link browserでencodeされたbinaryをlocalに保存(通信なし)
file name
Ver.1.68.14更新
保存file name 任意名の入力機能の実装は保留
任意名を入力可
・半角相当の文字数制限:50文字(拡張子を含む除く)
・auto checked時、後方互換性あり
・固有名詞を含むtestcaseの場合、auto非表示
option
Ver.1.13.2更新
encodeのoption Multi-threadの選択可(並列化に対応)
N:並列化のthread数
amplitude-fade
Ver.1.13.3追加
Ver.1.38.8更新
Ver.1.39.8更新
Ver.1.40.8変更
Ver.1.49.11追加
dataset内click noise対策用
振幅fade-in/outのfilter特性値
stream処理

w0:in-weight
p0:in-range
w1:out-weight
p1:out-range
・in:datasetの最初sampleから
・out:datasetの最後sampleまで
・range:fade_oder≥0既定の場合、時間[sec]
 fade_oder<0の場合、datasetの全sample数に対する割合
・rangeの区間:tempoと独立(生のfade区間)
・rangeの重複箇所:in優先
 残りをout-rangeに更新(曲線近似の正規化対策)
・fade有効化の条件:p0 > 0 || p1 > 0

1次遅れ系のstep応答:S字の変曲点なし
・fade-in:振幅=上限値まで上凸の変化
・fade-out:振幅=0まで下凸の変化
・fade処理後、script入力のamplitudeの比例係数を乗算
・高負荷のS字(sigmoid)曲線近似の検討は保留

1次遅れ系の曲線近似(べき乗)を追加
・w0/w1:時定数を可変
・w=0:時間の0.5乗(上凸の変化)
・w=0.5:時間の1乗(線形変化の直線近似)
・w=1:時間の2乗(下凸の変化)

2次遅れ系の曲線近似(sigmoid)を追加
・w0/w1:変曲点位置を可変
・w=0.5:上下対称
・w<0.5:下に移動
・w>0.5:上に移動

2次遅れ系の曲線近似(cos)を追加
・w0/w1:無効
fade-order
Ver.1.38.8追加
Ver.1.39.8更新
Ver.1.40.8変更
Ver.1.49.11追加
filter遅れの次数 order_fade=0||1.:1次遅れ系(p0/p1指定時間の区間で重み平均の逐次処理)
order_fade=1:1次遅れ系(p0/p1指定時間に対する曲線近似処理)
order_fade=2:2次遅れ系(p0/p1指定時間に対する曲線近似処理)
order_fade=3:2次遅れ系(p0/p1指定時間に対する曲線近似処理)
order_fade=-1||old1:1次遅れ系(p0/p1割合sampleの時間に対する曲線近似処理)
order_fade=-2||old2:2次遅れ系(p0/p1割合sampleの時間に対する曲線近似処理)
・逐次処理の場合、model parameterがsampling rateに依存(調整困難)
・低負荷の直線||cos近似で十分の可能性あり

詳細はGraphing Calculator-test case-fade参照
raw-value fade
Ver.1.4.2追加
Ver.1.13.3削除
Ver.1.18.4復帰
Ver.1.66.14更新
dataset間click noise対策用
1次遅れ系
生値fade-in/outのfilter特性値
post処理

old-weight:前回値の重み
・default:0.005 ⇒ 0

重み平均:newVal = w*oldVal+(1-w)*nowVal
log-log filter gain 出力調整用
振幅gainのfilter特性値
stream処理

f0:low側の周波数
g0:low側のgain
f1:high側の周波数
g1:high側のgain

既定値:聴き取りやすい高周波数の出力を意図的に低下(LPF想定)
・hardwareからの最終出力:speakerの周波数特性のgainを乗算(可聴域外のgain≒0)

補足:振幅のRMS統一で波形間の比較
・Fourier変換で高周波数成分を含む波形(sin以外)の方が聴き取りやすい
Graphing Calculator-test case-Fourier参照
frequency checker
Ver.1.14.4追加
周波数checker MIDI-octave:octave数
MIDI-note:note数
frequency[Hz]:frequency(octave,note)

Graphing Calculator-test case-MIDI参照
frequency(octave,note)=<last{m=(octave+1)*12+note,pow(2,(m-69)/12)*440};
frequency(4,9) -> 440
frequency(-1,69) -> 440
script script入力欄 入力textは半角のみ有効
original script
Ver.1.41.9追加
Ver.1.42.10更新
text置換結果の確認用
original script出力欄
macro機能のtext置換後のscriptを出力
・macro残存の場合、error終了
script-Ver
Ver.1.70.14追加
script仕様 基本dataset:通常formatの仕様
・script-Ver.1:直前datasetの拡張設定値を継承(後方互換性を担保)
・script-Ver.2:dataset内のみ拡張設定値が有効

error終了の発生条件
事象 発生条件 対策
予期せぬerror@演奏のplay実行時
{1:A4} -> Uncaught NetworkError: ...
time極短のMulti-thread encode
・total time << 1000msec
・parallel N > 1
Single-thread encode
・再現性なし
・download機能に問題なし
再生中断@演奏のplay実行中 不明 stop後、re-play
・再現性なし
・download機能に問題なし