private void writeSVLFile() {
		String outPath = PropertiesLoader.getInstance().getValue("outLabelFile");
		Charset charset = Charset.forName("US-ASCII");
		try (BufferedWriter writer =  Files.newBufferedWriter(Paths.get(outPath),charset)) {
			if (timeToPitch.size() > 0) {
				writeHeader(writer);
				
				Iterator<String> keys = timeToPitch.keySet().iterator();
				long _prevStandardpointFrame =  0;
				long _prevSamepointFrame =  0;
				String _prevNote = null;
				for(int i=0; i<timeToPitch.size(); i++) {
					String time = keys.next();
					String[] value = timeToPitch.get(time).split(",");
					
					if (value.length < 2) continue;//No note info, so nothing to label
					
					String label = value[1].split("\\|")[0];
					String westernLabel = value[1].split("\\|")[1];
					long pointFrame = Math.round(Double.parseDouble(time) * SAMPLING_RATE);
					
					if (label.equals(_prevNote)) {
						if (pointFrame < _prevSamepointFrame + SAME_SKIP_INTERVAL) continue;//Not required to print label for every point frame
						_prevSamepointFrame = pointFrame;
					} else {
						if (pointFrame < _prevStandardpointFrame + STANDARD_SKIP_INTERVAL) continue;//Not required to print label for every point frame
						_prevStandardpointFrame = pointFrame;
					}
					
					double height = heightList.get(i);
					writer.append("<point frame=\"");
					writer.append(String.valueOf(pointFrame));
					writer.append("\" height=\"");
					writer.append(String.valueOf(height));
					writer.append("\" label=\"");
					writer.append(label);
					if (showWesternNotes) {
						writer.append("|");
						writer.append(westernLabel);
					}
					writer.append("\" />\r\n");
					
					_prevNote = label;
					if(i%1000 == 0) {
						writer.flush();
					}
				}
				writer.flush();
			}
			writeFooter(writer);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}