Browse Source

Mixer: Allow Mono Pan module to be added a stereo chain. This converts the signal to mono and then pans the result. Useful for auditioning a mix in mono.

tags/non-daw-v1.3.0
Jonathan Moore Liles 3 years ago
parent
commit
7895b5ec7e
2 changed files with 30 additions and 6 deletions
  1. +29
    -5
      mixer/src/Mono_Pan_Module.C
  2. +1
    -1
      mixer/src/Mono_Pan_Module.H

+ 29
- 5
mixer/src/Mono_Pan_Module.C View File

@@ -66,8 +66,22 @@ Mono_Pan_Module::handle_sample_rate_change ( nframes_t n )
}

bool
Mono_Pan_Module::configure_inputs ( int )
Mono_Pan_Module::configure_inputs ( int n )
{
THREAD_ASSERT( UI );

int on = audio_input.size();

if ( n > on )
{
add_port( Port( this, Port::INPUT, Port::AUDIO ) );
}
else if ( n < on )
{
audio_input.back().disconnect();
audio_input.pop_back();
}
return true;
}

@@ -82,7 +96,10 @@ Mono_Pan_Module::process ( nframes_t nframes )
{
if ( unlikely( bypass() ) )
{
buffer_copy( (sample_t*)audio_output[1].buffer(), (sample_t*)audio_input[0].buffer(), nframes );
if ( audio_input.size() == 1 )
{
buffer_copy( (sample_t*)audio_output[1].buffer(), (sample_t*)audio_input[0].buffer(), nframes );
}
}
else
{
@@ -90,11 +107,18 @@ Mono_Pan_Module::process ( nframes_t nframes )

sample_t gainbuf[nframes];
bool use_gainbuf = smoothing.apply( gainbuf, nframes, gt );

if ( audio_input.size() == 2 )
{
/* convert stereo to mono */
buffer_mix( (sample_t*)audio_input[0].buffer(),
(sample_t*)audio_input[1].buffer(),
nframes );
}
if ( unlikely( use_gainbuf ) )
{
/* right channel */
/* right channel */
buffer_copy_and_apply_gain_buffer( (sample_t*)audio_output[1].buffer(),
(sample_t*)audio_input[0].buffer(),
gainbuf,


+ 1
- 1
mixer/src/Mono_Pan_Module.H View File

@@ -33,7 +33,7 @@ public:

const char *name ( void ) const { return "Mono Pan"; }

int can_support_inputs ( int n ) { return ( n == 1 ) ? 2 : -1; }
int can_support_inputs ( int n ) { return ( n == 1 || n == 2 ) ? 2 : -1; }
bool configure_inputs ( int n );

LOG_CREATE_FUNC( Mono_Pan_Module );


Loading…
Cancel
Save