public void startRender() throws Exception {
   stopRender();
   Flame selFlame =
       flamesCmb.getSelectedIndex() >= 0
               && flamesCmb.getSelectedIndex() < project.getFlames().size()
           ? project.getFlames().get(flamesCmb.getSelectedIndex())
           : null;
   renderThread = new RealtimeAnimRenderThread(this, project);
   renderThread.getFlameStack().addFlame(selFlame, 0, project.getMotions(selFlame));
   actionRecorder = new ActionRecorder(renderThread);
   renderThread.setFFTData(project.getFFT());
   renderThread.setMusicPlayer(jLayer);
   renderThread.setFFTPanel(getGraph1Panel());
   renderThread.setFramesPerSecond(Integer.parseInt(framesPerSecondIEd.getText()));
   renderThread.setDrawTriangles(drawTrianglesCbx.isSelected());
   renderThread.setDrawFFT(drawFFTCbx.isSelected());
   renderThread.setDrawFPS(drawFPSCbx.isSelected());
   actionRecorder.recordStart(selFlame);
   new Thread(renderThread).start();
 }
 public void drawFFTCBx_changed() {
   if (renderThread != null) {
     renderThread.setDrawFFT(drawFFTCbx.isSelected());
   }
 }