Place the rice in a colander & rinse under cold water. Place the rinsed rice in a large bowl, cover with 4 cups water & let soak 30 minutes. Drain & reserve the water for cooking.
In a large pot, heat the butter over medium-high heat. Add the onion & cook, stirring, for 3 minutes. Add the garlic and ginger & cook, stirring, for 45 seconds. Add the cardamom, cinnamon stick, bay leaf, salt, coriander, pepper, turmeric, cumin & cayenne, and cook, stirring, until fragrant, about 45 seconds. Add the rice & cook, stirring, for 2 minutes. Add the reserved soaking liquid and raisins and bring to a boil. Reduce the heat to low, stir, cover & simmer until the water is absorbed and rice is tender, approx. 20 minutes. Remove for heat & let sit covered for 15 minutes.
Fluff the rice with a fork, remove the cinnamon sticks & bay leaf & combine with the remaining ingredients. Serve warm or at room temperature.
Serves 6-8