- UID
- 3
- 积分
- 8169
- 帖子
- 259
- 主题
- 68
- 论坛币
- 5016
- 威望
- 54
- EP值
- 2533
- MP值
- 20
- 阅读权限
- 200
- 注册时间
- 2011-8-3
- 在线时间
- 1097 小时
- 最后登录
- 2022-10-8
|
預覽:http://pan.baidu.com/s/1hqqY9CC#dir/path=%2FSaiyakuFX_Preview- from tcaxPy import *
- from util.tcAudio import *
- def tcaxPy_Init():
- # some common pre-defined global values
- global fontSize # as name implies
- global resX # horizontal resolution
- global resY # vertical resolution
- global marginX # horizontal margin
- global marginY # vertical margin
- global spacing # space between texts
- global frameDur # milliseconds per frame
- global lineNum # number of lines
- global textNum # textNum[i], number of texts in ith line
- global _BT # _BT[i], start time of a line
- global _ET # _ET[i], end time of a line
- global _KT # _KT[i][j], karaoke time of a syllable
- global _SK # _SK[i][j], elapsed karaoke time before reaching a certain syllable
- global _TXT # _TXT[i][j], as name implies
- global _L # _L[i], total width of a line
- global _W # _W[i][j], width of a text
- global _H # _H[i][j], height of a text
- global _A # _A[i][j], advance of a text, usually larger than width
- global _AD # _AD[i][j], distance between the current text to the first text of the line
- fontSize = GetVal(val_FontSize)
- resX = GetVal(val_ResolutionX)
- resY = GetVal(val_ResolutionY)
- marginX = GetVal(val_OffsetX)
- marginY = GetVal(val_OffsetY)
- spacing = GetVal(val_Spacing)
- frameDur = 1000 / GetVal(val_FXFPS)
- lineNum = GetVal(val_nLines)
- textNum = GetVal(val_nTexts)
- _BT = GetVal(val_BegTime)
- _ET = GetVal(val_EndTime)
- _KT = GetVal(val_KarTime)
- _SK = GetVal(val_KarTimeDiff)
- _TXT = GetVal(val_Text)
- _L = GetVal(val_TextLength)
- _W = GetVal(val_TextWidth)
- _H = GetVal(val_TextHeight)
- _A = GetVal(val_TextAdvance)
- _AD = GetVal(val_TextAdvanceDiff)
- def randi():
- if randint(0,1)==0:
- return -1
- else:
- return 1
- def med(fft):
- X = 0
- for i in range(100,200):
- X += fft[i]
- return X/100
- def beat(F):
- global BEAT
- BEAT = []
- BEAT.append(255)
- for a in range(len(F)-1):
- if int(abs(F[a+1] - F[a])*100000)> 240:
- BEAT.append(3.5)
- elif int(abs(F[a+1] - F[a])*100000)< 180 :
- BEAT.append(1)
- else:
- BEAT.append(0.5+((255-abs(F[a+1] - F[a])*100000)/255)*5)
- return BEAT
- def tcaxPy_User():
- file_name = GetVal(val_OutFile) + '.ass'
- ass_header = GetVal(val_AssHeader)
- ASS_FILE = CreateAssFile(file_name, ass_header)
- tcAudioInit()
- channel = tcAudioOpen('test.mp3')
- freq = tcAudioGetFreq(channel) # usually 44100 Hz
- duration = tcAudioGetDuration(channel)
- num = int(duration * freq / 2048)
- global F
- F = []
- for k in range(num):
- fft = tcAudioGetFFT(channel, 2048)
- F.append(med(fft))
- B = beat(F)
- CLR1 = color1("FFFFFF")+color3("000000") + alpha1(0)
- CLR2 = color1("000000")+color3("000000") + alpha1(30)
- for i in range(lineNum):
- initPosX = (resX - _L[i]) / 2 + marginX # if marginX = 0, then it's just on the middle
- initPosY = marginY
- for j in range(textNum[i]):
- ASS_BUF = []
- if _TXT[i][j] == '' or _TXT[i][j] == ' ' or _TXT[i][j] == ' ':
- continue
- posX = initPosX + _AD[i][j] + _A[i][j] / 2
- posY = initPosY + 19
- ass_main(ASS_BUF, SubL(_BT[i]+j*5, _BT[i]+_SK[i][j]-10, 10),fad(100,0)+ an(5) + pos(posX, posY) + CLR1+bord(1)+shad(0.5) ,_TXT[i][j] )
- ass_main(ASS_BUF, SubL(_BT[i]+_SK[i][j]-10, _ET[i]+j*5, 30),fad(0,100)+ an(5) + pos(posX, posY) +t(0,30,fsc(150,150)) +t(30,_KT[i][j]*10,fsc(100,100))+ CLR1+bord(1)+shad(0.5) ,_TXT[i][j] )
- for m in range(num):
- R=[(0,1),(0,-1),(1,0),(-1,0),(0,-1),(0,1),(-1,0),(1,0),(0,-1),(0,1),(randi(),randi()),(randi(),randi()),(0,1),(-1,0),(1,0),(-1,0),(1,0)]
- start = m * 100 * 2048 / freq
- end = (m + 1) * 100 * 2048 / freq
- if start > _BT[i]+j*5 and end <_ET[i]+j*5:
- ass_main(ASS_BUF, SubL(start-3, end, 20), fad(40,40)+ an(5) + pos(posX+B[m]*R[i][0], posY+B[m]*R[i][1])+blur(1.5) + CLR2, _TXT[i][j])
- WriteAssFile(ASS_FILE, ASS_BUF) # write the buffer in memory to the file
- Progress(i,j)
- tcAudioFin()
- FinAssFile(ASS_FILE)
复制代码
killmebabyED.zip
(2.35 MB, 下载次数: 3406)
|
-
1
查看全部评分
-
|