| 
UID3积分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, 下载次数: 5625) 
 
 | 
 
1
查看全部评分
 |