Jump to...
redirecting...

Log for Ow< [MSFW]

是說 fadeTo 那邊的曲線,你有要改一下嗎?
現在是完全線性
不過那邊是每一個sample都會觸發一次,用了太複雜的動作,會整個死透歐..
線性其實沒什麼問題啊
雖然說非線性聽起來會比較柔
self.loopId = setTimeout(fn, self.startTime + 1000 / self.fps * self.frame - Date.now())
這段的時間計算怎麼感覺有點多於
[photo](media:AgADBQADeKkxG_y9chAmY8T_1NhdyXccyjIABPrSr4rpkgABM853AQABAg@telegram)
應該 1000 / this.fps 就好啊
🙈
不然更新率會小於60
因為計算本身要時間
可是 setTimeout 的 time 有大小限制
這一段是為了計算離下一次更新還要多久的
至少這樣會讓他"平均"60
不能大於 2^31 不然會發生神奇的事
才不可能會多於這個吧
是說,理論上這樣遇到閏秒會爆炸🙈
會導致算出來的時間變負數
其實就 24 日左右
所以如果bot開了24天的話那個位置就會bug了
會扣掉阿
相減出來大概都是 10~20 間上下飄吧
self.frame 會遞增, Date.now() 也會
還有我發現延遲的來源竟然是那個Normalize Filter
關掉就會變正常
因為她要先有一些sample才有辦法判定基準線?
然後buffer開太大,就冏了
他要先知道Peak Amplitude
才可以調音量
這樣你可以真人線上語音DJ了(?
我家開個ffmpeg連上去就好
不過c9上的不行就是了,除非弄個websocket之類的來proxy
畢竟c9沒public ip
是喔
對喔
那就拿掉吧.-.
我client這邊自己加filter(#
我早把那個變成選項了
可以在config設定
我有看到
總覺得源碼數量正在以指數上升中
這bot很快要比 @ysitdbot 複雜了(#
不太可能
@ysitdbot 還有一堆幾千行的資料json(x
想這個
51 吉 修進甚功辛,勞生未得時,騰身遊碧漢,方得遇高枝
解 : 雖然沒有懶惰,好像一直勤勞努力,但是現在只感覺到辛苦吧。因為有大大的願望,雖然拼命地努力,但是似乎還沒到花開的時期吧。然而,看著天空,抱著打算一飛向上的大決心,認真地挑戰看看吧。確實地能得到資產和財寶、出人頭地等,能安心吧。
願望 : 會實現吧。
疾病 : 變成往後才治好吧。
遺失物 : 難出現吧。
盼望的人 : 變晚吧。
蓋新居 : 好吧。
搬家 : 好吧。
旅行 : 好事吧。
結親緣 : 會得到好結果吧。
交往 : 會得到好結果吧。
然後我覺得MixerStream都可以單獨拆出來丟上去npm了
的確可以
不過destroy之類的handle根本沒做啊
我找到類似的東西
而且還會無視target是否滿了推資料
不過不肯定他能不能拿來當Mixer
mixer本身還有timer的部分…感覺不太一樣?
還有動態增減來源的部分
他本來是Object Mode不過可以調
除此之外,有辦法讓他每一次發 實際都align到sample開頭?
看起來可以設定每個window大小
不過他好像沒法子動態加入來源
不過印象中,node.js 的stream遇到很小的buffer,效率不是一般的慘烈
log的頁面生成時間,實際上有三成都在stream.write上啊…
http://www.ithome.com.tw/news/110964
我表示我的MongoDB是收藏在內網中
Zerotier大內網(
++
你當Zerotier是一個有加密的L2 VPN啊
雖然他的確是
[photo](media:AgADBQADxbgxGy-_EAizFu-yjc2MheEryjIABFbpd_7iJKaQSXsBAAEC@telegram)
無意義資料不算吧www
看到有趣的東西
或許可以不靠client,直接用瀏覽器streaming?
不過httpserver那邊要加個websocket(或是socket.io?) 來proxy就是了
是可以 不過這樣只能麥克風
或是聽loopback
做真人DJ倒是可以
排歌就不太好了
排歌的部分不用拿掉阿
直接用 ws 模組?
socket.io新版雖然可以傳二進制可是
我也覺得ws就好
因為根本不需要多頻道通信阿
就算要加啥參數,直接弄在path就好了
WTH喔 到廣東了
這次大禍臨頭啦
還是趕快多買幾台NCCO空氣淨化機好了
ㄎㄎ
話說node.js在Windows也是很高效能阿
重點是連行為都一樣
Windows的話Async要用Thread Pool
IIS也是這樣用再配 HTTP.sys 核心模組
用貼圖回我
[photo](media:AgADBQADXK8xG2xJBgf3ny38EUYER8xHyjIABGuKqgLZOKzhVZ0AAgI@telegram)
原來我的混音公式是二次方程
這比起 a + b - |ab| 這種非線性公式好多了
我後來發現這公式會破壞音域
為什麼這樣就會混音阿@@?
混音很簡單就是 a + b
可是直接 a + b 會Overflow
為啥(?)
那/2呢(#
這個方式不符合來源越大,輸出越大的原則啊?
我也想說(a+b)/2
www|
所以要有個函數包著他
會變小聲
不要緊
這我們叫soft limiting
剛剛的輸出結果,我覺得沒之前的好
會糊掉
話說一般電腦混音是用哪種公式阿
不然 tanh(a + b)
是最好的
同樣是soft limiting
不會啊
a + b - ab 難聽很多
好深奧...(望
喔對欸
昨天的 a + b - ab
我電腦聽起來不會糊
但你剛剛得測試,我真的完全聽不出另一首是啥
所以說混音至少要在b=0時=a;a=0時=b 這樣嗎
昨天拿來混姐姐時,是兩手都能聽得很清楚
昨天也是那個公式啊
還有a +b >1時 < max
好喔
複雜
你現在的並不是啊?
其實是 g(a + b) <= 1
現在不是 (1 - abs(a b))(a+b) ?
就是這個
現在也是那個
咦對誒 我昨天有 abs
啊我剛剛打那個應該也要有 abs
昨天是 a + b - a b sign(a + b)吧?
不是
我昨晚改了,那個效果不理想
改了這個聲音才變清楚
這個會影響
emmm
[photo](media:AgADBQADXa8xG2xJBgc4C13-SIT8mgVNyjIABAidzEhbT9y7Hp0AAgI@telegram)
符合線性原則
[photo](media:AgADBQADXq8xG2xJBgcj8p-CgM3-a2VXyjIABJtk0eEluWluAAGcAAIC@telegram)
tanh(a + b) 還有類比混音特性
不過這個在js算很慢
因為我們在討論DSP
要有數學基礎
你確定這叫基礎
[sticker](media:AAQFABNPIL4yAAQk3kU984ZIQ3skAAIC@telegram)
最好懂微積分
所以一個好的公式,應該要在其中一方為0時完全線性,並在兩倍總和接近2時逼近1?
因為某些filter要微積分
如果用上三角函數,能達到這個目的嗎?
就我那個 tanh(a + b) 啊
普通三角函數不能
是說總覺得_mixin應該要寫成native extension
怎麼中槍了(
寫作Native Extension也好啊
研究一下
JavaScript 操作 單一byte 的效率實在悲劇
寫一個專門merge buffer的native extension
其實也只是要export一個函數,給他 BufferA 和 BufferB
會給一個混音好的buffer
突然覺得這種事opencl是不是能做?
不用
這些東西做不到平行化
size是固定的話,可以unroll loop
可以用SIMD倒是真的
用一個指令對多項資料做操作
不過這種東西應該要在來源超級多時才有優勢?
是說,這是什麼東西www
混音公式
我的意思是
圖片中的東西是APP嗎?www
wolfamAlpha
我覺得我這種數學在不及格與及格之間的人還是認真些好
$98.00元ww
感覺跟Python的某些東西好像www
管他,反正網頁版用免費的
[photo](media:AgADBQAD1qsxG_3iyAf-esgSHBnBo3tCyjIABJoKczeqfMWiZpoAAgI@telegram)
wwwwwwww
(繼續玩Python
一陣子之前你不是還在玩Node.js嗎?
兩個都玩wwww
小心走火入魔(?)
不要像某個人走火入魔歐
petje?
那如果不只玩這兩個呢(#
你說去玩Java嗎
哇嗚 超petje的呢
不是www
C#.C++那類的(?
其實直接把loop搬去C++就已經會少用CPU了
如果C++再做優化更快
不過就變了一定要有complier才能用我的bot
[photo](media:AgADBQADzLgxGy-_EAjVqAx8sSfB-K8byjIABKVtzRRdIQAB41t5AQABAg@telegram)
意指Windows要開bot就要安裝VS
不用多考慮Windows吧(X
可是我是Windows忠實粉絲
雖然我電腦早就有VS了
正在重新學習OpenGL(新版)
你要不要把Open系列全部學一次
OpenAL OpenCL Openbsd OpenNAS OpenSource(#
OpenGL
OpenAL
OpenML
OpenCL
OpenCV
好吧沒有OpenNAS
DirectX 9曾經學過
可是現在全部忘記了
那過程太複雜
OpenRISC (#
還是OpenGL比較好
那麼多個open我只對OpenGL有興趣(?
OpenML是幹嘛的阿
看無
開放機器語言嗎
看起來很開放
Learning啦
什麼Lang wwww
OpenML是多核心程式庫啊
幫你的程式正確利用多核心和多CPU
multicore lib?
這很ML
那為什麼我只找到機器學習
可能他改名了
wwwwwwwwwwwwwwwwwwwwww
基礎微積分(?
這是什麼(?
[photo](media:AgADBQADzrgxGy-_EAgmLLFhJVRWD15AyjIABPqmYcODO7CeuZoAAgI@telegram)
不知道呢 或許你可以看看我們的對話
中間才加入一定有障礙,這正常
@mmis1000 話說我想把混音改做 tanh(a + b) 試試看品質可是我不在電腦旁
ES6新增 Math.sinh Math.cosh Math.tanh 喔
所以不用我昨天說那個有點廢的tanh模組
話說現在radio切割會顯示甚麼嗎
切歌
話說/skip 和 /next有用嗎
會換標題阿
有,不過你用不到
我覺得你還是適時切一下歌好了
顯在bot似乎被放一堆廣告
把每一次fetch的大小調高一點,好像就能避免stream開頭buffer不夠導致填空導致破音的問題了...
你確定我的有在內網嗎(?
bind_ip 設在內網IP
....
連127.0.0.1都不bind嗎QQ
@licson tanh(a + b) 在單一音源時,好像對於高音量的部分會非線性,導致整體音量下降?
那是Soft Limiting
但是這樣不符合當音源b為0,a要盡可能完全線性的原則?
[photo](media:AgADBQAD0bgxGy-_EAizd86WjabUvWlJyjIABIky3NxZS9o2jZoAAgI@telegram)
[photo](media:AgADBQAD0rgxGy-_EAhUOaYX61u3kX9CyjIABNncDWY2PJ6wKZoAAgI@telegram)
可是他倒是蠻符合模擬混音的特性欸
不然如果 你覺得我原本的比較好就用回那個好誒😂
我測試了一下。原本的撥tts比較清楚耶
tanh撥tts會糊
也有可能是我拿電腦的爛喇叭外放的原因就是了
搞不好每個裝置聽起來都不太一樣
是說,仔細想想,就算因為tanh讓音量變小了一點,也根本無所謂啊?
反正最後都會被ffmpeg normalize掉
Recent songs:
/song_1 uploaded by Fish ( Initial D - Running in The 90s performed by PsychoDon904 )
改一下輸出
那個可以關
所以不要拿這個當藉口(
而且糊掉的話ffmpeg救不了
我覺得tanh聽起來還不錯啦
再加上音響和DSP蠻玄學的
/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
突然想到一個問題
要是三個音源混在一起怎麼混
待會我撥個東西
最好先把normalizer關掉
等等我木耳啊
config.json那邊
不要找我測試啦
找耳朵好一點的
clip的時候就算是木耳也聽得出來(
好喔
等我一下
不過還是不要你好了
這不會clip
等等被korued就慘了(?
關掉normalizer真的就0延遲了
其實還是有 只是不大
本來光網路延遲就算不完了,不差這麼一點啦
我我我我我
喔等等,我把我client的DRC Filter關掉
@licson 是說既然改用tanh了,就全部一起sum完再tanh就好了?
不然前面的channel的音量會損失很大?
hyperbolic tangent好處是範圍在 -1與1之間
就算input多大也是如此
於是有Soft limiter的效果
我另外一條公式在3D空間是平面
我覺得tcp helper其實可以拿掉,改成直接export mixer到index.js
然後doBroadcast改成直接輸出stdout
然後stdout直接扔進mixer
這樣一來,doBroadcast就可以拿到source物件,把它放在index.js的global
就可以對個別channel調音亮了
也是可以
/tts wtf
不對阿 TCP helper要給encoder的輸出給HTTP Server
tcp-helper是用tcp server從ffmpeg收資料的
但這段沒必要阿
mixer的輸入本來就是一個readable stream
不 你認真看一下TCP helper
doBroadcast是decoder
要再Encode一次,在TCP helper那邊做
然後encoder的輸出要丟給HTTP Server
tcp helper是spawn一個ffmpeg,encode資料把輸出給http helper,並且用tcp server收從docoder來的資料沒錯吧?
對阿
但是 並且用tcp server收 這段沒必要阿
直接把decoder的stdout扔過去就好了
一般用戶麥克風應該只有單channel?
我也是這麼想的
Decoder會把他變雙頻道
所以所有input都應該會是雙聲道
印像中webRTC拿到的都會是浮點數的PCM
要自己轉一次
轉換去Signed 16bit little endian
現在radio的rul是?
這是測試版
是說我覺得可以加個static file provider給http server
middleware?
express(
順便把拿來iframe的撥放器之類的弄上去
not bad (?
把 HTTP helper 變Express
是說其實connect就夠了吧?
可惜我今天整天沒空(
好我在聽了,如果開始推的話我應該聽的到
根本用不到express的大部分功能阿
好像也是
middleware應該有吧
express.static
express.Router好像沒用到
那一堆 .params 之類的也用不到吧?
唉唉唉 是
所以 tanh vs. linear mixing
哪個贏(
爛喇叭聽不出來(?
我要聽啦
現在沒聲音正常嗎?
隨便拿一條英文給我(?
f5
Hello WOrld
放兩首歌啦
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
沒這指令吧
你在c9的cmd
多開一個ffmpeg
如果TCP helper還在的話
會有多一股聲音進去
給我姐姐的網址(#
沒流量..WTF
mpv 直接播網址不行是什麼概念
怎麼我聽不到兩首歌疊在一起
突然整個死了
我自己也連不上
你一邊用bot放頭文字D,一邊開ffmpeg推姐姐
可是我可以連(
為啥我明明關掉了,他卻還在撥姐姐...
理解不能
%%%%%%%%%%
延遲
為什麼瀏覽器可以開mpv不行
話說我除了姐姐好像還有嗶嗶嗶
wwwww
我的瀏覽器突然連不上她了 .-.
但是cloud9表示一切正常 .-.
為什麼mpv會把它判斷為youtube網址
然後嘗試用youtube-dl去解
到底.-.
好像有不明人士在spam連線阿
好雜亂的聲音.-.
兩首歌一起撥,不亂才有鬼
姊姊完全蓋住另一個了
是說剛剛不斷DDOS,讓c9 cpu 100%的人消失了
我覺得那有可能是我,剛剛mpv把radio丟給youtube-dl不知道做了什麼
mpv是腦袋撞到歐(望
它似乎把所有http(s)的都丟給YTDL
現在就是聽用 tanh 函數 的混音效果清不清楚阿
如果不清楚的話就用回我昨天的混音函數
可是現在只有一首歌
然後我沒聽過昨天的混音函數
算清楚,但我覺得需要加一個auto balance來平衡音源之間的音量(望
喔不對,我聽到另一首了
不然會各種蓋台
音量大的會蓋住音量小的
雖然這是正常現象就是了
小幸運
現在好像蠻好的www
兩手都聽的到
好的
那個要算Peak RMS
不然你希望大平台嗎
wwwwwwwww
很耗CPU
話說現實中混音是怎樣的
那播放那邊加上dynamic range compression (?)
模擬混音:兩條線接在一起
數碼混音:加數(配合Gate/Limiter/Compressor)
不是我說的是完全現實
就是左邊撥一個右邊撥一個這樣
現在是小幸運蓋TTS了
直接兩個人用一支麥克風(X
DJ?
現在還是tanh喔?
我的問題是最符合這個的是怎麼算
tanh
要不要試試看昨天那個混音函數
昨天那個被我砍乾淨了阿 .-.
我聽起來就是音量大的會蓋掉音量小的,然後如果兩個音量差不多的話聽起來不錯
果然應該先commit 一下
c9歷史(?)
沒吧
value = (1 - Math.abs(a b)) (a + b)
做code clear時順手砍了註解掉的東西
這邊
我還記得
所以我說那個c9有程式碼歷史可以看
要把 value = Math.tanh(value) 註解掉
然後 value = 上面那個
a 和 b 要取代為 value 和 value2
現在沒聲音是正常的嗎
我重開
然後他就掛了
再重開
就會沒事了
我有看到title可是沒有聲音正常嗎
延遲
我是改壞啥了嗎...
可是至少她也該輸出空的聲音阿
clip那邊
應該在下面
它是有輸出空的聲音沒錯阿
我發現我把 *max一起註解掉了...
到底為啥我的電腦連不上?
現在有聲音嗎?
有聽到同時兩首歌了?
有,但是我完全聽不到另一首的聲音
我好像莫名被c9 proxy ban ip了(艮
現在這個好像不會因為另一個音量大所以就把另一個音量壓小
另一個如果A音量很大B音量會有被壓低的感覺
整個斷了?
有王八蛋又在ddos
連線被塞好塞滿了
Log有顯示連線數啊
看來還是要把HTTP的no Timeout拿掉
SSE斷線會重連所以不太怕
是說到底是甚麼client,可以寫得這麼糟糕,沒事就在spam連線
這真的很芭樂耶
我覺得tanh聽起來比較好
所以這個比起用 tanh 好?
沒有,現在這個如果音量差很多的話是很完美的聽不到另一個
所以tanh至少還聽的到另一個
我回家再比比看
拿我的耳機
對於一段聲音的平均音量怎麼算?
把大於0的數值平均?
sqrt(s1 ^2 + s2 ^ 2 + … + s_n ^ 2)
這叫做RMS Value
看起來好耗cpu
常用來比較峰值
為什麼不直接開dynamic range compression比較快
config.js是有這個選項沒錯
但是那是在輸出
OK啊
那個會導致超大延遲
要在進去mixer之前就先把兩個音源的音量都平衡阿
沒可能
是說我覺得tcp helper的tcp server還是別拿掉好了,單純export mixer好了
這樣才可以隨時做目前這種奇怪的事情(?
之後再做個 /volume 把目前全部在mixer的來源列出來
是說這個只能用來比較一樣長度之間的封值?
n 越多,看起來上限越高啊?
你忘記除與n了啊…
我決定我要關掉radio了
我快聽到精神崩潰惹(?)
還是你都直接拿礦物去冶煉(?
你可以直接 mine到 不含雜質的 metal(?????
純金算嗎?
好吧,有關係關係也在工程而不是化學
在於 engineering 不在 chemical 這樣講行了吧
你為什麼會覺得製作不鏽鋼是化工?
?
一直loop阿
你自己加其他歌啊
跳歌了
可是我要準備去睡覺了
晚安
不鏽鋼是材料學啊
不過用氰化物的確可以提煉純淨的礦物
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 )
感覺好看很多?
e.g. 金,銀
是說我覺得應該要紀錄目前的queue跟個人播過的歌的,不然每次都要翻chat history找
怎麼我覺得用了 tanh 好像也影響了頻域
好像收縮了
如果聲音也有類似HDR的格式就好了,就可以不用裡他,一股腦加上去了
HDR就是讓他Overflow(
這就是你最開始用的吧?
是 可是這不是最好的
詳情可以去 dsp.stackexchange.com 找文章
所以我就開始自己算公式了
會找到不少說這條公式有問題的答案
這題沒有所謂正解吧?
在把音量切掉時,一定會有扭曲,但哪一個造成的扭曲,比較不影響效果,就要看人了
用了 tanh 會有頻域被壓縮的感覺
不太好
換回去?
換回去了
好很多
不過TTS在某些情況會不夠大聲
可能 doTTS幫他加一下gain
我可以船歌嗎
w
可是那個bot是測試版
正式版是 @licson_radiobot
測試版是 @licson_testbot
呃 差別在哪www
正式版是放在我網站上全世界都可以聽到而且Bot是穩定的
測試版是我們測試最新功能
用的
這個是測試版
喔喔喔
那我傳測試就好
東西都混起來了ww
故意的
我要測試新的混音功能
喔喔喔
然後測試哪條混音算式比較好
剛剛我覺得 tanh(a + b) 會有被壓縮的感覺
a + b - |ab| 又有被破壞原本聲音的感覺
現在是 (1 - |ab|)(a + b)
根本DSP領域啊
ww 名詞完全陌生
我不是主修信號處理
可能要問問看朋友有沒有唸信號處理
頭腦要爆炸了 www
不要直接丟Youtube連結喔
不支援
要丟檔案或是DirectLink
恩恩
npm上真的很多奇妙東西耶
隨便搜還真的有
怎麼好像又波不出來了
QQ
連tanh都可以是模組了
有夠垃圾(
那麼模組像這樣
module.exports = function tanh(x) {
var y = Math.exp(-2 * x);
return (y + 1) / (y - 1);
}
WTH喔
話說有試過直接用ffmpeg的amix嗎?
我記得還有這個
真 無腦 模組
每次換歌都會卡住耶
殺虫www
本來就要等他讀
會等一下正常
等等我不懂
不過好像有點...久?
為什麼會需要這個
剛剛那一首等非常非常久
你去問Telegram
鬼知道
都是TG作怪
不是我的Bot
喔喔喔
我的Bot都在乖乖叫TG授權我給檔案啊
我也只prefetch 0.25秒,不可能卡住
其實這是在等 getFile(file) 的Promise resolve
是說addSource回傳的source物件,有一個remove事件會說這個來源的是否已經結束
這根本不是我傳的www
因爲是我的
喔喔喔
酷耶
想認真聽音樂的去正式版的 @licson_radiobot www
測試bot會聽的中途多很多奇怪的東西(