---
title: "FFEffectStart(_:_:_:)"
framework: Force Feedback
role: symbol
role_heading: Function
platforms: [Mac Catalyst 13.0+, macOS 10.2+]
path: "forcefeedback/ffeffectstart(_:_:_:)"
---

# FFEffectStart(_:_:_:)

Begins playing an effect. If the effect is already playing, it is restarted from the beginning. If the effect has not been downloaded or has been modified since its last download, it is downloaded before being started. This default behavior can be suppressed by passing the FFES_NODOWNLOAD flag.

## Declaration

```swift
func FFEffectStart(_ effectReference: FFEffectObjectReference!, _ iterations: UInt32, _ flags: FFEffectStartFlag) -> HRESULT
```

## Parameters

- `effectReference`: An opaque reference handle to an effect object. This is obtained from a previous call to FFDeviceCreateEffect.
- `iterations`: Number of times to play the effect in sequence. The envelope is re-articulated with each iteration. To play the effect exactly once, pass 1. To play the effect repeatedly until explicitly stopped, pass INFINITE. To play the effect until explicitly stopped without re-articulating the envelope, modify the effect parameters with the FFEffect_SetParameters method, and change the dwDuration member to INFINITE.
- `flags`: Flags that describe how the effect should be played by the device. The value can be 0 or one or more of the following values: FFES_SOLO All other effects on the device should be stopped before the specified effect is played. If this flag is omitted, the effect is mixed with existing effects already started on the device. FFES_NODOWNLOAD Do not automatically download the effect.

## Return Value

Return Value If the method succeeds, the return value is FF_OK. If the method fails, the return value can be one of the following error values:

## Discussion

Discussion FFERR_INVALIDPARAM FFERR_DEVICEPAUSED FFERR_DEVICEFULL FFERR_INVALIDDOWNLOADID FFERR_INTERNAL FFERR_EFFECTTYPEMISMATCH FFERR_GENERIC Discussion Not all devices support multiple iterations.

## See Also

### Miscellaneous

- [FFCreateDevice(_:_:)](forcefeedback/ffcreatedevice(_:_:).md)
- [FFDeviceCreateEffect(_:_:_:_:)](forcefeedback/ffdevicecreateeffect(_:_:_:_:).md)
- [FFDeviceEscape(_:_:)](forcefeedback/ffdeviceescape(_:_:).md)
- [FFDeviceGetForceFeedbackCapabilities(_:_:)](forcefeedback/ffdevicegetforcefeedbackcapabilities(_:_:).md)
- [FFDeviceGetForceFeedbackProperty(_:_:_:_:)](forcefeedback/ffdevicegetforcefeedbackproperty(_:_:_:_:).md)
- [FFDeviceGetForceFeedbackState(_:_:)](forcefeedback/ffdevicegetforcefeedbackstate(_:_:).md)
- [FFDeviceReleaseEffect(_:_:)](forcefeedback/ffdevicereleaseeffect(_:_:).md)
- [FFDeviceSendForceFeedbackCommand(_:_:)](forcefeedback/ffdevicesendforcefeedbackcommand(_:_:).md)
- [FFDeviceSetCooperativeLevel(_:_:_:)](forcefeedback/ffdevicesetcooperativelevel(_:_:_:).md)
- [FFDeviceSetForceFeedbackProperty(_:_:_:)](forcefeedback/ffdevicesetforcefeedbackproperty(_:_:_:).md)
- [FFEffectDownload(_:)](forcefeedback/ffeffectdownload(_:).md)
- [FFEffectEscape(_:_:)](forcefeedback/ffeffectescape(_:_:).md)
- [FFEffectGetEffectStatus(_:_:)](forcefeedback/ffeffectgeteffectstatus(_:_:).md)
- [FFEffectGetParameters(_:_:_:)](forcefeedback/ffeffectgetparameters(_:_:_:).md)
- [FFEffectSetParameters(_:_:_:)](forcefeedback/ffeffectsetparameters(_:_:_:).md)
