Detune/Unison
-
It would be nice to have a good Detune/Unison for up to 8-voices
-
You mean playing multiple voices with the same note but different microtuning and panning?
-
Yes...Ideally it would have
- Unison - # of Voices
- Detune - Detune amount
- Spread
Like Serum
-
Here is the code from Kontakt. Maybe it can be adapted:
on init
set_script_title("Unison X") set_ui_height(2) message("") declare polyphonic $pan_L declare polyphonic $pan_R declare $voice_1 declare $voice_2 declare $voice_3 declare $voice_4 declare $voice_5 declare $voice_6 declare $voice_7 declare $voice_8 declare $voice_mod declare ui_knob $Detune (0,50000,100000) declare ui_knob $Spread (0,1000,10) declare ui_knob $Voices (1,8,1) $Voices := 2 $Detune := 35000 $Spread := 650 move_control($Voices,2,2) move_control($Detune,3,2) move_control($Spread,4,2) make_persistent ($Voices) make_persistent ($Detune) make_persistent ($Spread) set_control_help ($Voices,"Voices: Sets the number of voices played for each MIDI note.") set_control_help ($Detune,"Detune: Sets the amount of detuning among the voices.") set_control_help ($Spread,"Spread: Sets the amount of stereo spread among the voices")
end on
on note
{Voice 1} ignore_event ($EVENT_ID) $voice_1 := play_note($EVENT_NOTE,$EVENT_VELOCITY,0,-1) {Voice 2} if ($Voices > 1) {Voice 1 treatment} change_pan($voice_1,$Spread,0) change_vol($voice_1,-500*$Voices,1) {Voice 2} $voice_2 := play_note($EVENT_NOTE,$EVENT_VELOCITY,0,-1) change_tune($voice_2,$Detune ,0) change_pan($voice_2,-$Spread,0) change_vol($voice_2,-500*$Voices,1) end if {Voice 3} if ($Voices > 2) $voice_3 := play_note($EVENT_NOTE,$EVENT_VELOCITY,0,-1) change_tune($voice_3,-$Detune /8 * 4,0) change_vol($voice_3,-500*$Voices,1) if ($Voices = 3) else change_pan($voice_3,$Spread,0) end if end if {Voice 4} if ($Voices > 3) $voice_4 := play_note($EVENT_NOTE,$EVENT_VELOCITY,0,-1) change_tune($voice_4,$Detune /8 * 4,0) change_pan($voice_4,-$Spread,0) change_vol($voice_4,-500*$Voices,1) end if {Voice 5} if ($Voices > 4) $voice_5 := play_note($EVENT_NOTE,$EVENT_VELOCITY,0,-1) change_tune($voice_5,-$Detune /8 * 6,0) change_vol($voice_5,-500*$Voices,0) if ($Voices = 5) else change_pan($voice_5,$Spread,1) end if end if {Voice 6} if ($Voices > 5) $voice_6 := play_note($EVENT_NOTE,$EVENT_VELOCITY,0,-1) change_tune($voice_6,$Detune /8 * 6,0) change_pan($voice_6,-$Spread,0) change_vol($voice_6,-500*$Voices,1) end if {Voice 7} if ($Voices > 6) $voice_7 := play_note($EVENT_NOTE,$EVENT_VELOCITY,0,-1) change_tune($voice_7,-$Detune /8 * 2,0) change_vol($voice_7,-500*$Voices,1) if ($Voices = 7) else change_pan($voice_7,$Spread,0) end if end if {Voice 8} if ($Voices > 7) $voice_8 := play_note($EVENT_NOTE,$EVENT_VELOCITY,0,-1) change_tune($voice_8,$Detune /8 * 2,0) change_pan($voice_8,-$Spread,0) change_vol($voice_8,-500*$Voices,1) end if
end on
-
Do you need the unisono for polyphonic sounds or just monophonic (If I decipher the KONTAKT script correctly, it just stores monophonic data)? Also should it work in conjunction with a glide script (this would make event handling a bit more trickier).
-
Yea it should be for Polyphonic instruments and work with Glide....
-
FYI, I've just pushed a change that allows unisono voices (until now voices with the same notenumber were killed).
Just call
Synth.setShouldKillRetriggeredNotes(false)
on the synth you want to enable unisono.