Esempio n. 1
0
    def createChannel(self):
        #ファイルを読み込み、ストリームを生成
        if os.path.isfile(self.fileName):
            handle = pybass.BASS_StreamCreateFile(
                False, self.fileName, 0, 0, pybass.BASS_UNICODE
                | pybass.BASS_STREAM_PRESCAN | pybass.BASS_STREAM_DECODE)
            #逆再生用のストリームを生成。さっきのhandleはこれと同時にfreeする
            reverseHandle = bass_fx.BASS_FX_ReverseCreate(
                handle, 0.3,
                bass_fx.BASS_FX_FREESOURCE | pybass.BASS_STREAM_DECODE)
            #再生速度をコントロールするストリームを生成。
            handle = bass_fx.BASS_FX_TempoCreate(
                reverseHandle, 0)  #bass_fx.BASS_FX_FREESOURCEしない
            #再生の向きを元の方向に設定
            pybass.BASS_ChannelSetAttribute(reverseHandle,
                                            bass_fx.BASS_ATTRIB_REVERSE_DIR,
                                            bass_fx.BASS_FX_RVS_FORWARD)
        elif re.search("https?://.+\..+", self.fileName) != None:
            handle = pybass.BASS_StreamCreateURL(self.fileName.encode(), 0, 0,
                                                 0, 0)
            reverseHandle = 0
        else:
            handle = 0
            reverseHandle = 0

        #再生ボリュームを初期設定
        pybass.BASS_ChannelSetAttribute(handle, pybass.BASS_ATTRIB_VOL,
                                        self.handleVolume)

        #2つのhandleを返す

        return handle, reverseHandle
Esempio n. 2
0
 def fastMoveReset(self):
     self.moveTempo = 100.0
     self.rewindFlag = 0
     self.fastForwardFlag = 0
     pybass.BASS_ChannelSetAttribute(self.handle, bass_fx.BASS_ATTRIB_TEMPO,
                                     self.channelTempo)
     pybass.BASS_ChannelSetAttribute(self.reverseHandle,
                                     bass_fx.BASS_ATTRIB_REVERSE_DIR,
                                     bass_fx.BASS_FX_RVS_FORWARD)
     pybass.BASS_ChannelUpdate(self.handle, 0)
Esempio n. 3
0
 def rewind(self):
     if self.fastForwardFlag == 0 and pybass.BASS_ChannelIsActive(
             self.handle) == pybass.BASS_ACTIVE_PLAYING:
         if pybass.BASS_ChannelSetAttribute(self.reverseHandle,
                                            bass_fx.BASS_ATTRIB_REVERSE_DIR,
                                            bass_fx.BASS_FX_RVS_REVERSE):
             self.rewindFlag = 1
             if self.moveTempo < 500.0:
                 self.moveTempo += 50.0
                 pybass.BASS_ChannelSetAttribute(self.handle,
                                                 bass_fx.BASS_ATTRIB_TEMPO,
                                                 self.moveTempo)
     elif self.fastForwardFlag == 1 and pybass.BASS_ChannelIsActive(
             self.handle) == pybass.BASS_ACTIVE_PLAYING:
         self.fastMoveReset()
Esempio n. 4
0
 def changeVolume(self, num):
     if num < 0 or num > 200:
         return
     num = num / 100
     self.handleVolume = num
     pybass.BASS_ChannelSetAttribute(self.handle, pybass.BASS_ATTRIB_VOL,
                                     self.handleVolume)
Esempio n. 5
0
 def setPitch(self, pitch):
     self.channelPitch = pitch
     rtn = False
     if pitch >= -60 and pitch <= 60:
         if pybass.BASS_ChannelSetAttribute(self.handle,
                                            bass_fx.BASS_ATTRIB_TEMPO_PITCH,
                                            pitch):
             rtn = True
     return rtn
Esempio n. 6
0
 def setTempo(self, tempo):
     self.channelTempo = tempo
     rtn = False
     if tempo >= -95 and tempo <= 5000:
         if pybass.BASS_ChannelSetAttribute(self.handle,
                                            bass_fx.BASS_ATTRIB_TEMPO,
                                            tempo):
             rtn = True
     return rtn
Esempio n. 7
0
 def setFreq(self, freq):
     self.channelFreq = freq
     rtn = False
     if freq >= 5 and freq <= 5000:
         # パーセントから周波数に変換
         freqHz = 44100 * (freq / 100)
         if pybass.BASS_ChannelSetAttribute(self.handle,
                                            bass_fx.BASS_ATTRIB_TEMPO_FREQ,
                                            freqHz):
             rtn = True
     return rtn
Esempio n. 8
0
 def fastForward(self):
     if self.rewindFlag == 0 and self.moveTempo < 500.0 and pybass.BASS_ChannelIsActive(
             self.handle) == pybass.BASS_ACTIVE_PLAYING:
         self.moveTempo += 50.0
         if pybass.BASS_ChannelSetAttribute(self.handle,
                                            bass_fx.BASS_ATTRIB_TEMPO,
                                            self.moveTempo):
             self.fastForwardFlag = 1
         else:
             self.moveTempo = 0.0
     elif self.rewindFlag == 1 and pybass.BASS_ChannelIsActive(
             self.handle) == pybass.BASS_ACTIVE_PLAYING:
         self.fastMoveReset()