TCAX 字幕特效制作工具官方论坛 | ASS | TCAS | Python | Aegisub | Lua

 找回密码
 新人加入
查看: 6148|回复: 11

[特效算法] 波形頻譜 [复制链接]

Administrator

Shanzhai Pro.

Rank: 7Rank: 7Rank: 7

发表于 2012-8-25 11:09:08 |显示全部楼层
嘛 ASS生成太大了 用處不大
只是結合這個 也比較好理解 頻譜是怎麼一回事
有興趣的可以寫一些 自己的頻譜
思路上建議不用拘泥于傳統頻譜 水波式的發散頻譜 或者是某種圖形 四周的點作為波形點 不規則拉升
  1. from tcaxPy import *

  2. from util.tcAudio import *

  3. SPECHEIGHT = 127   #頻譜高度
  4. SPECWIDTH = 300    #頻譜寬度(太寬了很卡 測試可以更小一點 到500 我就crash沒壓出來。。。)
  5. BANDS = 300        #柱狀條數(波形頻譜和寬度一樣)


  6. def Spectrum(fft):      # convert fft data to graph

  7.     bars = []

  8.     b0 = 0

  9.     for x in range(BANDS):

  10.         peak = 0        # peak of a certain bar

  11.         b1 = pow(2, x * 10.0 / (BANDS - 1))

  12.         if b1 > 1023:

  13.             b1 = 1023

  14.         if b1 <= b0:

  15.             b1 = b0 + 1    # make sure it uses at least 1 FFT bin

  16.         while b0 < b1:

  17.             if peak < fft[1 + b0]:

  18.                 peak = fft[1 + b0]

  19.             b0 += 1

  20.         y = int(sqrt(peak) * 3 * SPECHEIGHT - 4)   # scale it (sqrt to make low values more visible)

  21.         if y > SPECHEIGHT:

  22.             y = SPECHEIGHT     # cap it

  23.         bars.append(y)

  24.     return bars

  25. def tcaxPy_User():


  26.     file_name = GetVal(val_OutFile) + '.ass'

  27.     ass_header = GetVal(val_AssHeader)

  28.     ASS_FILE = CreateAssFile(file_name, ass_header)

  29.     tcAudioInit()

  30.     channel = tcAudioOpen('h.mp3')      # 此處修改 音頻文件名

  31.     freq = tcAudioGetFreq(channel)      # usually 44100 Hz

  32.     duration = tcAudioGetDuration(channel)

  33.     num = int(duration * freq / 2048)

  34.     hStr1 = "{\p1}m 0 0 l 0 -70 l 1 0 l 0 70 l 0 0"
  35.     hStr2 = "{\p1}m 0 0 l 0 -50 l 1 0 l 0 50 l 0 0"

  36.     for i in range(num):

  37.         ASS_BUF = []


  38.         fft = tcAudioGetFFT(channel, 2048)

  39.         bars = Spectrum(fft)

  40.         bar_width = int(SPECWIDTH / BANDS)

  41.         count = len(bars)

  42.         for j in range(count):

  43.             start = i * 100 * 2048 / freq

  44.             end = (i + 1) * 100 * 2048 / freq

  45.             x = (1280 - SPECWIDTH) / 2 + bar_width * j

  46.             y = 500

  47.             FSC = fsc((bar_width) * 100, bars[j] * 2)

  48.             CLR1 = color1("FFBD00") + alpha1(0)   

  49.             CLR2 = color1("FFFFFF") + alpha1(119)   
  50.             ass_main(ASS_BUF, SubL(start, end, 0, Pix_Style), an(7) +blur(0.8) + pos(x, y) + FSC + CLR1, hStr1)
  51.             ass_main(ASS_BUF, SubL(start, end, 1, Pix_Style), an(7) +blur(0.8) + pos(x, y) + FSC + CLR2, hStr2)
  52.         WriteAssFile(ASS_FILE, ASS_BUF)     # write the buffer in memory to the file

  53.         progress(i + 1, num)

  54.     tcAudioFin()

  55.     FinAssFile(ASS_FILE)
复制代码
1

查看全部评分

Rank: 4

发表于 2012-8-25 11:59:26 |显示全部楼层
频谱算法都有了,这个要慢慢看…额

Rank: 4

发表于 2013-7-1 11:51:42 |显示全部楼层
  好难的感觉。哎。。

Rank: 4

发表于 2014-1-14 16:27:53 |显示全部楼层
没看懂

Rank: 4

发表于 2014-7-14 06:18:17 |显示全部楼层
我只看到了 if循环语句和什么码率啥的不知道是不是 哈哈 继续玩耍去

Moderator

Effect Researcher.

Rank: 5Rank: 5

发表于 2015-5-28 12:46:28 |显示全部楼层
请问util.tcAudio在哪里啊?

Rank: 4

发表于 2015-10-19 15:17:09 |显示全部楼层
同上想问问util.tcAudio这个模块在哪...

Moderator

Effect Researcher.

Rank: 5Rank: 5

发表于 2015-10-19 22:11:49 |显示全部楼层
本帖最后由 面麻 于 2015-10-19 22:16 编辑

它是一个独立模块,不包含在发行版中,可以从下面的帖子下载:
http://www.tcax.org/forum.php?mod=viewthread&tid=198
将其中的 tcAudio.pyd 放到 ...\tcax\util\ 文件夹中即可,相应地,在脚本中包含下面的语句:
  1. from util.tcAudio import *
复制代码

Rank: 4

发表于 2016-6-11 11:18:50 |显示全部楼层
面麻 发表于 2015-10-19 22:11
它是一个独立模块,不包含在发行版中,可以从下面的帖子下载:
http://www.tcax.org/forum.php?mod=viewthr ...

我已经把tcAudio.pyd放到...\tcax\util\ 文件夹里了,也修改音乐文件名,还是有问题,请问使用这个代码具体步骤是什么呀。。

Moderator

Effect Researcher.

Rank: 5Rank: 5

发表于 2016-6-11 23:04:08 |显示全部楼层
zpao120 发表于 2016-6-11 11:18
我已经把tcAudio.pyd放到...\tcax\util\ 文件夹里了,也修改音乐文件名,还是有问题,请问使用这个代码具 ...

首先确定,tcAudio.pyd 位于正确路径,其次写好 TCC 文件,注意 init 和 fin 设为 true,指定相应的 py 脚本和 k.ass,就可以了。
指出几点问题:1. 完全引用别人的脚本,而不弄清楚基本原理,是不合适的;
2. 不学好基础教程也是不好的,应当先学好基础,否则很多地方都是糊涂的。

Rank: 4

发表于 2016-6-14 12:24:17 |显示全部楼层
面麻 发表于 2016-6-11 23:04
首先确定,tcAudio.pyd 位于正确路径,其次写好 TCC 文件,注意 init 和 fin 设为 true,指定相应的 py  ...

好吧。。总感觉py脚本编辑有些难学,最近也没什么时间了,只想试试能不能套用

Rank: 6Rank: 6

发表于 2016-7-27 21:57:02 |显示全部楼层

Rank: 4

发表于 2022-2-13 02:14:05 |显示全部楼层
本帖最后由 Seekladoom 于 2022-2-13 15:04 编辑

附上工程文件:
【附打开大体积字幕文件方法】TCAX Karaoke Effect 459 - 波形频谱.part001.rar.rar (950 KB, 下载次数: 1237)
【附打开大体积字幕文件方法】TCAX Karaoke Effect 459 - 波形频谱.part002.rar.rar (950 KB, 下载次数: 1207)
【附打开大体积字幕文件方法】TCAX Karaoke Effect 459 - 波形频谱.part003.rar.rar (950 KB, 下载次数: 1179)
【附打开大体积字幕文件方法】TCAX Karaoke Effect 459 - 波形频谱.part004.rar.rar (950 KB, 下载次数: 1195)
【附打开大体积字幕文件方法】TCAX Karaoke Effect 459 - 波形频谱.part005.rar.rar (950 KB, 下载次数: 1112)
【附打开大体积字幕文件方法】TCAX Karaoke Effect 459 - 波形频谱.part006.rar.rar (770.06 KB, 下载次数: 1052)

注:如上压缩包内的字幕文件体积达到了167M,用Aegisub直接打开100%会提示报错cannot conver from utf8 to binary。要想正常预览请看如下方法及步骤:


步骤1:点击文件→打开字幕并指定编码
步骤1.png


步骤2:点击需要打开的大体积字幕文件
步骤2.png


步骤3:选择UTF8编码
步骤3.png


步骤4:等待20-40秒,就可以看到正常显示的波形频谱特效字幕文件了。
步骤4.png


配合如下帖学习更佳:
[完整特效] [SAI]034_hyoukaOP2


您需要登录后才可以回帖 登录 | 新人加入

GitHub|TCAX 主页

GMT+8, 2024-3-29 15:36

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部
RealH