don't use analogRead

Really .. you have to get into the guts / shorten the track time / read time / setling time
keep it on / don't use a sleep mode
use a constant trigger ..I'm using the PWM,
read the data via the PDC
below was modeled after the Atmel Studio adc/PWM example
adc_init (ADC, VARIANT_MCK, adc_clk, ADC_STARTUP_FAST);
adc_configure_timing (ADC, 0, //uc_tracking,
(const enum adc_settling_time_t) ADC_MR_SETTLING_AST3, //settling,
(const uint8_t) 1); //uc_transfer
adc_enable_channel ((Adc *) ADC,
(const enum adc_channel_num_t) 0);
adc_disable_anch (ADC);
adc_configure_power_save (ADC, ADC_MR_SLEEP_NORMAL, ADC_MR_FWUP_OFF);
adc_configure_trigger (ADC, ADC_TRIG_PWM_EVENT_LINE_0, ADC_MR_FREERUN_OFF);