NDA timing estimation for mutli-level QAM(RC pulse)
Consider using a Gardner Timing Error Detector which in the following form is usable for higher order QAM:

$$TED = I_n(I_{n+1}-I_{n-1}) + Q_n(Q_{n+1}-Q_{n-1})$$

Where $I_{n-1}$,$Q_{n-1}$,  $I_{n}$, $Q_{n}$ and $I_{n+1}$, $Q_{n+1}$ are the early, prompt and late QAM samples at 2 samples per symbol. The TED will drive the prompt sample to zero error at the zero crossings of the waveform.  

This is from deriving a timing error by taking the real of the complex conjugate multiplication of the signal y[n] with its derivative, a form which comes from simplifying the maximum likelihood timing estimator. The difference $y_{n+1}-y_{n-1}$ is an approximation of the derivative of y[n]:

$$real\bigl(y^*_n (y_{n+1}-y_{n-1})\bigr)$$

This error term would typically be the input into a loop filter in a timing recovery loop, and the output of the loop filter could select the appropriately timed output of a polyphase resampling structure such that the sampling rate is never actually changed (2 samples per symbol throughout).  

Assuming the RC pulse is root-raised cosine (RRC) in the transmitter, and then again in the receiver, the Gardner TED has higher performance using the samples prior to the RRC filter in the receiver: this makes sense as the TED derives the timing error or S-curve based on the symbol transitions- if you observe the zero-crossing jitter in an eye diagram of RRC pulses compared to RC pulses with the same pulse-shaping parameter, you will see that the RRC has less jitter. The second RRC filter adds more jitter at the benefit of eliminating the inter-symbol interference at the symbol sampling locations.  

That said, the waveform can be prefiltered prior to the timing error detection to minimize zero crossing jitter (this filtered waveform is used only for timing and is not the received waveform for data recovery due to ehanced ISI at the correct symbol decision locations) Here is an interesting paper on the use of such noise minimization pre-filters for QAM with the Gardner Ted:

Aldo Nunzio D’Andrea, Marco Luise, Optimization of Symbol Timing Recovery for QAM Data Demodulators, IEEE Trans on Communications, Vol 44 No 3 March 1996. 

https://ieeexplore.ieee.org/document/486334

Further, here is an interesting graph I created showing how robust the TED is without carrier/phase synchronization. This shows how the TED performs as an SNR metric with carrier offsets normalized to the symbol rate, showing only 3 dB degradation with carrier offsets as much as a quarter of the symbol rate. (The "Gain" is from the slope of the discriminator, while the noise is the pattern noise of the discriminator. For the following two graphs these were just consistent metrics to compare various timing discriminators such as here the Gardner TED versus the M&amp;M synchronizer.)



For comparison here is the same plot with the Mueller and Mueller (M&amp;M) synchronizer. Notice the $10^{-4}$ scaling on the horizontal axis! This is overlaid on the plot above with the red line showing the same TED curve, just zoomed in on the horizontal axis; What this shows is that the M&amp;M is much more sensitive to carrier offset (as expected since it operates on decisions) but has lower noise once the carrier is synchronized.



Here is a simplified plot showing how the Gardner TED estalishes a timing discriminator "S-curve" from the product of the signal with its derivative. This shows how the Gardner uses the zero crossing transitions to establish the discriminator curve (the actual curve is sinusoidal for raised cosine waveforms) and importantly how the lock point is at the zero crossings (blue samples) while the decision samples would be the other samples shown in red (with 2 samples per symbol). For higher order QAM the functional operation is the same with substantially higher pattern noise. (The timing loop BW would need to be reviewed to confirm the resulting discriminator noise is sufficiently averaged to not be an issue).