Once the relevant stepper targets variables have been established, Accelstepper will run the stepper at the defined acceleration level until it reaches the ‘set’ maxSpeed and hold that 'speed' there until it calculates when to start deceleration to reach the target at zero speed.
If you increase the setMaxSpeed() to a higher, unattainable level, the stepper will then accelerate up to the 'target' halfway point and then immediately decelerate smoothly down to zero speed on reaching the target. It should be possible to then control the period of the sinusoidal movement by varying the ‘setAcceleration()’ variable. This would most likely need to be done prior to the move starting.
Of course, if the MCU and driver have the capacity, it is possible to increase the acceleration so that the maxSpeed is obtained. You will have to judge the max acceleration you can use before you hit the maxSpeed setting which you are trying to avoid.
Cheers
Geoff