不過那邊是每一個sample都會觸發一次,用了太複雜的動作,會整個死透歐..
self.loopId = setTimeout(fn, self.startTime + 1000 / self.fps * self.frame - Date.now())
可是 setTimeout 的 time 有大小限制
self.frame 會遞增, Date.now() 也會
還有我發現延遲的來源竟然是那個Normalize Filter
不過c9上的不行就是了,除非弄個websocket之類的來proxy
51 吉 修進甚功辛,勞生未得時,騰身遊碧漢,方得遇高枝
解 : 雖然沒有懶惰,好像一直勤勞努力,但是現在只感覺到辛苦吧。因為有大大的願望,雖然拼命地努力,但是似乎還沒到花開的時期吧。然而,看著天空,抱著打算一飛向上的大決心,認真地挑戰看看吧。確實地能得到資產和財寶、出人頭地等,能安心吧。
願望 : 會實現吧。
疾病 : 變成往後才治好吧。
遺失物 : 難出現吧。
盼望的人 : 變晚吧。
蓋新居 : 好吧。
搬家 : 好吧。
旅行 : 好事吧。
結親緣 : 會得到好結果吧。
交往 : 會得到好結果吧。
然後我覺得MixerStream都可以單獨拆出來丟上去npm了
mixer本身還有timer的部分…感覺不太一樣?
除此之外,有辦法讓他每一次發 實際都align到sample開頭?
不過印象中,node.js 的stream遇到很小的buffer,效率不是一般的慘烈
log的頁面生成時間,實際上有三成都在stream.write上啊…
或許可以不靠client,直接用瀏覽器streaming?
Windows的話Async要用Thread Pool
這比起 a + b - |ab| 這種非線性公式好多了
所以說混音至少要在b=0時=a;a=0時=b 這樣嗎
現在不是 (1 - abs(a b))(a+b) ?
昨天是 a + b - a b sign(a + b)吧?
所以一個好的公式,應該要在其中一方為0時完全線性,並在兩倍總和接近2時逼近1?
是說總覺得_mixin應該要寫成native extension
JavaScript 操作 單一byte 的效率實在悲劇
寫一個專門merge buffer的native extension
其實也只是要export一個函數,給他 BufferA 和 BufferB
我覺得我這種數學在不及格與及格之間的人還是認真些好
$98.00元ww
感覺跟Python的某些東西好像www
不過就變了一定要有complier才能用我的bot
OpenAL OpenCL Openbsd OpenNAS OpenSource(#
OpenGL
OpenAL
OpenML
OpenCL
OpenCV
(
@mmis1000 話說我想把混音改做 tanh(a + b) 試試看品質可是我不在電腦旁
ES6新增 Math.sinh Math.cosh Math.tanh 喔
把每一次fetch的大小調高一點,好像就能避免stream開頭buffer不夠導致填空導致破音的問題了...
@licson tanh(a + b) 在單一音源時,好像對於高音量的部分會非線性,導致整體音量下降?
但是這樣不符合當音源b為0,a要盡可能完全線性的原則?
是說,仔細想想,就算因為tanh讓音量變小了一點,也根本無所謂啊?
Recent songs:
/song_1 uploaded by Fish ( Initial D - Running in The 90s performed by PsychoDon904 )
/tts Lopadotemachoselachogaleokranioleipsanodrimhypotrimmatosilphioparaomelitokatakechymenokichlepikossyphophattoperisteralektryonoptekephalliokigklopeleiolagoiosiraiobaphetraganopterygon
我的算法是找 g(x) such that d/da g(a + b) = 1 when b = 0 and d/da d/db g(a + b) < 1
然後每一組都測 歌曲 + 歌曲, 歌曲 + tts, tts + tts
喔等等,我把我client的DRC Filter關掉
@licson 是說既然改用tanh了,就全部一起sum完再tanh就好了?
hyperbolic tangent好處是範圍在 -1與1之間
我覺得tcp helper其實可以拿掉,改成直接export mixer到index.js
然後doBroadcast改成直接輸出stdout
這樣一來,doBroadcast就可以拿到source物件,把它放在index.js的global
就可以對個別channel調音亮了
不對阿 TCP helper要給encoder的輸出給HTTP Server
tcp-helper是用tcp server從ffmpeg收資料的
mixer的輸入本來就是一個readable stream
要再Encode一次,在TCP helper那邊做
然後encoder的輸出要丟給HTTP Server
tcp helper是spawn一個ffmpeg,encode資料把輸出給http helper,並且用tcp server收從docoder來的資料沒錯吧?
轉換去Signed 16bit little endian
是說我覺得可以加個static file provider給http server
所以 tanh vs. linear mixing
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type andLorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem
你一邊用bot放頭文字D,一邊開ffmpeg推姐姐
是說剛剛不斷DDOS,讓c9 cpu 100%的人消失了
我覺得那有可能是我,剛剛mpv把radio丟給youtube-dl不知道做了什麼
現在就是聽用 tanh 函數 的混音效果清不清楚阿
算清楚,但我覺得需要加一個auto balance來平衡音源之間的音量(望
那播放那邊加上dynamic range compression (?)
數碼混音:加數(配合Gate/Limiter/Compressor)
我聽起來就是音量大的會蓋掉音量小的,然後如果兩個音量差不多的話聽起來不錯
value = (1 - Math.abs(a b)) (a + b)
要把 value = Math.tanh(value) 註解掉
a 和 b 要取代為 value 和 value2
現在這個好像不會因為另一個音量大所以就把另一個音量壓小
是說到底是甚麼client,可以寫得這麼糟糕,沒事就在spam連線
沒有,現在這個如果音量差很多的話是很完美的聽不到另一個
sqrt(s1 ^2 + s2 ^ 2 + … + s_n ^ 2)
為什麼不直接開dynamic range compression比較快
要在進去mixer之前就先把兩個音源的音量都平衡阿
是說我覺得tcp helper的tcp server還是別拿掉好了,單純export mixer好了
你可以直接 mine到 不含雜質的 metal(?????
在於 engineering 不在 chemical 這樣講行了吧
Recent songs:
/song_1 uploaded by Fish ( Initial D - Running in The 90s performed by PsychoDon904 )
/song_2 uploaded by Fish ( 獵人HUNTER X HUNTER ED1-風之歌.MP4 performed by squall35168 )
/song_3 uploaded by Fish ( [MMD]極楽浄土Gokuraku Jodo(Miku)4k60fps performed by SiBar )
/song_4 uploaded by Fish ( [MMD] 被害妄想携帯女子(笑) Higai Mousou Keitai Joshi (Miku,Haku,Luka)4k60fps performed by SiBar )
是說我覺得應該要紀錄目前的queue跟個人播過的歌的,不然每次都要翻chat history找
如果聲音也有類似HDR的格式就好了,就可以不用裡他,一股腦加上去了
在把音量切掉時,一定會有扭曲,但哪一個造成的扭曲,比較不影響效果,就要看人了
正式版是放在我網站上全世界都可以聽到而且Bot是穩定的
剛剛我覺得 tanh(a + b) 會有被壓縮的感覺
a + b - |ab| 又有被破壞原本聲音的感覺
module.exports = function tanh(x) {
var y = Math.exp(-2 * x);
return (y + 1) / (y - 1);
}
其實這是在等 getFile(file) 的Promise resolve
是說addSource回傳的source物件,有一個remove事件會說這個來源的是否已經結束