[DuangSUSE@duangsuse]~/Projects/smf-to-lrc% kotlin build/libs/SMFtoLRC-1.0-SNAPSHOT.jar -v ~/文档/野习_pin.mid
This is a MIDI file还算是可以用也能识别出 tempo (bpm) ,只是换行需要后期编辑,总体看还好。
Header length: 6
This is a status-1 file with 2 tracks
One tick is 1/192-th of a quarter note
This is a MIDI track
Track length: 11
At 0 Tempo: 075300 480000 (125 bpm)
This is a MIDI track
Track length: 7472
At 13184 Lyrics: 7a68656e zhen
https://github.com/Enaium/LrcToSrt/tree/master/LrcToSrt #CSharp 的转换工具
https://github.com/caroltc/lrc2srt python 后端网页处理
https://github.com/URenko/lrc2srt
https://github.com/SIDmao/lrc2srt 这个是 shellscript (awk/sed) 的
https://github.com/alicesister1/lrc2srt C++ 的
https://github.com/caroltc/lrc2srt python 后端网页处理
https://github.com/URenko/lrc2srt
https://github.com/SIDmao/lrc2srt 这个是 shellscript (awk/sed) 的
https://github.com/alicesister1/lrc2srt C++ 的
GitHub
Enaium/LrcToSrt
LrcToSrt Lrc 转 Srt. Contribute to Enaium/LrcToSrt development by creating an account on GitHub.
duangsuse::Echo
https://github.com/Enaium/LrcToSrt/tree/master/LrcToSrt #CSharp 的转换工具 https://github.com/caroltc/lrc2srt python 后端网页处理 https://github.com/URenko/lrc2srt https://github.com/SIDmao/lrc2srt 这个是 shellscript (awk/sed) 的 https://github.com/alicesister1/lrc2srt C++…
他们怎么就不能向 pandoc 学习一下…… 弄那么多 bcc2srt bcc2ass ass2lrc 限定了输入输出,还在子程序里限制输入必须是 file 什么的而不是抽象出一个 readline iterator…… 闹了半天不仅兼容性垃圾,写那么多代码连互化都做不到,草死了
Forwarded from duangsuse Throws
GitHub
不如来看看隔壁的 extract-subtitles? · Issue #7 · HenryLulu/video-to-text-ocr-demo
https://github.com/duangsuse-valid-projects/extract-subtitles 这个是我改的,原作者比较学院派,没有那些 fixed rate 什么的,主要是 absdiff(m1, m2) 和 scipy.signal.argrelextrema 提取关键帧(key frame) 也就是说没有这种算法: for frame_no in range...
https://github.com/notepad-plus-plus/notepad-plus-plus/commit/bf2cd8e05abf5ca6c93cdc8011e0023292aeedb8#commitcomment-38574535 #GitHub #China
I see your point. However, since the author and main maintainer of
I see your point. However, since the author and main maintainer of
taiwaneseMandarin.xml is a Taiwanese but not a Chinese nor a Hongkongners, I think it's fair to call it Taiwan Mandarin. OTOH, language/culture/region naming is just a conventional way, while people understand what it does mean, non-conventional way can be used.GitHub
Changes localization file name "chinese.xml" to "taiwaneseMandarin.xml" · notepad-plus-plus/notepad-plus-plus@bf2cd8e
Saying Taiwan is part of China is like saying Java is part of JavaScript.
https://www.mono-project.com/docs/gui/gtksharp/widgets/treeview-tutorial/ #Csharp #Gtk
https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/collectionview/ #Windows #gui
https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/collectionview/ #Windows #gui
Docs
Xamarin.Forms CollectionView - Xamarin
The CollectionView is a flexible and performant view for presenting lists of data using different layout specifications.
LrcToSrtGtk.zip
36.7 KB
看到某个 .NET WPF 4.0 XAML UI 写的项目想移植下到 GTK# ,发现不行,弃了。 Gtk# 也是牛逼,居然没发现有 SelectionChangedEvent ,而且有 TreeView 无 ListView ,GUI designer 也是不知道怎么 access 已经命好名的 widget ,唉
SRT 格式:
item, elementIn, not
Seq, Repeat, JoinBy, SurroundBy
数字应该还好读吧... 我写个
其实我就是想把
time int:int:int,intLRC 格式:
(int
timespan --> time
!nl*
nl nl)*
CommonPart🤔应该怎么样呢……
'[' int ':' int '.' int ']' white? anyChar* nl?
'<' int ':' int '.' int '>' white? ![<\[\]]*
Tag
'[' ![0-9]+ ':' anyChar* ']'
File (Tag|CommonPart)* CommonPart*
item, elementIn, not
Seq, Repeat, JoinBy, SurroundBy
数字应该还好读吧... 我写个
class NumberUnit:好了…… 还是咸鱼点吧,懒得再用 Python 重写现如今的 parserkt 了……
def __init__(self, unit):
self.unit = unit
def _digits(self, n):
if n < self.unit: yield n; return
accum = n
while accum > self.unit:
(accum, k) = divmod(accum, self.unit)
yield k
if int(accum) != 0: yield accum
def convFrom(self, n): return reversed(list(self._digits(n)))
def convBack(self, ks):
accum = 0
for k in ks: accum = accum*self.unit + k
return accum
其实我就是想把
[mm:ss.xx] a <mm:ss.xx> b给弄成
[Part("norm", mm:ss.xx, "a"), Part("word", mm:ss.xx, "b")] ,然后 zipWithNext() 处理啊…… 结果没有能直接完成两种工作的库
duangsuse::Echo
SRT 格式: time int:int:int,int (int timespan --> time !nl* nl nl)* LRC 格式: CommonPart '[' int ':' int '.' int ']' white? anyChar* nl? '<' int ':' int '.' int '>' white? ![<\[\]]* Tag '[' ![0-9]+ ':' anyChar* ']' File (Tag|CommonPart)* CommonPart* 🤔应该怎么样呢………
from functools import partial
partial(print, ..., 1),虽然后来我发现即便 lambda 这个很长但也可以用,emmmdef require(value, p, msg):
if not p(value): raise ValueError(f"{msg}: {value}")
def zipWithNext(xs):
require(xs, lambda it: len(it) > 2, "must >2")
for i in range(1, len(xs)):
yield (xs[i-1], xs[i])
def zipTakeWhile(xs, predicate):
for (a, b) in zipWithNext(xs):
if not predicate(a, b): break
yield a; yield b 嗯…… 我们想要合并的歌词其实就是
(note join by distance < cfg.d) join by distance >= cfg.d 所以只需要
while True:
print(next(linez))
except StopIteration: pass 就可以啦…… 到底还是有点麻烦
我好可怜,为什么他们不弄好这种工具给我…… 明明是很常见的 Vocaloid 歌词,只不过是给 UTAU 的而已啊
开源的概念本身没有什么问题,尽管能让人看的“成绩”并不少,但它需要得到支持的地方也很多。
开源的概念本身没有什么问题,尽管能让人看的“成绩”并不少,但它需要得到支持的地方也很多。