Example Code

Waterloo Labs Fireworks VI's

Products and Environment

This section reflects the products and operating system used to create the example.

To download NI software, including the products shown below, visit ni.com/downloads.


  • Data Acquisition (DAQ)


  • LabVIEW


  • NI DAQmx

Code and Documents



These are the VI's we used to both set off a firework with handclapping and to set off 24 fireworks synchronized to a song.



The goal of this project was to create a fireworks show  automatically synchronized to a song using beat detection analysis and simple,  low cost data acquisition hardware.A song is imported into  software for analysis; a Fourier Transform is then used to compare the power of  a selectable frequency band to the average power in that band to detect a beat.  When a beat is detected, a digital high is sent out through a USB-DAQ device.  This device is wired as the base of a Darlington Pair Transistor that will  switch on a high current power supply connected to the firework triggering  method.

A Fourier Transform is  taken of the song so the varying powers of the different frequencies can be  observed. A certain frequency band is then isolated (such as the bass of the  song to watch for kickdrum beats) and the power of that frequency band is  measured. A running average of the past X number of power measurements is  calculated and compared to the current power. If the current power of the band  rises above the running average this is defined as a beat.

A USB-DAQ device is  wired to the Base of a Darlington Pair Transistor. When a digital high signal is  sent from the DAQ device the transistor will switch, allowing a power supply to  flow through the igniter. The igniter is comprised of a low resistance, low  power resistor coated with pyrotechnic material. When the current from the power  supply flows through the igniter’s resistor it overheats and ignites the  pyrotechnic material, lighting the firework it is embedded in.






  • LabVIEW 2012 or compatible
  • NI-DAQmx 9.5.5 or compatible


  • USB  Data Acquisition Device (National Instruments USB-6009 with 12 DIO Ports)

  • TIP120 Darlington Pair Transistor

  • 24 Volt DC, 1 Amp Power Supply

  •  LabVIEW with Sound and Vibration  Toolkit

  • Electronic Match

  • C6-0 Estes Model Rocket Engine

  • Omni-directional Spark Charge

  • Kerosene Charge


Steps to Implement or Execute Code

  1. Configure the parameter and folder path.
  2. Connect your hardware as image above.
  3. Run the VI.


Additional Information or References




Check out the Video

 **This document has been updated to meet the current required format for the NI Code Exchange.**


Doug Farrell
Solutions Marketing - Automotive
National Instruments

National Instruments Automotive Solutions

Example code from the Example Code Exchange in the NI Community is licensed with the MIT license.

NI Employee

Very cool, guys!

Jeff | LabVIEW Software Engineer