Exemplo n.º 1
0
void CBassAudio::SetTempoValues ( float fSampleRate, float fTempo, float fPitch, bool bReverse )
{
    if ( fTempo != m_fTempo )
    {
        m_fTempo = fTempo;
    }
    if ( fPitch != m_fPitch )
    {
        m_fPitch = fPitch;
    }
    if ( fSampleRate != m_fSampleRate )
    {
        m_fSampleRate = fSampleRate;
    }
    m_bReversed = bReverse;

    // Update our attributes
    if ( m_pSound )
    {
        // TODO: These are lost when the sound is not streamed in
        BASS_ChannelSetAttribute ( m_pSound, BASS_ATTRIB_TEMPO, m_fTempo );
        BASS_ChannelSetAttribute ( m_pSound, BASS_ATTRIB_TEMPO_PITCH, m_fPitch );
        BASS_ChannelSetAttribute ( m_pSound, BASS_ATTRIB_TEMPO_FREQ, m_fSampleRate );
        BASS_ChannelSetAttribute ( BASS_FX_TempoGetSource ( m_pSound ), BASS_ATTRIB_REVERSE_DIR, (float)(bReverse == false ? BASS_FX_RVS_FORWARD : BASS_FX_RVS_REVERSE) );
    }
}
Exemplo n.º 2
0
pascal OSStatus DirEventHandler(EventHandlerCallRef inHandlerRef, EventRef inEvent, void *inUserData)
{
	DWORD srcChan=BASS_FX_TempoGetSource(chan);
	float dir;
	BASS_ChannelGetAttribute(srcChan, BASS_ATTRIB_REVERSE_DIR, &dir);

	if(dir<0){
		BASS_ChannelSetAttribute(srcChan, BASS_ATTRIB_REVERSE_DIR, BASS_FX_RVS_FORWARD);
		SetControlText(16, "Playing Direction - Forward");
	}else{
		BASS_ChannelSetAttribute(srcChan, BASS_ATTRIB_REVERSE_DIR, BASS_FX_RVS_REVERSE);
		SetControlText(16,"Playing Direction - Reverse");
	}

	return noErr;
}