public SongChangeData(final SongDataEntry voices,
			@SuppressWarnings("hiding") final Main main) {
		this.main = main;
		this.date = stone.util.Time.date(voices.getLastModification()).split(
				" ");
		this.file = voices.getPath();
		Debug.print("%s\n", this.file);
		for (final Map.Entry<Integer, String> titleEntry : voices.voices()
				.entrySet()) {
			this.instruments
					.put(titleEntry.getKey(), new HashSet<Instrument>());

			String title = titleEntry.getValue();

			title = extractInstrument(titleEntry.getKey(), title);
			title = extractDuration(titleEntry.getKey(), title);
			title = extractIndices(titleEntry.getKey(), title);
			title = extractModification(title);
			title = title.trim();
			if (!title.isEmpty()) {
				if (title.startsWith("<")) {
					if (!title.endsWith(">")) {
						// resolving <title> instrument] on couple of Frie's
						// songs
						final int i = title.lastIndexOf(' ');
						final String tempTitle = title.substring(0, i);
						if (tempTitle.endsWith(">")) {
							final String tempTitleBefore = "["
									+ title.substring(i);
							final String tempTitleAfter = extractInstrument(
									titleEntry.getKey(), tempTitleBefore);
							if (tempTitleAfter != tempTitleBefore) {
								if (tempTitleAfter.isEmpty()) {
									title = tempTitle;
								} else {
									title = tempTitle + " " + tempTitleAfter;
								}
							}
						}
					}
					if (title.endsWith(">")) {
						title = title.substring(1, title.length() - 1);
					}
				}
				this.titles.put(titleEntry.getKey(), title);
			}
			final Integer key = titleEntry.getKey();
			Debug.print("Analyzation complete: %s\n" + "title:        %s\n"
					+ "duration:     %s\n" + "instrument:   %s\n"
					+ "indices:      %s\n\n", titleEntry.getValue(),
					this.titles.get(key), this.duration.get(key),
					this.instruments.get(key), this.indices.get(key));


		}
	}