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

 找回密码
 新人加入
查看: 8034|回复: 13
打印 上一主题 下一主题

[其他代码] tcAudio模块特效示例 - ASS外挂音频柱状图(频谱分析) [复制链接]

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

跳转到指定楼层
楼主
发表于 2011-12-5 13:41:54 |只看该作者 |正序浏览
说明

需要先添加tcAudio模块, 下载地址 http://www.tcax.org/forum.php?mod=viewthread&tid=198
附件为完整工程, 其中test.mp3可以被替换, 推荐的音频格式为wav, mp3, ogg.
本例子仅作为一个展示用例.
  1. from tcaxPy import *
  2. from util.tcAudio import *

  3. SPECWIDTH = 368
  4. SPECHEIGHT = 127
  5. BANDS = 28

  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('test.mp3')
  31.     freq = tcAudioGetFreq(channel)      # usually 44100 Hz
  32.     duration = tcAudioGetDuration(channel)
  33.     num = int(duration * freq / 2048)
  34.     for i in range(num):
  35.         ASS_BUF = []
  36.         fft = tcAudioGetFFT(channel, 2048)
  37.         bars = Spectrum(fft)
  38.         bar_width = int(SPECWIDTH / BANDS)
  39.         count = len(bars)
  40.         for j in range(count):
  41.             start = i * 100 * 2048 / freq
  42.             end = (i + 1) * 100 * 2048 / freq
  43.             x = (1280 - SPECWIDTH) / 2 + bar_width * j
  44.             y = 700
  45.             FSC = fsc((bar_width - 2) * 100, bars[j] * 100)
  46.             CLR = color1(FmtRGB(j * 10 % 255, randint(0, 20), randint(20, 60))) + alpha1(50)    # a little change
  47.             ass_main(ASS_BUF, SubL(start, end, 0, Pix_Style), an(1) + pos(x, y) + FSC + CLR, PixPt())
  48.         WriteAssFile(ASS_FILE, ASS_BUF)     # write the buffer in memory to the file
  49.         progress(i + 1, num)
  50.     tcAudioFin()
  51.     FinAssFile(ASS_FILE)
复制代码

test_spectrum.rar

1.01 MB, 下载次数: 4675

完整工程

Rank: 4

14#
发表于 2022-2-13 01:18:53 |只看该作者
本帖最后由 Seekladoom 于 2022-2-13 01:22 编辑

【频谱特效测试】冒险岛背景音乐 5首.part01.rar (950 KB, 下载次数: 3357)
【频谱特效测试】冒险岛背景音乐 5首.part02.rar (950 KB, 下载次数: 3246)
【频谱特效测试】冒险岛背景音乐 5首.part03.rar (950 KB, 下载次数: 3243)
【频谱特效测试】冒险岛背景音乐 5首.part04.rar (146.88 KB, 下载次数: 3135)


随手改了几个TCAX频谱的配色:
图1:DarkMage - 黑魔法师登场曲(配色来源:老黑战斗场景的黑红紫配色)
DarkMage.png

图2:Dream Fragments - 露西德二阶段战斗曲(配色来源:露西德发色)
Dream Fragments.png

图3:Kinesis Theme Ⅰ - 超能力者凯内西斯主题曲(配色来源:凯内西斯的副武器——国际象棋)
Kinesis Theme I.png

图4:Start the Adventure - 冒险岛初代登录曲(配色来源:登录界面的那块木板)
Start the Adventure.png

图5:Title 2010 Winter - 冒险岛第二代登录曲(配色来源:登录成功时的提示框)
Title 2010 Winter.png

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

13#
发表于 2012-1-16 00:06:41 |只看该作者
5231251 发表于 2012-1-15 23:36
那怎么修改它的位置  在tcc中定义alignment好像不管用  想放在屏幕角落


TCC配置通常是针对内置特效的, 自己定制(编写)的脚本不一定会支持(要支持的话, 得编写不少额外代码, 增加复杂度), 所以最直接的办法是修改py脚本...

要先对python有个入门级的了解...

对于本例, 你只要修改pos中的数值就可以了 (如果不明白这句话的含义, 那我建议你先去学习一下py入门编程-->真的没有捷径)

相关链接: http://www.tcax.org/forum.php?mod=viewthread&tid=40

http://www.tcax.org/forum.php?mod=viewthread&tid=30



正式会员

爱理人士

Rank: 4

12#
发表于 2012-1-15 23:36:20 |只看该作者
milkyjing 发表于 2012-1-15 19:17
可以, 修改SPECWIDTH或bar_width的值吧...

p.s. 说实话, 没什么不能修改的...

那怎么修改它的位置  在tcc中定义alignment好像不管用  想放在屏幕角落

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

11#
发表于 2012-1-15 19:17:33 |只看该作者
5231251 发表于 2012-1-15 18:43
现在这个可以用了  
问下那个音频柱大小可以修改吗  可以的话怎么修改


可以, 修改SPECWIDTH或bar_width的值吧...

p.s. 说实话, 没什么不能修改的...

正式会员

爱理人士

Rank: 4

10#
发表于 2012-1-15 18:43:33 |只看该作者
现在这个可以用了  
问下那个音频柱大小可以修改吗  可以的话怎么修改

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

9#
发表于 2011-12-27 22:41:53 |只看该作者
5231251 发表于 2011-12-27 18:33
好吧   还是不行   算了!

等以后出正式版吧... 这个版本只是提供个概念...

正式会员

爱理人士

Rank: 4

8#
发表于 2011-12-27 18:33:10 |只看该作者
好吧   还是不行   算了!

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

7#
发表于 2011-12-22 16:20:13 |只看该作者
5231251 发表于 2011-12-22 01:01
发在你的邮箱了

用附件中这个dll替换掉TCAX\util中的那个同名bass.dll再试试吧.

bass.rar

100.29 KB, 下载次数: 4245

替换

正式会员

爱理人士

Rank: 4

6#
发表于 2011-12-22 01:01:19 |只看该作者
milkyjing 发表于 2011-12-21 15:14
QQ上把音频文件和脚本发我吧...

发在你的邮箱了

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

5#
发表于 2011-12-21 15:14:57 |只看该作者
5231251 发表于 2011-12-21 01:37
都试过了啊 问题依旧!桑心……

QQ上把音频文件和脚本发我吧...

正式会员

爱理人士

Rank: 4

地板
发表于 2011-12-21 01:37:58 |只看该作者
都试过了啊 问题依旧!桑心……

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

板凳
发表于 2011-12-20 18:04:39 |只看该作者
5231251 发表于 2011-12-20 17:28
为什么不行啊

用千千静听转换成mp3, 或wav试试吧.... 测试版, 问题难免...

正式会员

爱理人士

Rank: 4

沙发
发表于 2011-12-20 17:28:21 |只看该作者
为什么不行啊
audio.jpg

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

楼主
发表于 2011-12-5 13:49:54 |只看该作者
效果截图

spectrum.jpg

如果外挂预览比较卡, 可以试着只生成一部分 (提前关掉执行窗口, 已生成的部分ASS依然可以被使用), 或者直接压制后预览...

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

GitHub|TCAX 主页

GMT+8, 2024-11-22 09:58

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部
RealH