mirror of
				https://github.com/MCV-Software/TWBlue.git
				synced 2025-11-03 21:37:05 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			67 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
from __future__ import absolute_import
 | 
						|
import ctypes
 | 
						|
from ..external import pybass, pybass_fx
 | 
						|
from ..stream import BaseStream
 | 
						|
from ..channel import Channel
 | 
						|
from ..main import bass_call, bass_call_0
 | 
						|
 | 
						|
class Tempo(BaseStream):
 | 
						|
 
 | 
						|
 def __init__(self, channel, flags=0, loop=False, software=False, three_d=False, sample_fx=False, autofree=False, decode=False, free_source=False):
 | 
						|
  flags = flags | self.flags_for(loop=False, software=False, three_d=False, sample_fx=False, autofree=False, decode=False, free_source=False)
 | 
						|
  self.channel = channel
 | 
						|
  if isinstance(channel, Channel):
 | 
						|
   channel = channel.handle
 | 
						|
  handle = bass_call(pybass_fx.BASS_FX_TempoCreate, channel, flags)
 | 
						|
  super(Tempo, self).__init__(handle)
 | 
						|
  self.add_attributes_to_mapping(
 | 
						|
   tempo=pybass_fx.BASS_ATTRIB_TEMPO,
 | 
						|
   tempo_pitch=pybass_fx.BASS_ATTRIB_TEMPO_PITCH,
 | 
						|
   tempo_freq=pybass_fx.BASS_ATTRIB_TEMPO_FREQ,
 | 
						|
  )
 | 
						|
 
 | 
						|
 | 
						|
 @property
 | 
						|
 def tempo(self):
 | 
						|
  """The tempo of a channel."""
 | 
						|
  return self.get_attribute(pybass_fx.BASS_ATTRIB_TEMPO)
 | 
						|
 
 | 
						|
 @tempo.setter
 | 
						|
 def tempo(self, val):
 | 
						|
  self.set_attribute('tempo', val)
 | 
						|
 | 
						|
 @property
 | 
						|
 def tempo_pitch(self):
 | 
						|
  return self.get_attribute('tempo_pitch')
 | 
						|
 | 
						|
 @tempo_pitch.setter
 | 
						|
 def tempo_pitch(self, val):
 | 
						|
  self.set_attribute('tempo_pitch', val)
 | 
						|
 | 
						|
 @property
 | 
						|
 def tempo_freq(self):
 | 
						|
  return self.get_attribute('tempo_freq')
 | 
						|
 | 
						|
 @tempo_freq.setter
 | 
						|
 def tempo_freq(self, val):
 | 
						|
  self.set_attribute('tempo_freq', val)
 | 
						|
 | 
						|
 def setup_flag_mapping(self):
 | 
						|
  super(Tempo, self).setup_flag_mapping()
 | 
						|
  self.flag_mapping.update({
 | 
						|
   'free_source': pybass_fx.BASS_FX_FREESOURCE,
 | 
						|
  })
 | 
						|
 | 
						|
 def get_source(self):
 | 
						|
  source = pybass_fx.BASS_FX_TempoGetSource(self.handle)
 | 
						|
  if source == self.channel.handle:
 | 
						|
   source = self.channel
 | 
						|
  return source
 | 
						|
 | 
						|
 source = property(fget=get_source)
 | 
						|
 | 
						|
 def get_rate_ratio(self):
 | 
						|
  return bass_call(pybass_fx.BASS_FX_TempoGetRateRatio, self.handle)
 | 
						|
 | 
						|
 rate_ratio = property(fget=get_rate_ratio)
 |