【WIP】Synthesizer V 插件开发入门(1)

【WIP】Synthesizer V 插件开发入门(1)

图源:紺屋鴉江 - 《銀河》,Pid:94649749

写在前面

本文并非“零基础入门”型的文章。阅读此文章前,建议你已经:

  • 使用过 Synthesizer V Studio(即 SVR2,以下用此简称代替),了解过 VOCALOID,知道“插件”的作用是什么;
  • 已购买 Synthesizer V Studio Pro 版本,以便于插件的开发与调试;
  • 有一定的编程经验,使用过 Lua 语言;

Synthesizer V Studio Pro的正版授权可从 平行四界官方淘宝店 Dreamtonics官方淘宝店 获取。关于 Lua 编程的资料数不胜数,可从 菜鸟教程 等网站获取。

另外,阅读时,可以配合下面两个文档:

正文部分存在问答部分,可能与后文的知识关联。你可以按顺序阅读,也可以在阅读完其他内容后再阅读问答部分。

以下是文章正文。

脚本存放位置

SVR2 的软件数据默认保存在“我的文档”下,而脚本放置在其中的“scripts”子目录中。

以 Windows 系统为例,如果你没有移动过“我的文档”位置,那么路径应该是:

1
C:\Users\<你的用户名>\Documents\Dreamtonics\Synthesizer V Studio\scripts

你可以在其中创建子目录分类存放不同种类的脚本。SVR2 安装时附带的插件默认放置在“Utilities”子目录下。

image-20220125230306915

插件的基本结构

SVR2 Pro 支持两种插件格式:JavaScript 插件,使用嵌入式的 Duktape 解释器;以及 Lua 插件,使用嵌入式的 Lua 5.4解释器。这里选择 Lua 作为编程示例语言,以便有 VOCALIOID 插件开发经验的人快速转向 SVR2 的插件开发。

SVR2 插件在结构上主要有以下几个部分:

  • 插件信息函数:getClientInfo()
  • 本地化函数:getTranslations()
  • 入口点函数:main()

下面分别进行说明。同时注意,SVR2 软件在启动时会将所有的插件代码载入内存(但不会执行除 getClientInfo()getTranslations() 外的其他部分),因而对插件代码做出的改动需关闭 SVR2 再启动 SVR2 才可生效。

插件信息

插件信息由函数 getClientInfo() 控制。作用与 VOCALOID 的 JobPlugins 中 mainfest() 函数的作用类似,保存插件的名称、维护者、兼容性等信息。

其结构如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
--[[
@function getClientInfo 插件信息函数
@param nil 无参数
@return table 返回列表
@field name string 插件名字
@field author string 插件作者
@field versionNumber num 插件版本
@field minEditorVersion num 最低版本要求
--]]
function getClientInfo()
return {
name = '插件名字',
author = '作者信息',
versionNumber = 1,
minEditorVersion = 65540
}
end

其中:

阅读更多
Linux & Windows 小技巧(3)

Linux & Windows 小技巧(3)

图源:Miv4t - 《MACHiNERY》,Pid:77186528

Windows 下的 cat 和 grep

lscatgrep这三个命令,往往是Linux初学者最先了解的、日常使用Linux时不可或缺的。对于Windows系统而言,同样有三个命令可以完成上述工作:dirtypefindstr

例如,用type显示文件内容:

image-20210413151134589

或者用findstr结合管道匹配先前程序输出内容中的字符串:

image-20210413151152079

也可以结合正则表达式:

image-20210413151207393

如果你不满足于系统命令的显示效果,你也可以尝试下面两款开源于Github的工具:

peco

项目链接:https://github.com/peco/peco

peco可以实现对管道输入的文本进行快速搜索、排序、多行选择等功能,使用Golang编写。目前仍不支持中文编码(GBK),且不支持默认的Windows PowerShell终端(你需要使用传统的命令提示符,或者更先进的终端程序,比如Hyper或者Windows Terminal)。该项目仍在活跃开发中,合理的使用可以提升效率。

image-20210413151244160

阅读更多
认识 Snort3 (1):编译、安装与简单使用

认识 Snort3 (1):编译、安装与简单使用

图源:SAyuki - 《Gray》,Pid:79912976

Snort 简介

Snort,是一款开源的 IDS/IPS 软件,由思科公司(Cisco)主导开发,使用广泛。Snort 有三种模式——包嗅探模式(Packet Sniffer)、包记录模式(Packet Logging)、IPS模式(Intrusion Prevention System)。搭配自定义的规则、不同的插件与其他软件,Snort 能在不同的系统中发挥不同的作用。

本篇文章简单记录 Snort3 的编译、安装和简单使用流程。

编译安装 Snort3

例子中使用的操作系统是 Ubuntu Server 20.04.3 LTS。当然你也可以使用 Ubuntu 18.04.5 LTS,或者其他 Linux 发行版。某些发行版由于内核配置原因无法编译 libdaq 的部分插件(例如 NFQ),这时 Snort 虽然无法提供防护功能,但仍然可以作为入侵检测系统(IDS)来使用。

快速导入 Ubuntu Server 虚拟机

Ubuntu Server 虚拟机其实不必下载 ISO 镜像后再用 VMWare 等虚拟化软件从头进行安装。Ubuntu 官方已经提供了预安装的虚拟磁盘的下载(如 Kali Linux 官方所做的那样),即 Ubuntu Cloud Images

image-20210411151459857

以 20.04 LTS daily build 为例,找到对应的 OVA 文件:

image-20210411151519613

以VMWare Workstation为例,双击下载的OVA文件,唤起VMWare Workstation的导入向导;或先打开VMWare Workstation主程序,左上角“文件”菜单中点击“打开”,然后选择OVA文件。

阅读更多

【WIP】Linux & Windows 小技巧(4)

Linux 桌面环境

两种常见 Display Server:

  • X Window System:历史久导致兼容性好,但设计思路老旧,性能问题开始有所体现。官方实现:X.Org Server。
  • Wayland:更简单的现代化窗口系统。比 X Window System 更高效,但兼容性仍不够好。正逐步替代 X Window System。官方实现:Weston。

X Window System

  • 增强级:Unity(Gnome)等
  • 常量级:Gnome(GTK),KDE(Qt)等
  • 轻量级:XFCE(GTK),LXDE(GTK),LXQt(Qt)等
  • 超轻量级:iceWM(层叠式),i3WM(平铺式),X.Org Server(层叠式)等

Wayland

  • 增强级:Unity(Gnome)等
  • 常量级:Gnome(GTK),KDE(Qt,正在适配)等
  • 轻量级:Weston(层叠式),XFCE(GTK,已有适配计划),LXQt(Qt,已有适配计划)等
  • 超轻量级:SwayWM(平铺式)等

【WIP】压制技术 B:从不熟悉的编码开始

文章摘录和润色于本人的笔记,难免有错漏之处。若您发现了其中的一处或几处,请在评论处指正,我将不胜感激。

什么是压制?

压制的对象

可以是一切种类的音频、视频、图像,比如说:

  • 蓝光光盘(BD)中的视频或音频(m2ts 等格式比较多见)
  • DVD 光盘中的视频或音频(dat 等格式比较多见)
  • CD 光碟中的视频或音频
  • 通过 Web 下载的各流媒体网站的视频或音频
  • 各种剪辑软件、合成软件、特效软件、DAW 等渲染的视频或音频
  • 图片(或者动态图片)转换为视频,例如“一图流 MV”等

注意:要区分压制(Rip)和混流(Mix)。

压制是进行编码,或在编码间转换的过程。

混流是将特定编码的视频轨/音频轨放入容器,或在容器间转换的过程。

注意:要区分编码(Encoding)和容器(Container)。

举例说明如下:

  • H.264 是一种视频编码,aac 是一种音频编码。
  • mp4 是一种视频容器,wav 是一种音频容器。
  • avi 既是一种视频编码也是一种视频容器。
  • mp3 既是一种音频编码也是一种音频容器。

压制的目标

对视频、音频等的压制,不全面地、概括地来说,有以下几点主要目标:

  • 使音频/视频的编码符合要求。例如符合视频网站点播视频的要求、直播网站直播串流的要求、流水线中剪辑代理的要求等。
  • 使音频/视频的数据总量(可以理解为音频/视频的体积)或音频/视频在单位时间内的数据量(可以理解为音频/视频的码率)符合要求。例如符合蓝光光盘的码率要求、窄带(依照2010年新的标准为4Mbps以下)情况下视频点播的要求等。
  • 尽可能地保留音频/视频中的有效信息。可以理解为视频画面中物体的轮廓、音频的频段细节等。
  • 去除或降低音频/视频中的干扰信息。可以理解为视频画面中的噪点、音频中的杂音等。
阅读更多
Hexo 新姿势!

Hexo 新姿势!

图源:《三色Δ绘恋》第8幕 烟花大会

Hexo的插件真是个好东西!一开始部署博客的时候并没有太在意插件的问题,毕竟觉得博客主题自带的插件挺全面的,足够使用了。但是用久了总是会腻,就想着静态博客能不能整一些新操作,即使只是添加点小功能。于是就翻了翻 Hexo 的插件目录,挑了些比较有用的插件,拿出来做个总结,同时也是为了方便以后使用做的一个简单记录。

管理员界面

插件是hexo-admin,效果是一个类似CodiMD编辑页面的“管理控制台”,可以实时编辑预览Markdown文章,修改tag,从剪贴板粘贴图片到文章等操作。注意:仅用于hexo s状态下的博客实例。

文章加密

插件是hexo-blog-encrypt,使用前须在站点配置文件加入以下内容:

1
2
encrypt:
enable: true

随后在文章的开头部分加入password:字段设置密码即可。

同时,配合abstract:字段和message:字段可以设置对无密码人的提示信息。同时注意不要设置toc。

中英文自动空格

插件为hexo-filter-auto-spacingnpm install --save之后就可以用,无需手动设置。

插入行内JS/CSS/图片

插件为hexo-filter-inline-assets

站点设置:

1
2
3
inline_assets:
enabled: true
limit: 100000

随后引入:

1
2
<link rel="stylesheet" href="css/main.css?__inline=true">
<script src="myscript.js?__inline=true"></script>
阅读更多
Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×