Old 11-11-2019, 02:12 PM   #1
Marie123
Human being with feelings
 
Join Date: Jun 2019
Posts: 3
Default Vocal Doubling - multple voices

Hi I created a vocal recording and I want to duplicate it so it sounds like two people singing. Right now f I duplicate it and put it on a new track it just sounds louder, not like two voices. Help! Thanks!!
Marie123 is offline   Reply With Quote
Old 11-11-2019, 03:06 PM   #2
DVDdoug
Human being with feelings
 
Join Date: Jul 2010
Location: Silicon Valley, CA
Posts: 2,779
Default

If you can actually get the singer back you can look for an "automatic double tracking" (ADT) effect or a chorus effect. ADT varies the time and phase to get a more realistic effect but it's still an "effect" and it's not the same as true double-tracking.


Quote:
Right now f I duplicate it and put it on a new track it just sounds louder, not like two voices.
Right! mixing is done by summation and you are simply doubling the amplitude of each sample.


If you invert a copy an mix, you'll be subtracting (adding a negative) and you'll get dead silence.


If you actually double-track have the singer sing twice and record twice, that won't happen, and if you invert they will mix normally without "subtracting".
DVDdoug is online now   Reply With Quote
Old 11-11-2019, 03:40 PM   #3
ivansc
Human being with feelings
 
Join Date: Aug 2007
Location: Near Cambridge UK and Near Questembert, France
Posts: 22,754
Default

Track the vocal again on another track. You will still sound like you twice, but as DVDoug says, you can tweak that using delay, phasing, even different pan & reverb settings.
__________________
Ici on parles Franglais
ivansc is offline   Reply With Quote
Old 11-11-2019, 03:51 PM   #4
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,687
Default

I just did a tool for exactly this, which might or might not be helpful for you.
I crafted a JSFX that provides a "humanizedly fluctuating" Midi CC (14 Bit).

I installed this thingy three times and one controls a ReaPitch for intonation fluctuation, one controls a ReaDelay for timing fluctuation, and the third controls a "8*Stereo to Stereo Mixer" for volume fluctuation.

If you are interested in it, I'll upload the "Midi CC fluctuation" JSFX to ReaPack.

Here is the FX Chain:

Code:
REQUIRED_CHANNELS 4
BYPASS 0 0
<JS "test/midi CC fluctuation" ""
  0.000000 16.000000 0.500000 0.000000 1.000000 0.100000 0.900000 0.100000 0.010000 0.001000 0.001000 0.000300 0.800000 0.000000 - - - - - 0.189382 -0.299967 -0.251032 0.148370 0.118696 9164.000000 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
>
JS_DIMS 1513 940
WAK 0
BYPASS 0 0
<JS "test/midi CC fluctuation" ""
  0.000000 17.000000 0.500000 0.000000 1.000000 0.100000 0.900000 0.323000 0.100000 0.001000 0.100000 0.000020 2.100000 0.000000 - - - - - 0.049014 0.514754 0.468180 0.003488 0.007326 8252.000000 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
>
JS_DIMS 1434 939
WAK 0
BYPASS 0 0
<JS "test/midi CC fluctuation" ""
  0.000000 18.000000 0.500000 0.000000 1.000000 0.100000 0.900000 0.316000 0.010000 0.001000 0.001000 0.001000 0.300000 0.000000 - - - - - 0.852157 0.456977 0.496495 0.214451 0.064335 8719.000000 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
>
JS_DIMS 1034 939
WAK 0
BYPASS 1 0
<VST "VST: ReaControlMIDI (Cockos)" reacontrolmidi.dll 0 "" 1919118692 ""
  ZG1jcu5e7f4AAAAAAAAAAPAAAAABAAAAAAAQAA==
  /////wAAAAAAAAAAAAAAABIAAAATAAAAAAAAAPggAAA5HgAAQAAAAAAAAAA/AAAAQzpcVXNlcnNcTWljaGFlbCBTY2huZWxsXEFwcERhdGFcUm9hbWluZ1xSRUFQRVJc
  RGF0YVxHTS5yZWFiYW5rAAAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAATWFqb3IADQAAADEw
  MjAzNDA1MDYwNwABAAAAAAAAAAABAAAAEwAAABQAAAAAAAAAAAAAAAAAAAAAAAAA
  AAAQAAAA
>
WAK 0
BYPASS 0 0
<JS "ReaTeam JSFX/Utility/mschnell_Dual Time adjustment.jsfx" ""
  -80.640000 -80.640000 -3556.000000 -3556.000000 0.000000 22.000000 0.000000 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
>
JS_DIMS 707 352
<JS_PINMAP
  6AMAABwAAADoAwAABAAAAAIAAAABAAAAAAAAAAIAAAAAAAAAHAAAAOgDAAAEAAAAAgAAAAQAAAAAAAAACAAAAAAAAAA=
>
WAK 0
BYPASS 0 0
<VST "VST: ReaPitch (Cockos)" reapitch.dll 0 "" 1919250531 ""
  Y3Blcu5e7f4CAAAABAAAAAAAAAAIAAAAAAAAAAIAAAAEAAAAAAAAAAgAAAAAAAAATAAAAAEAAAAAABAA
  AAAAAAAAAAABAAAALAAAAAIAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAD88Eg8/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAIA/AAAAPw==
  AAAQAAAA
>
<PROGRAMENV 4 0
  PARAMBASE 0.5
  LFO 0
  LFOWT 1 1
  AUDIOCTL 0
  AUDIOCTLWT 1 1
  PLINK 1 -100 -1 -0.5
  MIDIPLINK 0 0 176 144
  MODWND 0 112 204 460 481
>
WAK 0
BYPASS 0 0
<VST "VST: ReaDelay (Cockos)" readelay.dll 0 "" 1919247468 ""
  bGRlcu5e7f4CAAAABAAAAAAAAAAIAAAAAAAAAAIAAAAEAAAAAAAAAAgAAAAAAAAATAAAAAEAAAAAABAA
  AAAAAAAAAAABAAAALAAAAAIAAAAAAAAAAACAPwAAAAAAAAAAAACAPyDsCDwAAAAAAAAAAAAAgD8AAAAAAACAPwAAgD8AAIA/AAAAPw==
  AAAQAAAA
>
<PROGRAMENV 3 0
  PARAMBASE 0
  LFO 0
  LFOWT 1 1
  AUDIOCTL 0
  AUDIOCTLWT 1 1
  PLINK 0.1 -100 0 -0.42
  MIDIPLINK 0 0 176 145
  MODWND 0 29 104 377 381
>
WAK 0
BYPASS 0 0
<JS ix/Mixer_8xS-1xS ""
  0.000000 -2.300000 -60.000000 -60.000000 -60.000000 -60.000000 -60.000000 -60.000000 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
>
<PROGRAMENV 1 0
  PARAMBASE 0
  LFO 0
  LFOWT 1 1
  AUDIOCTL 0
  AUDIOCTLWT 1 1
  PLINK 0.33 -100 -1 -0.59
  MIDIPLINK 0 0 176 146
>
WAK 0

-Michael

Last edited by mschnell; 11-11-2019 at 11:52 PM.
mschnell is offline   Reply With Quote
Old 11-11-2019, 08:30 PM   #5
vdubreeze
Human being with feelings
 
vdubreeze's Avatar
 
Join Date: Jul 2011
Location: Brooklyn
Posts: 2,613
Default

Michael,

Please do upload it I've been searching for it in the stash and in your reapack but I guess it's not there (?) Would like to try the humanizedly fluctuating intonation and timing
__________________
The reason rain dances work is because they don't stop dancing until it rains.
vdubreeze is offline   Reply With Quote
Old 11-11-2019, 11:46 PM   #6
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,687
Default

As pushing it to the repository might take some days and I guess you are able to install it manually, here you are:
Code:
desc:MIDI  CC fluctuation
//tags: MIDI processing filter
//author: MSchnell


// these lines tell Reaper the effect has no audio input/output,
// which enables processing optimizations.
// MIDI-only FX should always have these lines.
in_pin:none
out_pin:none


slider1:  0<0,15,1{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}>Midi Channel 
slider2:  16<0,127,1{0 Bank Sel M,1 Mod Wheel M,2 Breath M,3,4 Foot P M,5 Porta M,6 Data Entry M,7 Vol M,8 Balance M,9,10 Pan M,11 Expression M,12 Ctrl 1 M,13 Ctrl 2 M,14,15,16 GP Slider 1,17 GP Slider 2,18 GP Slider 3,19 GP Slider 4,20,21,22,23,24,25,26,27,28,29,30,31}>CC
slider3:  0.5<0,1,0.01>Delta wide (^1)
slider4:  0<0,1,0.01>Delta mid (^3)
slider5:  1<0,1,0.01>Delta narrow (^5)
slider6:  0.1<0,0.1,0.01>Hold speed
slider7:  0.9<0,1,0.001>Hold mix 
slider8:  0.1<0,1,0.001>Speed (Roughness) 
slider9:  0.01<0,1,0.01>Result wide (^1)
slider10: 0.01<0,1,0.01>Result mid (^3)
slider11: 0.01<0,1,0.01>Result narrow (^5)
slider12: 0.0001<0,0.1,0.0001>maximum step
slider13: 1<0,10,0.1>gain
slider14: 0<-1,1,0.1>bias

slider20: 0<-1,1,0.01>Delta
slider21: 0<-1,1,0.01>Hold
slider22: 0<-1,1,0.01>Delta with Hold
slider23: 0<-1,1,0.01>Result raw
slider24: 0<-1,1,0.01>Result -1 ... 1
slider25: 0<0,16383,1>Result Midi (0 ... 16383)


@init
  CC_MSG      =  0xB0; // 11;  
  s  = 0;
  h  = 0;
  result= 0;
  msg31 = -1;
  msg32 = -1;
  offset = 0;
  _p = 0;
  _result = 0;
  _delta  = 2560;
  memset(_result, 8192, 2560);
  memset(_delta,  0,    2560);
  
@slider
  msg1  = CC_MSG + slider1;
  msg21 = slider2;
  msg22 = msg21 + 32;
  
  a1 = slider3;
  a3 = slider4;
  a5 = slider5;
  aa = a1 + a3 + a5;
  aa > 1 ? (
    a1 /= aa;
    a3 /= aa;
    a5 /= aa;
  );
  
  s_h  = slider6;
  v_h  = slider7;
  
  sp = slider8;
  sp = exp(sp*log(200)) / 200;
  
  s1 = slider9;
  s3 = slider10;
  s5 = slider11;
  ss = s1 + s3 + s5;
  ss > 1 ? (
    s1 /= ss;
    s3 /= ss;
    s5 /= ss;
  );
  s1 *= sp;
  
  ms   = slider12;
  gain = slider13;
  bias = slider14;
  
  


@block 
  r  = rand();
  v1 = r*2 - 1;
  v2 = v1*v1;
  v3 = v1*v2;
  v5 = v3*v2;
  va = a1*v1 +a3*v3 + a5*v5;
  slider20 = va;
  
/*
  va > h + hyst ? (
    h = va;
    va = -va;                 // avoid exeeding ly ar jump
   ) : (
    va < h - hyst ? (
      h = va;
      va = -va;               // avoid exeeding ly ar jump
    );  
  );
*/
  r = rand();
  r < s_h ? ( 
    h = va;
    va = -va;               // avoid exeeding ly ar jump    
  );
  
  slider21 = h;
  
  vh = (1-v_h)*va + v_h*h;
  slider22 = vh;
  _delta[_p] = vh;
  
  s += sp*vh;
  
  s < -1 ? s = -1;
  s >  1 ? s =  1;

  d1 = s;
  d2 = s*s;
  d3 = d2*s;
  d5 = d3*d2;
  s -= d1*s1;
  s -= d3*s3;
  s -= d5*s5;
  
  result < s-ms ? (
     result += ms;
    ) : result > s + ms ? (
      result -= ms;
   ) : ( 
    result = s;
  );  
  
  slider23 = result;

  result_1 = result * gain + bias;
  result_1 < -1 ? result_1 = -1;
  result_1 >  1 ? result_1 =  1;
  
  slider24 = result_1;
  
  
  
  _m = (result_1 + 1) / 2;  
  m  = (_m * 16384) | 0; 
  m  > 16383 ? m = 16383;
  slider25 = m;
  m1 = (m / 128) | 0;
  m2 = m - 128 * m1; 

  msg31 != m1 ? (
    msg31 = m1;
    midisend(offset, msg1, msg21, msg31);    
  );
  msg32 != m2 ? (
    msg32 = m2;
    midisend(offset, msg1, msg22, msg32);    
  );
  
  _p >= _w ? _p = 0 : _p += 1;
  _result[_p] = m;

@sample  

@gfx 640 400
  _w = gfx_w;  
  _w > 2560 ? _w = 2560;    // HDMI
  gfx_r=gfx_g=gfx_b=0; gfx_a=1;
  gfx_x=gfx_y=0;
  gfx_rectto(gfx_w, gfx_h);
  _a = 0;
  _min = 16384;
  _max = 0;
  _pp = 0;
  loop (_w,
    _y = _result[_pp];
    _a += _y;
    _min > _y ? _min = _y;
    _max < _y ? _max = _y;
    _pp += 1;
  );
  _a /= _w;
  _min = 8192 - _min;
  _max = _max - 8192;
  _max < _min ? _max = _min;
  _fact = gfx_h / _max / 2;
  _offs = gfx_h /2;
  _offs += 8192*_fact;


  _min_d = 1;
  _max_d = -1;
  _pp = 0;
  loop (_w,
    _y = _delta[_pp];
//    _a += _y;
    _min_d > _y ? _min_d = _y;
    _max_d > _y ? _max_d = _y;
    _pp += 1;
  );
//  _a /= _w;
  _min_d = - _min_d;
  _max_d < _min_d ? _max_d = _min_d;
  _fact_d = gfx_h / _max_d / 2;
  _offs_d = gfx_h /2;


  _y = gfx_h / 2;
  gfx_x = 0;
  gfx_y = _y;
  gfx_r=gfx_g=gfx_b=0.5; 
  gfx_lineto(_w-1, _y); 
 
  _y = _offs - _a * _fact;
  gfx_x = 0;
  gfx_y = _y;
  gfx_g = 0; 
  gfx_r = 1; 
  gfx_lineto(_w-1, _y); 
  
  
  gfx_b = 0.75; gfx_r=gfx_g=0; 
  _x = 0;
  gfx_x = 0;
  _pp = _p-1;
  _y = _offs - _delta[_pp] * _fact_d;
  gfx_y = _y;
  loop (_w-1,
    _x += 1;
    _pp += 1;
    _pp > _w ? _pp = 0;    
    _y = _offs_d - _delta[_pp] * _fact_d;
    gfx_lineto(_x, _y);
  );  
  
  gfx_b = 0; gfx_r=gfx_g=1; 
  _x = 0;
  gfx_x = 0;
  _pp = _p-1;
  _y = _offs - _result[_pp] * _fact;
  gfx_y = _y;
  loop (_w-1,
    _x += 1;
    _pp += 1;
    _pp > _w ? _pp = 0;    
    _y = _offs - _result[_pp] * _fact;
    gfx_lineto(_x, _y);
  );
...

Last edited by mschnell; 11-12-2019 at 12:09 AM.
mschnell is offline   Reply With Quote
Old 11-11-2019, 11:47 PM   #7
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,687
Default

.... and a preliminary description:



desc:
author: Michael Schnell (mschnell@bschnell.de)
version: 1.0
changelog: initial release
donation: United Nations Foundation http://www.unfoundation.org/
about:
## Description
MIDI CC fluctuation generates a randomly fluctuating 14 bit (high resolution) CC Midi data stream.

The fluctuation is generated by randomly increasing / decreasing the current CC value. The way this is done, can be "humanized" by several parameters.

"Midi Channel" selects the midi channel to output the CC messages

"CC" selects th CC number. As High resolution CC is used only CC#s 0..31 are selectable.

"Delta wide (^1)" controls the amount linear value of the random delta increasing / decreasing the output

"Delta mid (^3)" controls the amount a value of a delta value that covers less of the extreme ends

"Delta narrow (^5)" controls the amount a value of a delta value that covers even less of the extreme ends

"Hold speed" for humanizing a directivity of the fluctuation is implemented. This parameter defines how of then the direction and migrating speed is supposed to change

"Hold mix" defines the intensity of the directivity vs a purely random walk.

"Speed (Roughness)" defines the factor of the random value that is added to the current output value.

"Result wide (^1)" defines the force to pull back the output to the center in a linear (proportional to the displacement) way.

"Result mid (^3)" defines the force to pull back the output to the center in a way increasing with the displacement

"Result narrow (^5)" defines the force to pull back the output to the center in a way increasing with the displacement even more.

"maximum step" defines the step size (per audio block) to the raw output is allowed to fluctuate

"gain" and "bias": values to multiply the output with and to add to the output.

The other sliders show the generate signal in realtime:

"Delta": the current raw random delta value

"Hold": the current hold value

"Delta with Hold": value to be added to the raw result

"Result raw": Result before applying gain and bias

"Result -1 ... 1": Normalized output value

"Result Midi (0 ... 16383)": High resolution Midi CC output value

A graphics shows the history of the "Delta with Hold" value in blue and the history of the output value in yellow.




-Michael
mschnell is offline   Reply With Quote
Old 11-12-2019, 06:17 AM   #8
vdubreeze
Human being with feelings
 
vdubreeze's Avatar
 
Join Date: Jul 2011
Location: Brooklyn
Posts: 2,613
Default

Thank you!
__________________
The reason rain dances work is because they don't stop dancing until it rains.
vdubreeze is offline   Reply With Quote
Old 11-12-2019, 01:53 PM   #9
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,687
Default

I just uploaded an improved version to ReaPack (including an improved description).

-Michael
mschnell is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -7. The time now is 03:08 PM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.