From 5a6ca8046c6e0f4751182a15a476dfa32661dc59 Mon Sep 17 00:00:00 2001 From: Rik Veenboer Date: Sun, 3 Jul 2016 12:28:35 +0100 Subject: [PATCH 1/8] Move files in anticipation of move to modular system --- .gitignore | 3 + build.gradle | 10 + src/main/java/old/Converter.java | 187 +++ src/main/java/old/List.java | 201 +++ src/main/java/old/Mp3.java | 80 + src/main/java/old/Transducer.java | 16 + src/main/java/pipe/Client.java | 24 + src/main/java/pipe/Pipe.java | 54 + src/main/java/pipe/TestPipe.java | 87 ++ src/main/java/sound/Consumer.java | 7 + src/main/java/sound/Format.java | 13 + src/main/java/sound/Producer.java | 10 + src/main/java/sound/Source.java | 161 ++ src/main/java/sound/consumer/Port.java | 121 ++ src/main/java/sound/consumer/Shoutcast.java | 296 ++++ src/main/java/sound/data/Data.java | 23 + src/main/java/sound/producer/Stream.java | 200 +++ src/main/java/sound/producer/Target.java | 97 ++ .../java/sound/stream/HoardedInputStream.java | 76 + src/main/java/sound/util/Buffer.java | 41 + src/main/java/sound/util/SoxBuilder.java | 321 ++++ src/main/java/sound/util/Tool.java | 140 ++ src/main/java/sound/util/Utils.java | 39 + src/main/java/test/SoundAudit.java | 55 + src/main/java/test/Test.java | 40 + src/main/java/test/lines/Main.java | 34 + src/main/java/test/lines/SourceLine.java | 19 + src/main/java/test/lines/TargetLine.java | 19 + src/main/resources/txt/keuze.txt | 13 + src/main/resources/txt/mp3 | 1357 +++++++++++++++++ src/main/resources/txt/options | 182 +++ src/main/resources/txt/short | 1 + src/main/resources/txt/testfiles.txt | 12 + 33 files changed, 3939 insertions(+) create mode 100644 .gitignore create mode 100644 build.gradle create mode 100644 src/main/java/old/Converter.java create mode 100644 src/main/java/old/List.java create mode 100644 src/main/java/old/Mp3.java create mode 100644 src/main/java/old/Transducer.java create mode 100644 src/main/java/pipe/Client.java create mode 100644 src/main/java/pipe/Pipe.java create mode 100644 src/main/java/pipe/TestPipe.java create mode 100644 src/main/java/sound/Consumer.java create mode 100644 src/main/java/sound/Format.java create mode 100644 src/main/java/sound/Producer.java create mode 100644 src/main/java/sound/Source.java create mode 100644 src/main/java/sound/consumer/Port.java create mode 100644 src/main/java/sound/consumer/Shoutcast.java create mode 100644 src/main/java/sound/data/Data.java create mode 100644 src/main/java/sound/producer/Stream.java create mode 100644 src/main/java/sound/producer/Target.java create mode 100644 src/main/java/sound/stream/HoardedInputStream.java create mode 100644 src/main/java/sound/util/Buffer.java create mode 100644 src/main/java/sound/util/SoxBuilder.java create mode 100644 src/main/java/sound/util/Tool.java create mode 100644 src/main/java/sound/util/Utils.java create mode 100644 src/main/java/test/SoundAudit.java create mode 100644 src/main/java/test/Test.java create mode 100644 src/main/java/test/lines/Main.java create mode 100644 src/main/java/test/lines/SourceLine.java create mode 100644 src/main/java/test/lines/TargetLine.java create mode 100644 src/main/resources/txt/keuze.txt create mode 100644 src/main/resources/txt/mp3 create mode 100644 src/main/resources/txt/options create mode 100644 src/main/resources/txt/short create mode 100644 src/main/resources/txt/testfiles.txt diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a4bf388 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +/bin +/.settings +/sound diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..8536a8e --- /dev/null +++ b/build.gradle @@ -0,0 +1,10 @@ +dependencies { + compile 'commons-io:commons-io:2.+' + compile 'commons-cli:commons-cli:1.+' + compile 'commons-pool:commons-pool:1.+' + compile 'org.slf4j:slf4j-api:1.+' + compile 'org.slf4j:slf4j-log4j12:1.7.5' + compile 'org.ostermiller:utils:1.+' + compile 'com.googlecode.soundlibs:jlayer:1.+' + compile 'net.sf.javamusictag:jid3lib:0.+' +} \ No newline at end of file diff --git a/src/main/java/old/Converter.java b/src/main/java/old/Converter.java new file mode 100644 index 0000000..f1548a0 --- /dev/null +++ b/src/main/java/old/Converter.java @@ -0,0 +1,187 @@ +package old; + +import java.io.BufferedInputStream; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; + +import javazoom.jl.decoder.Bitstream; +import javazoom.jl.decoder.BitstreamException; +import sound.util.Utils; +import base.exception.worker.ActivateException; +import base.exception.worker.DeactivateException; +import base.work.Work; + +import com.Ostermiller.util.CircularByteBuffer; + +public class Converter extends Work { + public static final String COMMAND = "lame --mp3input --cbr %s - - --quiet"; + public static final int BYTES = 4096; // bytes + public static final int BUFFER = 30000; // milliseconds + public static final int BUFFERING = 1000; // milliseconds + + protected int targetRate; + protected int rate; + protected int buffer; + protected boolean convert; + + protected Process process; + protected InputStream sourceInputStream, processInputStream, inputStream; + protected OutputStream processOutputStream; + protected CircularByteBuffer circularByteBuffer; + protected BufferWorker bufferWorker; + + public Converter(InputStream inputStream) { + this(inputStream, -1); + } + + public Converter(InputStream inputStream, int targetRate) { + super(); + this.sourceInputStream = inputStream; + this.targetRate = targetRate; + bufferWorker = new BufferWorker(); + convert = false; + } + + public void exit() { + super.exit(); + bufferWorker.exit(); + } + + public synchronized void activate() throws ActivateException { + /* Read bitrate */ + BufferedInputStream bufferedInputStream = new BufferedInputStream(sourceInputStream); + Bitstream bitStream = new Bitstream(bufferedInputStream); + try { + rate = bitStream.readFrame().bitrate() / 1000; + buffer = BUFFER * rate / 8; + } catch (BitstreamException e) { + logger.error("", e); + throw new ActivateException(); + } + + /* Check for need to convert */ + if (targetRate < 0 || rate == targetRate) { + logger.debug("No conversion required"); + inputStream = sourceInputStream; + } else { + logger.debug("Converting from " + rate + "kbps to " + targetRate + "kbps"); + try { + String command = String.format(COMMAND, rate > targetRate ? "-B " + targetRate : "-F -b " + targetRate); + logger.debug("Starting process: " + command); + process = Runtime.getRuntime().exec(command); + processInputStream = process.getInputStream(); + processOutputStream = process.getOutputStream(); + + /* Buffer output */ + circularByteBuffer = new CircularByteBuffer(CircularByteBuffer.INFINITE_SIZE); + inputStream = circularByteBuffer.getInputStream(); + bufferWorker.start(); + convert = true; + } catch (IOException e) { + logger.error("", e); + throw new ActivateException(); + } + } + super.activate(); + notifyAll(); + } + + public void deactivate() throws DeactivateException { + super.deactivate(); + try { + sourceInputStream.close(); + bufferWorker.stop(); + if (convert) { + circularByteBuffer.clear(); + convert = false; + } + inputStream.close(); + } catch (IOException e) { + logger.error("", e); + throw new DeactivateException(); + } + } + + public void work() { + if (!convert) { + try { + synchronized (this) { + wait(); + } + } catch (InterruptedException e) { + logger.error("", e); + } + return; + } + byte[] bytes = new byte[BYTES]; + int read = 0; + try { + logger.debug("Writing input to process"); + // Should be interrupted by stop()/exit() + while ((read = sourceInputStream.read(bytes)) > 0) { + /* Limit buffer size */ + while (inputStream.available() > buffer) { + int progress = (int) ((1 - (inputStream.available() - buffer) / (float) buffer) * 100); + logger.trace("Waiting for buffer to empty: " + progress + "%"); + sleep(BUFFERING); + } + processOutputStream.write(bytes, 0, read); + } + processOutputStream.close(); + logger.debug("Stopped writing input to process"); + process.waitFor(); + logger.debug("Process finished"); + } catch (IOException e) { + } catch (InterruptedException e) { + logger.error("", e); + } + stop(); + } + + public synchronized InputStream getInputStream() { + if (!active()) { + start(); + try { + wait(); + } catch (InterruptedException e) { + logger.error("", e); + } + } + return inputStream; + } + + public synchronized void setInputStream(InputStream inputStream) { + this.inputStream = inputStream; + } + + class BufferWorker extends Work { + public void work() { + byte[] bytes = new byte[BYTES]; + int read = 0; + try { + OutputStream bufferOutputStream = circularByteBuffer.getOutputStream(); + logger.debug("Start buffering process output"); + while ((read = processInputStream.read(bytes, 0, BYTES)) > 0) { + bufferOutputStream.write(bytes, 0, read); + } + logger.debug("Finished buffering process output"); + bufferOutputStream.close(); + } catch (IOException e) {} + stop(); + } + } + + public static void main(String[] args) { + Mp3 mp3 = new Mp3(new File("stream.mp3"), 128); + InputStream inputStream = mp3.getInputStream(); + + /* Play */ + //Utils.play(inputStream); + + /* Write to file */ + Utils.write(inputStream, new File("output.mp3")); + mp3.exit(); + } +} diff --git a/src/main/java/old/List.java b/src/main/java/old/List.java new file mode 100644 index 0000000..d026fb9 --- /dev/null +++ b/src/main/java/old/List.java @@ -0,0 +1,201 @@ +package old; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.util.ArrayList; +import java.util.Scanner; + +import sound.consumer.Shoutcast; +import base.exception.worker.ActivateException; +import base.work.Work; + +import com.Ostermiller.util.BufferOverflowException; +import com.Ostermiller.util.CircularByteBuffer; +import com.Ostermiller.util.CircularObjectBuffer; + +public class List extends Work { + public static final int STEP = 80; // milliseconds + public static final int RATE = 192; // kbps + public static final int OVERLAP = 20000; // milliseconds + + protected File file; + protected String[] fileArray; + + protected int rate; + protected int chunk; + protected int overlap; + protected byte[] bytes; + protected boolean next; + protected Mp3 mp3, nextMp3; + + protected InputStream mp3InputStream; + protected OutputStream audioOutputStream; + protected CircularByteBuffer circularByteBuffer; + protected CircularObjectBuffer circularStringBuffer; + + public List(File file) { + this(file, RATE); + } + + public List(File file, int rate) { + this.file = file; + this.rate = rate; + chunk = STEP * rate / 8; + overlap = OVERLAP * RATE / 8; + bytes = new byte[chunk]; + next = true; + } + + public void exit() { + super.exit(); + if (mp3 != null) { + mp3.exit(); + } + if (nextMp3 != null) { + nextMp3.exit(); + } + } + + public synchronized void activate() throws ActivateException { + try { + Scanner scanner = new Scanner(file); + ArrayList fileList = new ArrayList(); + while (scanner.hasNextLine()) { + fileList.add(scanner.nextLine()); + } + scanner.close(); + if (fileList.size() > 0) { + fileArray = fileList.toArray(new String[0]); + + circularByteBuffer = new CircularByteBuffer(CircularByteBuffer.INFINITE_SIZE); + audioOutputStream = circularByteBuffer.getOutputStream(); + + circularStringBuffer = new CircularObjectBuffer(CircularByteBuffer.INFINITE_SIZE); + setNext(); + super.activate(); + notifyAll(); + return; + } + } catch (FileNotFoundException e) { + logger.error("", e); + } + throw new ActivateException(); + } + + public synchronized void work() { + try { + int left = chunk; + while (left > 0) { + /* Check for need to load next mp3 */ + int available = mp3InputStream == null ? -1 : mp3InputStream.available(); + boolean expect = mp3 == null ? false : mp3.active(); + + /* Act when no more data is expected */ + if (!expect) { + if (available < overlap) { + setNext(); + next = false; + nextMp3.start(); + } + if (available < 1) { + swap(); + } + } + + /* Transfer data */ + int read = mp3InputStream.read(bytes, 0, left); + left -= read; + audioOutputStream.write(bytes, 0, read); + } + } catch (IOException e) { + /* Swap to next if stream has stopped */ + setNext(); + swap(); + } catch (IllegalStateException e) { + logger.error("", e); + } + sleep(STEP); + } + + protected File getRandomFile() { + return new File(fileArray[(int) (Math.random() * fileArray.length)]); + } + + public synchronized void setNext() { + if (nextMp3 == null) { + logger.debug("Initialize next mp3"); + nextMp3 = new Mp3(getRandomFile(), rate); + } else if (next) { + logger.debug("Load next mp3"); + nextMp3.setFile(getRandomFile()); + } + } + + public synchronized void next() { + logger.debug("Stop current mp3"); + mp3.stop(); + } + + public void swap() { + logger.debug("Swap to next mp3"); + Mp3 swapMp3 = mp3; + mp3 = nextMp3; + nextMp3 = swapMp3; + next = true; + + /* Swap stream and announce title */ + mp3InputStream = mp3.getInputStream(); + try { + circularStringBuffer.write(mp3.getTitle()); + } catch (BufferOverflowException e) { + logger.error("", e); + } catch (IllegalStateException e) { + logger.error("", e); + } catch (InterruptedException e) { + logger.error("", e); + } + } + + public synchronized InputStream getInputStream() { + if (circularByteBuffer == null) { + start(); + try { + wait(); + } catch (InterruptedException e) { + logger.error("", e); + } + } + return circularByteBuffer.getInputStream(); + } + + public synchronized CircularObjectBuffer getMetaBuffer() { + if (circularStringBuffer == null) { + start(); + try { + wait(); + } catch (InterruptedException e) { + logger.error("", e); + } + } + return circularStringBuffer; + } + + public static void main(String[] args) throws Exception { + int rate = 192; + List list = new List(new File(List.class.getClassLoader().getResource("txt/mp3").toURI()), rate); + Shoutcast shoutcast = new Shoutcast(rate, 9876); + + shoutcast.setInputStream(list.getInputStream()); + shoutcast.setMetaBuffer(list.getMetaBuffer()); + shoutcast.start(); + while (true) { + try { + Thread.sleep(15000); + list.next(); + } catch (InterruptedException e) {} + } + } +} diff --git a/src/main/java/old/Mp3.java b/src/main/java/old/Mp3.java new file mode 100644 index 0000000..445d4d4 --- /dev/null +++ b/src/main/java/old/Mp3.java @@ -0,0 +1,80 @@ +package old; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; + +import org.farng.mp3.MP3File; +import org.farng.mp3.TagException; + +import sound.util.Utils; +import base.exception.worker.ActivateException; + +public class Mp3 extends Converter { + protected File file; + protected String title; + + public Mp3(File file) { + this(file, -1); + } + + public Mp3(File file, int targetRate) { + super(null, targetRate); + setFile(file); + title = ""; + } + + public synchronized void activate() throws ActivateException { + /* Open file */ + try { + sourceInputStream = new FileInputStream(file); + } catch (FileNotFoundException e) { + logger.error("", e); + throw new ActivateException(); + } + + /* Read ID3V2 tags */ + try { + MP3File mp3File = new MP3File(file); + String album = clean(mp3File.getID3v2Tag().getAlbumTitle()); + String artist = clean(mp3File.getID3v2Tag().getLeadArtist()); + String track = clean(mp3File.getID3v2Tag().getSongTitle()); + if (album.isEmpty()) { + title = String.format("%s - %s", artist, track, album); + } else { + title = String.format("%s - %s {%s}", artist, track, album); + } + logger.debug("Title: " + title); + } catch (IOException e) { + logger.error("", e); + } catch (TagException e) { + logger.error("", e); + } + try { + sourceInputStream.skip(100000); + } catch (IOException e) {} + super.activate(); + } + + protected String clean(String input) { + String output = input.replace("\0", ""); + return output.replace("ÿþ", ""); + } + + public String getTitle() { + return title; + } + + public void setFile(File file) { + this.file = file; + } + + public static void main(String[] args) { + final Mp3 mp3 = new Mp3(new File("input.mp3"), 128); + Utils.write(mp3.getInputStream(), new File("one.mp3")); + mp3.setFile(new File("stream.mp3")); + Utils.write(mp3.getInputStream(), new File("two.mp3")); + mp3.exit(); + } +} diff --git a/src/main/java/old/Transducer.java b/src/main/java/old/Transducer.java new file mode 100644 index 0000000..c7618a8 --- /dev/null +++ b/src/main/java/old/Transducer.java @@ -0,0 +1,16 @@ +package old; + +import sound.Consumer; +import sound.Producer; + +public abstract class Transducer implements Consumer, Producer { + public int rate; + + public Transducer(Producer producer) { + //setProducer(producer); + } + + public int getRate() { + return rate; + } +} diff --git a/src/main/java/pipe/Client.java b/src/main/java/pipe/Client.java new file mode 100644 index 0000000..1ef5c26 --- /dev/null +++ b/src/main/java/pipe/Client.java @@ -0,0 +1,24 @@ +package pipe; + +import java.io.RandomAccessFile; + +public class Client { + public static void main(String[] args) { + try { + // Connect to the pipe + RandomAccessFile pipe = new RandomAccessFile("\\\\.\\pipe\\detest", "rw"); + String echoText = "Hello word\n"; + + // write to pipe + pipe.write(echoText.getBytes()); + + // read response + String echoResponse = pipe.readLine(); + System.out.println(echoResponse); + pipe.close(); + } catch (Exception e) { + e.printStackTrace(); + } + + } +} diff --git a/src/main/java/pipe/Pipe.java b/src/main/java/pipe/Pipe.java new file mode 100644 index 0000000..3bb3805 --- /dev/null +++ b/src/main/java/pipe/Pipe.java @@ -0,0 +1,54 @@ +package pipe; + +/** + * @author Vikram S Khatri vikram.khatri@us.ibm.com + */ +public class Pipe { + static final int ERROR_PIPE_CONNECTED = 535; + static final int ERROR_BROKEN_PIPE = 109; + static final int PIPE_ACCESS_DUPLEX = 0x00000003; + static final int PIPE_WAIT = 0x00000000; + + static { + System.loadLibrary("pipe"); + } + + public static final native int CreateNamedPipe( + String pipeName, + int ppenMode, + int pipeMode, + int maxInstances, + int outBufferSize, + int inBufferSize, + int defaultTimeOut, + int securityAttributes); + + public static final native boolean ConnectNamedPipe(int namedPipeHandle, int overlapped); + + public static final native int GetLastError(); + + public static final native boolean CloseHandle(int bbject); + + public static final native byte[] ReadFile(int file, int numberOfBytesToRead); + + public static final native int WriteFile(int file, byte[] buffer, int numberOfBytesToWrite); + + public static final native boolean FlushFileBuffers(int file); + + public static final native boolean DisconnectNamedPipe(int namedPipeHandle); + + public static final native int CreateFile( + String fileName, + int desiredAccess, + int shareMode, + int securityAttributes, + int creationDisposition, + int flagsAndAttributes, + int templateFile); + + public static final native boolean WaitNamedPipe(String namedPipeName, int timeOut); + + public static final native String FormatMessage(int errorCode); + + public static final native void Print(String message); +} diff --git a/src/main/java/pipe/TestPipe.java b/src/main/java/pipe/TestPipe.java new file mode 100644 index 0000000..9d1ec66 --- /dev/null +++ b/src/main/java/pipe/TestPipe.java @@ -0,0 +1,87 @@ +package pipe; + +import java.io.File; +import java.io.FileInputStream; +import java.io.InputStream; + +public class TestPipe { + + private int namedPipeHandle; + private String pipeName, srcFile; + private int pipeBuffer = 131072, fileBuffer = 8192; + + public TestPipe(String pipeName, String srcFile) { + this.pipeName = pipeName; + this.srcFile = srcFile; + } + + private void log(String message) { + System.out.println(message); + } + + private boolean createPipe() { + namedPipeHandle = Pipe.CreateNamedPipe( + pipeName, + Pipe.PIPE_ACCESS_DUPLEX, + Pipe.PIPE_WAIT, + 5, + pipeBuffer, + pipeBuffer, + 0xffffffff, + 0); + if (namedPipeHandle == -1) { + log("CreateNamedPipe failed for " + pipeName + " for error Message " + Pipe.FormatMessage(Pipe.GetLastError())); + } else { + log("Named Pipe " + pipeName + " created successfully Handle=" + namedPipeHandle); + } + return namedPipeHandle != -1; + } + + private boolean connectToPipe() { + log("Waiting for a client to connect to pipe " + pipeName); + boolean connected = Pipe.ConnectNamedPipe(namedPipeHandle, 0); + if (!connected) { + int lastError = Pipe.GetLastError(); + if (lastError == Pipe.ERROR_PIPE_CONNECTED) + connected = true; + } + log((connected ? "Connected to the pipe " : "Falied to connect to the pipe ") + pipeName); + return connected; + } + + public void runPipe() { + if (createPipe() && connectToPipe()) { + log("Client connected."); + try { + File f1 = new File(this.srcFile); + InputStream in = new FileInputStream(f1); + log("Sending data to the pipe"); + byte[] buf = new byte[fileBuffer]; + int len, bytesWritten; + while ((len = in.read(buf)) > 0) { + bytesWritten = Pipe.WriteFile(namedPipeHandle, buf, len); + log("Sent " + len + "/" + bytesWritten + " bytes to the pipe"); + if (bytesWritten == -1) { + int errorNumber = Pipe.GetLastError(); + log("Error Writing to pipe " + Pipe.FormatMessage(errorNumber)); + } + } + in.close(); + Pipe.FlushFileBuffers(namedPipeHandle); + Pipe.CloseHandle(namedPipeHandle); + Pipe.DisconnectNamedPipe(namedPipeHandle); + log("Writing to the pipe completed."); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + + public static void main(String[] args) { + String pipeName = "\\\\.\\pipe\\detest"; + String fileName = "txt/bla.txt"; + //fileName = "C:\\Users\\Rik\\Music\\Artists\\+44\\When Your Heart Stops Beating\\+44 - 155.mp3"; + TestPipe testPipe = new TestPipe(pipeName, fileName); + testPipe.runPipe(); + } +} diff --git a/src/main/java/sound/Consumer.java b/src/main/java/sound/Consumer.java new file mode 100644 index 0000000..cc6c28c --- /dev/null +++ b/src/main/java/sound/Consumer.java @@ -0,0 +1,7 @@ +package sound; + +public interface Consumer { + public void start(Producer producer); + public void stop(); + public void exit(); +} diff --git a/src/main/java/sound/Format.java b/src/main/java/sound/Format.java new file mode 100644 index 0000000..4de19dc --- /dev/null +++ b/src/main/java/sound/Format.java @@ -0,0 +1,13 @@ +package sound; + +import javax.sound.sampled.AudioFormat; + +public interface Format extends Cloneable { + public interface Standard extends Format { + public AudioFormat getAudioFormat(); + } + + public interface Mp3 extends Format { + public int getRate(); + } +} \ No newline at end of file diff --git a/src/main/java/sound/Producer.java b/src/main/java/sound/Producer.java new file mode 100644 index 0000000..0c5ff9f --- /dev/null +++ b/src/main/java/sound/Producer.java @@ -0,0 +1,10 @@ +package sound; + +import java.io.InputStream; + +public interface Producer extends Format { + public InputStream getInputStream(); + public void start(); + public void stop(); + public void exit(); +} \ No newline at end of file diff --git a/src/main/java/sound/Source.java b/src/main/java/sound/Source.java new file mode 100644 index 0000000..8d558d1 --- /dev/null +++ b/src/main/java/sound/Source.java @@ -0,0 +1,161 @@ +package sound; + +import java.io.IOException; +import java.io.InputStream; + +import javax.sound.sampled.AudioFormat; +import javax.sound.sampled.LineUnavailableException; +import javax.sound.sampled.SourceDataLine; + +import javazoom.jl.decoder.JavaLayerException; +import javazoom.jl.player.Player; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import sound.util.Tool; +import base.exception.worker.ActivateException; +import base.exception.worker.DeactivateException; +import base.work.Work; + +public class Source implements Consumer { + protected Logger logger = LoggerFactory.getLogger(getClass()); + + protected static final int BUFFER_SIZE = 1024 * 4; // in bytes + protected static final int FRAMES = 10; // count + + protected String name; + protected Producer producer; + protected InputStream producerInputStream; + protected Work work; + + public Source(String name) throws LineUnavailableException { + this.name = name; + } + + public void start() { + if (work != null) { + work.start(); + } + } + + public void start(Producer producer) { + this.producer = producer; + producerInputStream = producer.getInputStream(); + if (work != null) { + work.exit(); + } + if (producer instanceof Format.Standard) { + logger.debug("Format.Standard"); + work = new DefaultWorker((Format.Standard) producer); + } else if (producer instanceof Format.Mp3) { + logger.debug("Format.Mp3"); + work = new Mp3Worker((Format.Mp3) producer); + } + start(); + } + + public void stop() { + if (work != null) { + work.stop(); + } + } + + public void exit() { + if (work != null) { + work.exit(); + } + } + + protected class DefaultWorker extends Work { + protected Format.Standard format; + protected SourceDataLine line; + + public DefaultWorker(Format.Standard format) { + this.format = format; + } + + public void activate() throws ActivateException { + AudioFormat audioFormat = format.getAudioFormat(); + try { + if (line == null) { + line = Tool.getSourceDataLine(name, audioFormat); + } + if (!line.isOpen()) { + line.open(); + } + } catch (LineUnavailableException e) { + logger.error("", e); + throw new ActivateException(); + } + if (!line.isRunning()) { + line.start(); + } + super.activate(); + } + + public void deactivate() throws DeactivateException { + super.deactivate(); + line.flush(); + } + + public void exit() { + super.exit(); + line.close(); + } + + public void work() { + try { + byte[] buffer = new byte[BUFFER_SIZE]; + int read = producerInputStream.read(buffer, 0, buffer.length); + if (read > 0) { + line.write(buffer, 0, read); + } else { + exit(); + } + } catch (IOException e) { + logger.error("", e); + exit(); + } + } + } + + protected class Mp3Worker extends Work { + protected Format.Mp3 format; + protected Player player; + + public Mp3Worker(Format.Mp3 format) { + this.format = format; + } + + public void activate() throws ActivateException { + producer.start(); + super.activate(); + } + + public void deactivate() throws DeactivateException { + super.deactivate(); + producer.stop(); + } + + public void exit() { + super.exit(); + player.close(); + } + + public void work() { + try { + if (player == null) { + player = new Player(producerInputStream); + sleep(100); + } + player.play(FRAMES); + } catch (JavaLayerException e) { + logger.error("", e); + } + if (player.isComplete()) { + stop(); + } + } + } +} diff --git a/src/main/java/sound/consumer/Port.java b/src/main/java/sound/consumer/Port.java new file mode 100644 index 0000000..5e3cf48 --- /dev/null +++ b/src/main/java/sound/consumer/Port.java @@ -0,0 +1,121 @@ +package sound.consumer; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; + +import javax.sound.sampled.AudioFormat; + +import sound.Consumer; +import sound.Format; +import sound.Format.Standard; +import sound.Producer; +import sound.util.SoxBuilder; +import sound.util.SoxBuilder.File; +import sound.util.SoxBuilder.File.Type; +import sound.util.SoxBuilder.Option; +import base.exception.worker.ActivateException; +import base.exception.worker.DeactivateException; +import base.work.Work; + +public class Port extends Work implements Consumer { + protected static final int BUFFER_SIZE = 1024 * 4; // in bytes + + protected String device; + protected Producer producer; + protected Process process; + protected InputStream producerInputStream; + protected OutputStream processOutputStream; + protected ProcessBuilder processBuilder; + + public Port() { + this("0"); + } + + public Port(String device) { + this.device = device; + } + + public void start(Producer producer) { + start(producer); + } + + @SuppressWarnings("static-access") + public void start(Producer producer, boolean thread) { + this.producer = producer; + producerInputStream = producer.getInputStream(); + + String command = ""; + if (producer instanceof Standard) { + AudioFormat audioFormat = ((Standard) producer).getAudioFormat(); + SoxBuilder.addFile(File.setType(Type.STANDARD).setOptions(audioFormat)); + } else if (producer instanceof Format.Mp3) { + SoxBuilder.addFile(File.setType(Type.STANDARD).setOption(File.Format.MP3)); + } + command = SoxBuilder + .setOption(Option.QUIET) + .addFile(File.setType(Type.DEVICE)) + .build(); + + logger.debug(String.format("Build process (\"%s\")", command)); + processBuilder = new ProcessBuilder(command.split(" ")); + processBuilder.environment().put("AUDIODEV", device); + + start(); + } + + public void activate() throws ActivateException { + producer.start(); + if (process == null) { + try { + process = processBuilder.start(); + } catch (IOException e) { + logger.error("", e); + throw new ActivateException(); + } + processOutputStream = process.getOutputStream(); + } + super.activate(); + } + + public void deactivate() throws DeactivateException { + super.deactivate(); + try { + processOutputStream.flush(); + } catch (IOException e) { + logger.error("", e); + throw new DeactivateException(); + } + } + + public void exit() { + try { + logger.debug("close process output stream"); + processOutputStream.close(); + + logger.debug("wait for process to terminate"); + process.waitFor(); + } catch (IOException e) { + logger.error("", e); + } catch (InterruptedException e) { + logger.error("", e); + } finally { + process = null; + } + } + + public void work() { + try { + byte[] buffer = new byte[BUFFER_SIZE]; + int read = producerInputStream.read(buffer, 0, buffer.length); + if (read > 0) { + processOutputStream.write(buffer, 0, read); + } else { + exit(); + } + } catch (IOException e) { + logger.error("", e); + exit(); + } + } +} diff --git a/src/main/java/sound/consumer/Shoutcast.java b/src/main/java/sound/consumer/Shoutcast.java new file mode 100644 index 0000000..3644459 --- /dev/null +++ b/src/main/java/sound/consumer/Shoutcast.java @@ -0,0 +1,296 @@ +package sound.consumer; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.io.OutputStreamWriter; +import java.net.ServerSocket; +import java.net.Socket; +import java.net.SocketException; +import java.util.HashMap; +import java.util.Map.Entry; +import java.util.concurrent.ConcurrentLinkedQueue; + +import sound.Consumer; +import sound.Producer; +import sound.data.Data; +import sound.util.Buffer; +import base.exception.worker.ActivateException; +import base.exception.worker.DeactivateException; +import base.work.Listen; +import base.work.Work; + +import com.Ostermiller.util.CircularObjectBuffer; + +public class Shoutcast extends Work implements Consumer { + public static final int PORT = 9876; + public static final int RATE = 192; // in kbps + public static final int META = 8192; // in bytes + public static final int STEP = 80; // in milliseconds + public static final int BUFFER = 2000; // in bytes + public static final int BUFFERING = 500; // in milliseconds + public static final String DATA = "StreamTitle='%s';StreamUrl='%s';"; + protected int rate; + protected int port; + protected Server server; + protected HashMap headerMap; + protected ConcurrentLinkedQueue clientList; + protected InputStream producerInputStream; + protected int chunk; + protected Buffer buffer; + protected byte[] bytes; + protected Data data; + protected String metaData; + private CircularObjectBuffer circularStringBuffer; + + public Shoutcast() { + this(RATE, PORT); + } + + public Shoutcast(int rate) { + this(rate, PORT); + } + + public Shoutcast(int rate, int port) { + this.rate = rate; + this.port = port; + clientList = new ConcurrentLinkedQueue(); + metaData = ""; + + chunk = STEP * rate / 8; + bytes = new byte[chunk]; + buffer = new Buffer(BUFFER * rate / 8); + + headerMap = new HashMap(); + headerMap.put("icy-notice1", "This stream requires Winamp"); + headerMap.put("icy-notice2", "Java SHOUTcast Server"); + headerMap.put("icy-name", "Java Radio"); + headerMap.put("icy-genre", "Java"); + headerMap.put("icy-url", "http://localhost"); + headerMap.put("content-type:", "audio/mpeg"); + headerMap.put("icy-pub", "0"); + headerMap.put("icy-metaint", String.valueOf(META)); + headerMap.put("icy-br", String.valueOf(rate)); + } + + public void activate() throws ActivateException { + logger.trace("Activate Server"); + server = new Server(port); + server.start(); + super.activate(); + } + + public boolean active() { + return server.active(); + } + + public void deactivate() throws DeactivateException { + super.deactivate(); + server.stop(); + } + + public void work() { + int progress; + try { + int read = 0; + if (producerInputStream != null) { + while (producerInputStream.available() < buffer.capacity) { + progress = (int) (producerInputStream.available() / (buffer.capacity / 100.0F)); + logger.debug("Filling buffer: " + progress + "%"); + sleep(BUFFERING); + } + read = producerInputStream.read(bytes); + } + data = new Data(bytes, read); + buffer.write(bytes, 0, read); + } catch (IOException e) { + logger.error(e.getMessage()); + } + + for (Client client : clientList) { + if (client.active) { + client.add(data); + } + } + sleep(STEP); + } + + public void setMetaBuffer(CircularObjectBuffer circularStringBuffer) { + logger.debug("Set meta input stream"); + this.circularStringBuffer = circularStringBuffer; + } + + public void setMeta(String meta) { + logger.debug("Set meta string: " + meta); + metaData = meta; + } + + protected class Client extends Listen { + protected Socket socket; + protected InputStream inputStream; + protected OutputStream outputStream; + protected boolean writeMeta; + protected int untilMeta; + protected boolean active; + + public Client(Socket socket) throws IOException { + this.socket = socket; + inputStream = socket.getInputStream(); + outputStream = socket.getOutputStream(); + active = false; + clientList.add(this); + } + + public void activate() throws ActivateException { + BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); + try { + String line; + while ((line = bufferedReader.readLine()) != null) { + if (line.startsWith("Icy-MetaData")) { + writeMeta = Integer.valueOf(line.substring(line.indexOf(":") + 1).trim()).intValue() == 1; + untilMeta = META; + } else if (line.equals("")) { + break; + } + } + logger.debug(String.format("Client accept meta: %s", Boolean.valueOf(writeMeta))); + + OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream); + outputStreamWriter.write("ICY 200 OK\r\n"); + for (Entry header : headerMap.entrySet()) { + outputStreamWriter.write(String.format("%s: %s\r\n", header.getKey(), header.getValue())); + } + outputStreamWriter.write("\r\n"); + outputStreamWriter.flush(); + + add(new Data(buffer.get())); + active = true; + } catch (IOException e) { + logger.error(e.getMessage()); + throw new ActivateException(); + } + super.activate(); + } + + public void exit() { + logger.debug("Client exit"); + super.exit(); + clientList.remove(this); + try { + inputStream.close(); + outputStream.close(); + socket.close(); + } catch (IOException e) { + logger.error(e.getMessage()); + } + } + + public void input(Data data) { + try { + byte[] bytes = data.get(); + if (writeMeta) { + int offset = 0; + while (data.length() - offset >= untilMeta) { + outputStream.write(bytes, offset, untilMeta); + writeMeta(); + offset += untilMeta; + untilMeta = META; + } + int length = data.length() - offset; + outputStream.write(bytes, offset, length); + untilMeta -= length; + } else { + outputStream.write(bytes); + } + } catch (SocketException e) { + exit(); + } catch (IOException e) { + exit(); + } + } + + protected void writeMeta() throws IOException { + if ((circularStringBuffer != null) + && (circularStringBuffer.getAvailable() > 0)) { + try { + String newMetaData = circularStringBuffer.read(); + if (!newMetaData.isEmpty() && !newMetaData.equals(metaData)) { + metaData = newMetaData; + } + } catch (InterruptedException e) { + logger.error(e.getMessage()); + } + } + + String meta = String.format("StreamTitle='%s';StreamUrl='%s';", metaData, "???"); + byte[] metaBytes = meta.getBytes(); + + int length = (int) Math.ceil(metaBytes.length / 16.0F); + outputStream.write(length); + outputStream.write(metaBytes); + + int padding = 16 * length - metaBytes.length; + outputStream.write(new byte[padding], 0, padding); + } + } + + protected class Server extends Work { + protected int port; + protected ServerSocket serverSocket; + + public Server(int port) { + this.port = port; + } + + public boolean active() { + return serverSocket.isClosed() ? false : true; + } + + public void activate() throws ActivateException { + try { + serverSocket = new ServerSocket(port); + logger.debug("Server listening at port " + port); + } catch (IOException e) { + logger.error("", e); + throw new ActivateException(); + } + super.activate(); + } + + public void work() { + try { + Socket socket = serverSocket.accept(); + logger.trace("Client connected: " + socket.getInetAddress().toString()); + Shoutcast.Client client = new Shoutcast.Client(socket); + client.start(); + } catch (IOException e) { + logger.error(e.getMessage()); + } + } + + public void deactivate() throws DeactivateException { + logger.debug("Server deactivate"); + super.deactivate(); + try { + serverSocket.close(); + } catch (IOException e) { + logger.error(e.getMessage()); + } + for (Shoutcast.Client client : clientList) { + client.stop(); + } + } + } + + public void start(Producer producer) { + producerInputStream = producer.getInputStream(); + producer.start(); + super.start(); + } + + public void setInputStream(InputStream inputStream) { + producerInputStream = inputStream; + } +} diff --git a/src/main/java/sound/data/Data.java b/src/main/java/sound/data/Data.java new file mode 100644 index 0000000..645cccc --- /dev/null +++ b/src/main/java/sound/data/Data.java @@ -0,0 +1,23 @@ +package sound.data; + +public class Data { + protected byte[] bytes; + protected int length; + + public Data(byte[] bytes) { + this(bytes, bytes.length); + } + + public Data(byte[] bytes, int length) { + this.bytes = bytes; + this.length = length; + } + + public byte[] get() { + return this.bytes; + } + + public int length() { + return this.length; + } +} \ No newline at end of file diff --git a/src/main/java/sound/producer/Stream.java b/src/main/java/sound/producer/Stream.java new file mode 100644 index 0000000..dbe6f6d --- /dev/null +++ b/src/main/java/sound/producer/Stream.java @@ -0,0 +1,200 @@ +package sound.producer; + +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.OutputStreamWriter; +import java.net.Socket; +import java.net.URL; + +import sound.Format; +import sound.Producer; +import sound.stream.HoardedInputStream; +import base.exception.worker.ActivateException; +import base.exception.worker.DeactivateException; +import base.work.Work; + +import com.Ostermiller.util.CircularByteBuffer; +import com.Ostermiller.util.CircularObjectBuffer; + +public class Stream extends Work implements Producer, Format.Mp3 { + public static final int STEP = 80; // in milliseconds + + protected String http; + protected Socket socket; + protected InputStream socketInputStream; + protected OutputStreamWriter socketOutputStreamWriter; + protected HoardedInputStream hoardedInputStream; + protected int meta; + protected int rate; + protected int chunk; + protected int untilMeta; + protected CircularByteBuffer audioCircularByteBuffer; + protected CircularObjectBuffer metaCircularObjectBuffer; + protected String metaData; + + public Stream(String http) { + super(); + this.http = http; + meta = -1; + rate = -1; + audioCircularByteBuffer = new CircularByteBuffer(CircularByteBuffer.INFINITE_SIZE); + metaCircularObjectBuffer = new CircularObjectBuffer(); + } + + protected void connect(URL url) { + try { + /* Open socket communication */ + socket = new Socket(url.getHost(), url.getPort()); + socketInputStream = socket.getInputStream(); + socketOutputStreamWriter = new OutputStreamWriter(socket.getOutputStream()); + + /* Write stream request */ + if (url.getFile().equals("")) { + socketOutputStreamWriter.write("GET / HTTP/1.1\r\n"); + } else { + socketOutputStreamWriter.write("GET " + url.getFile() + " HTTP/1.1\r\n"); + } + socketOutputStreamWriter.write("Host: " + url.getHost() + "\r\n"); + //socketOutputStreamWriter.write("Icy-MetaData: 1\r\n"); + socketOutputStreamWriter.write("Connection: close\r\n"); + socketOutputStreamWriter.write("\r\n"); + socketOutputStreamWriter.flush(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + public void activate() throws ActivateException { + try { + /* Initialize connection */ + URL url = new URL(http); + + /* Parse headers */ + connect(url); + InputStreamReader inputStreamReader = new InputStreamReader(socketInputStream); + StringBuffer stringBuffer = new StringBuffer(); + char character; + int skip = 0; + while ((character = (char) inputStreamReader.read()) > 0) { + ++skip; + if (character == '\n') { + /* Fetch relevant headers */ + String line = stringBuffer.toString().trim(); + if (line.startsWith("icy-metaint")) { + meta = Integer.valueOf(line.substring(line.indexOf(":") + 1).trim()); + } else if (line.startsWith("icy-br")) { + rate = Integer.valueOf(line.substring(line.indexOf(":") + 1).trim()); + } else if (line.equals("")) { + break; + } + stringBuffer = new StringBuffer(); + } else { + stringBuffer.append(character); + } + } + inputStreamReader.close(); + + /* Reconnect to bypass pre-buffering problems */ + connect(url); + socketInputStream = socket.getInputStream(); + socketInputStream.skip(skip); + } catch (IOException e) { + e.printStackTrace(); + } catch (NumberFormatException e) { + e.printStackTrace(); + } + + /* Calculate streaming parameters */ + //untilMeta = meta; + chunk = STEP * rate / 8; + super.activate(); + } + + public void deactivate() throws DeactivateException { + super.deactivate(); + audioCircularByteBuffer.clear(); + metaCircularObjectBuffer.clear(); + try { + hoardedInputStream.clear(); + } catch (IOException e) { + logger.error("", e); + throw new DeactivateException(); + } + } + + public void work() { + int left = chunk; + + /* Handle media at appropriate times * + while (meta > 0 && left >= untilMeta) { + stream(untilMeta); + left -= untilMeta; + meta(); + untilMeta = meta; + }*/ + + /* Stream at fixed rate */ + stream(left); + //untilMeta -= left; + sleep(STEP); + } + + protected void stream(int length) { + try { + byte[] bytes = new byte[length]; + int read = 0; + while (length > 0 && (read = socketInputStream.read(bytes)) > 0) { + length -= read; + audioCircularByteBuffer.getOutputStream().write(bytes); + } + } catch (IOException e) { + logger.error(e.getMessage()); + stop(); + } + } + + protected void meta() { + try { + /* Retrieve data length */ + byte[] data = new byte[1]; + socketInputStream.read(data); + + int length = 16 * data[0]; + data = new byte[length]; + socketInputStream.read(data); + + /* Check for new data */ + String newMetaData = new String(data); + if (!newMetaData.isEmpty() && !newMetaData.equals(metaData)) { + metaData = newMetaData; + metaCircularObjectBuffer.write(new String(data)); + logger.debug("data: " + metaData); + } + return; + } catch (IOException e) { + logger.error("", e); + } catch (IllegalStateException e) { + logger.error("", e); + } catch (InterruptedException e) { + logger.error("", e); + } + stop(); + return; + } + + public InputStream getInputStream() { + if (hoardedInputStream == null) { + hoardedInputStream = new HoardedInputStream(audioCircularByteBuffer.getInputStream()); + } + return hoardedInputStream; + } + + public CircularObjectBuffer getMetaBufferStream() { + return metaCircularObjectBuffer; + } + + public int getRate() { + return rate; + } +} diff --git a/src/main/java/sound/producer/Target.java b/src/main/java/sound/producer/Target.java new file mode 100644 index 0000000..35c592b --- /dev/null +++ b/src/main/java/sound/producer/Target.java @@ -0,0 +1,97 @@ +package sound.producer; + +import java.io.IOException; +import java.io.InputStream; + +import javax.sound.sampled.AudioFormat; +import javax.sound.sampled.LineUnavailableException; +import javax.sound.sampled.TargetDataLine; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import sound.Format; +import sound.Producer; +import sound.stream.HoardedInputStream; +import sound.util.Tool; + +public class Target implements Producer, Format.Standard { + protected Logger logger = LoggerFactory.getLogger(getClass()); + + protected Standard format; + + protected TargetDataLine line; + protected InputStream targetInputStream; + protected HoardedInputStream hoardedInputStream; + + protected AudioFormat audioFormat; + + public Target(String name) throws LineUnavailableException { + logger.debug(String.format("Target \"%s\" without format", name)); + line = Tool.getTargetDataLine(name); + audioFormat = line.getFormat(); + targetInputStream = new TargetInputStream(); + } + + public Target(String name, AudioFormat audioFormat) throws LineUnavailableException { + logger.debug(String.format("Target \"%s\" with format: %s", name, audioFormat)); + this.audioFormat = audioFormat; + line = Tool.getTargetDataLine(name, audioFormat); + targetInputStream = new TargetInputStream(); + } + + public AudioFormat getAudioFormat() { + return audioFormat; + } + + public InputStream getInputStream() { + return targetInputStream; + } + + public class TargetInputStream extends InputStream { + protected boolean open; + + public TargetInputStream() { + open = false; + } + + public int read() throws IOException { + start(); + byte[] buffer = new byte[1]; + line.read(buffer, 0, 1); + return (int) buffer[0]; + } + + public int read(byte[] buffer, int offset, int length) { + start(); + line.read(buffer, offset, length); + return length; + } + + public int available() { + start(); + return line.available(); + } + } + + public void start() { + if (!line.isOpen()) { + try { + line.open(); + } catch (LineUnavailableException e) { + logger.error("", e); + } + } + if (!line.isRunning()) { + line.start(); + } + } + + public void stop() { + line.flush(); + } + + public void exit() { + line.close(); + } +} diff --git a/src/main/java/sound/stream/HoardedInputStream.java b/src/main/java/sound/stream/HoardedInputStream.java new file mode 100644 index 0000000..fd6924c --- /dev/null +++ b/src/main/java/sound/stream/HoardedInputStream.java @@ -0,0 +1,76 @@ +package sound.stream; + +import java.io.BufferedInputStream; +import java.io.IOException; +import java.io.InputStream; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class HoardedInputStream extends BufferedInputStream { + protected Logger logger = LoggerFactory.getLogger(getClass()); + + protected static final int SLEEP = 500; // in milliseconds + protected static final int BUFFER_SIZE = 30000; // in bytes + protected static final int MINIMUM_SIZE = 1000; // in bytes + + protected int bufferSize; + protected int minimumSize; + protected boolean hoard; + + public HoardedInputStream(InputStream inputStream) { + this(inputStream, BUFFER_SIZE, MINIMUM_SIZE); + } + + public HoardedInputStream(InputStream inputStream, int bufferSize) { + super(inputStream, bufferSize); + this.bufferSize = bufferSize; + hoard = true; + } + + public HoardedInputStream(InputStream inputStream, int bufferSize, int minimumSize) { + this(inputStream, bufferSize); + this.minimumSize = minimumSize; + } + + public int read() throws IOException { + hoard(); + byte[] buffer = new byte[1]; + in.read(buffer, 0, 1); + return (int) buffer[0]; + } + + public int read(byte[] buffer, int offset, int length) throws IOException { + hoard(); + in.read(buffer, offset, length); + return length; + } + + public void hoard() throws IOException { + int available = available(); + if (hoard && available < MINIMUM_SIZE) { + long time = System.currentTimeMillis(); + do { + try { + Thread.sleep(SLEEP); + } catch (InterruptedException e) { + logger.warn("", e); + } + } while (available() < BUFFER_SIZE); + logger.debug(String.format("Buffered %d bytes in %s milliseconds", BUFFER_SIZE - available, System.currentTimeMillis() - time)); + } + } + + public void clear() throws IOException { + this.buf = new byte[buf.length]; + reset(); + } + + public void drain() { + drain(true); + } + + public void drain(boolean drain) { + hoard = !drain; + } +} diff --git a/src/main/java/sound/util/Buffer.java b/src/main/java/sound/util/Buffer.java new file mode 100644 index 0000000..2beb9fc --- /dev/null +++ b/src/main/java/sound/util/Buffer.java @@ -0,0 +1,41 @@ +package sound.util; + +public class Buffer { + protected byte[] elements; + public int capacity; + protected int index; + protected int size; + + public Buffer(int capacity) { + elements = new byte[capacity]; + this.capacity = capacity; + index = 0; + size = 0; + } + + public synchronized void add(byte[] elements) { + for (byte element : elements) { + elements[index++ % capacity] = element; + if (size < capacity) { + ++size; + } + } + } + + public synchronized void write(byte[] elements, int offset, int length) { + for (int i = offset; i < length; ++i) { + this.elements[(index++ % capacity)] = elements[i]; + if (size < capacity) { + ++size; + } + } + } + + public synchronized byte[] get() { + byte[] elements = new byte[size]; + for (int i = 0; i < size; i++) { + elements[i] = elements[((index + i) % size)]; + } + return elements; + } +} \ No newline at end of file diff --git a/src/main/java/sound/util/SoxBuilder.java b/src/main/java/sound/util/SoxBuilder.java new file mode 100644 index 0000000..0ea367d --- /dev/null +++ b/src/main/java/sound/util/SoxBuilder.java @@ -0,0 +1,321 @@ +package sound.util; + +import java.util.HashMap; +import java.util.Map.Entry; + +import javax.sound.sampled.AudioFormat; + +import sound.util.SoxBuilder.Option.Combine; +import sound.util.SoxBuilder.Option.Replay; + +public final class SoxBuilder { + protected static SoxBuilder instance; + protected static HashMap optionMap; + protected static String files; + protected static String effects; + + static { + instance = new SoxBuilder(); + reset(); + } + + public static void reset() { + optionMap = new HashMap(); + files = ""; + effects = ""; + } + + public static SoxBuilder setOption(Option option, String value) { + optionMap.put(option.getCode(), value); + return instance; + } + + public static SoxBuilder setOption(Option option) { + return SoxBuilder.setOption(option, ""); + } + + public static SoxBuilder setOption(Option option, int value) { + return SoxBuilder.setOption(option, String.valueOf(value)); + } + + public static SoxBuilder setOption(Option option, Combine combine) { + return SoxBuilder.setOption(option, combine.getCode()); + } + + public static SoxBuilder setOption(Combine combine) { + return SoxBuilder.setOption(Option.COMBINE, combine); + } + + public static SoxBuilder setOption(Option option, Replay replay) { + return SoxBuilder.setOption(option, replay.toString().toLowerCase()); + } + + public static SoxBuilder setOption(Replay replay) { + return SoxBuilder.setOption(Option.REPLAY, replay); + } + + public static SoxBuilder addFile(File file) { + files = String.format("%s %s", files, file.build()); + return instance; + } + + public static SoxBuilder addEffect(Effect effect) { + effects = String.format("%s %s", effects, effect.build()); + return instance; + } + + public String build() { + String build = "sox"; + for (Entry entry : optionMap.entrySet()) { + String value = entry.getValue(); + if (value.equals("")) { + build = String.format("%s %s", build, entry.getKey()); + } else { + String option = String.format("%s %s", entry.getKey(), value); + build = String.format("%s %s", build, option); + } + } + build = String.format("%s%s%s", build, files, effects); + reset(); + return build; + } + + public enum Environment { + AUDIODRIVER, AUDIODEV + } + + public enum Option { + BUFFER ("--buffer"), // default=8192 + INPUT_BUFFER ("--input-buffer"), + CLOBBER ("--clobber"), + COMBINE ("--combine"), // |Combine| + NO_DITHER ("--no-dither"), // (-D) + EFFECTS_FILE ("--efects-file"), + GUARD ("--guard"), // (-G) + MIX ("-m"), // (--combine mix) + MERGE ("-M"), // (--combine merge) + MAGIC ("--magic"), + MULTI_THREADED ("--multi-threaded"), + SINGLE_THREADED ("--single-threaded"), + NORM ("--norm"), // [=dB-level] + PLAY_RATE_ARG ("--play-rate-arg"), + QUIET ("--no-show-progress"), // (-q) + REPEATABLE ("-R"), + REPLAY ("--replay-gain"), // |Replay| + MULTIPLY ("-T"), // (--combine multiply) + TEMP ("--temp"); + + protected String code; + + private Option(String code) { + this.code = code; + } + + public String getCode() { + return code; + } + + public enum Combine { + CONCATENATE ("concatenate"), + MERGE ("merge"), // (-M) + MIX ("mix"), // (-m) + MIX_POWER ("mix-power"), + MULTIPLY ("multiply"), // (-T) + SEQUENCE ("sequence"); + + protected String code; + + private Combine(String code) { + this.code = code; + } + + public String getCode() { + return code; + } + } + + public enum Replay { + TRACK, ALBUM, OFF + } + } + + public static class File { + protected static File instance; + + protected static HashMap optionMap; + protected static Type type; + + static { + instance = new File(); + reset(); + } + + public static void reset() { + optionMap = new HashMap(); + type = Type.PIPE; + } + + public static File setOption(Option option, String value) { + optionMap.put(option.getCode(), value); + return instance; + } + + public static File setOption(Option option) { + return File.setOption(option, ""); + } + + public static File setOption(Option option, int value) { + return File.setOption(option, String.valueOf(value)); + } + + public static File setOption(Option option, Encoding encoding) { + return File.setOption(option, encoding.getCode()); + } + + public static File setOption(Encoding encoding) { + return File.setOption(Option.ENCODING, encoding); + } + + public static File setOption(Option option, Format format) { + return File.setOption(option, format.toString().toLowerCase()); + } + + public static File setOption( Format format) { + return File.setOption(Option.FORMAT, format); + } + + public static File setOption(Option option, Endian endian) { + return File.setOption(option, endian.toString().toLowerCase()); + } + + public static File setOption(Endian endian) { + return File.setOption(Option.ENDIAN, endian); + } + + public File setOptions(AudioFormat audioFormat) { + setOption(Option.CHANNELS, audioFormat.getChannels()); + setOption(Option.RATE, String.format("%sk", String.valueOf(audioFormat.getSampleRate() / 1000f))); + AudioFormat.Encoding encoding = audioFormat.getEncoding(); + int bits = audioFormat.getSampleSizeInBits(); + if (encoding.equals(AudioFormat.Encoding.ALAW)) { + setOption(Format.AL); + setOption(Encoding.A_LAW); + } else if (encoding.equals(AudioFormat.Encoding.ULAW)) { + setOption(Format.UL); + setOption(Encoding.U_LAW); + } else if (encoding.equals(AudioFormat.Encoding.PCM_SIGNED)) { + setOption(Format.valueOf(String.format("S%d", bits))); + setOption(Encoding.SIGNED_INTEGER); + } else if (encoding.equals(AudioFormat.Encoding.PCM_UNSIGNED)) { + setOption(Format.valueOf(String.format("U%d", bits))); + setOption(Encoding.UNSIGNED_INTEGER); + } + setOption(audioFormat.isBigEndian() ? Endian.BIG : Endian.LITTLE); + return instance; + } + + public static File setType(Type type) { + File.type = type; + return instance; + } + + public String build() { + String build = type.getCode(); + for (Entry entry : optionMap.entrySet()) { + String value = entry.getValue(); + if (value.equals("")) { + build = String.format("%s %s", entry.getKey(), build); + } else { + String option = String.format("%s %s", entry.getKey(), value); + build = String.format("%s %s", option, build); + } + } + reset(); + return build; + } + + public enum Option { + BITS ("--bits"), // (-b) + CHANNELS ("--channels"), // (-c) + ENCODING ("--encoding"), // (-e), |Encoding| + NO_GLOB ("--no-glob"), + RATE ("--rate"), // (-r) + FORMAT ("--type"), // (-t), |Format| + ENDIAN ("--endian"), // (-L, -B, -x), |Endian| + REVERSE_NIBBLES ("--reverse-nibbles"), // (-N) + REVERSE_BITS ("--reverse-bits"), // (-X) + /* Input only */ + IGNORE_LENGTH ("--ignore-length"), + VOLUME ("--volume"), // (-v) + /* Output only */ + ADD_COMMENT ("--add-comment"), + COMMENT ("--comment"), + COMMENT_FILE ("--comment-file"), + COMPRESSION ("--compression"); // -C + + protected String code; + + private Option(String code) { + this.code = code; + } + + public String getCode() { + return code; + } + } + + public enum Encoding { + SIGNED_INTEGER ("signed-integer"), // PCM data stored as signed integers + UNSIGNED_INTEGER ("unsigned-integer"), // PCM data stored as unsigned integers + FLOATING_POINT ("floating-point"), // PCM data stored as single precision (32-bit) or double precision (64-bit) floating-point numbers + A_LAW ("a-lawW"), // International telephony standard for logarithmic encoding to 8 bits per sample (~13-bit PCM) + U_LAW ("u-law"), // North American telephony standard for logarithmic encoding to 8 bits per sample (~14-bit PCM) + MU_LAW ("mu-law"), // alias for u-law (~14-bit PCM) + OKI_ADPCM ("oki-adpcm"), // OKI (VOX, Dialogic or Intel) 4-bit ADPCM (~12-bit PCM) + IMA_ADPCM ("ima-adpcm"), // IMA (DVI) 4-bit ADPCM (~13-bit PCM) + MS_ADPCM ("ms-adpcm"), // Microsoft 4-bit ADPCM (~14-bit PCM) + GSM_FULL_RATE ("gsm-full-rate"); // Several audio formats used for digital wireless telephone calls + + protected String code; + + private Encoding(String code) { + this.code = code; + } + + public String getCode() { + return code; + } + } + + public enum Format { + AIF, AIFC, AIFF, AIFFC, AL, AMB, AMR, ANY, ARL, AU, AVR, BIN, CAF, CDDA, CDR, CVS, CVSD, CVU, DAT, DVMS, EDU, F32, F64, FAP, FLAC, FSSD, GSM, GSRT, HCOM, HTK, IMA, IRCAM, LA, LPC, LPC10, LU, M3U, M4A, MAT, MAT4, MAT5, MAUD, MP2, MP3, MP4, NIST, OGG, PAF, PLS, PRC, PVF, RAW, S16, S24, S32, S8, SD2, SDS, SF, SLN, SMP, SND, SNDR, SNDT, SOU, SOX, SPH, TXW, U16, U24, U32, U8, UL, VMS, VOC, VORBIS, VOX, W64, WAV, WAVPCM, WV, WVE, XA, XI; + } + + public enum Endian { + LITTLE, BIG, SWAP; + } + + public enum Type { + STANDARD ("-"), // -t must be given + PIPE ("-p"), // (--sox-pipe) + DEVICE ("-d"), // (--default-device) + NULL ("-n"); // (--null) + + protected String code; + + private Type(String code) { + this.code = code; + } + + public String getCode() { + return code; + } + } + } + + public class Effect { + public String build() { + return null; + } + } +} diff --git a/src/main/java/sound/util/Tool.java b/src/main/java/sound/util/Tool.java new file mode 100644 index 0000000..5b08471 --- /dev/null +++ b/src/main/java/sound/util/Tool.java @@ -0,0 +1,140 @@ +package sound.util; + +import java.util.ArrayList; +import java.util.HashMap; + +import javax.sound.sampled.AudioFormat; +import javax.sound.sampled.AudioSystem; +import javax.sound.sampled.DataLine; +import javax.sound.sampled.Line; +import javax.sound.sampled.LineUnavailableException; +import javax.sound.sampled.Mixer; +import javax.sound.sampled.Port; +import javax.sound.sampled.Port.Info; +import javax.sound.sampled.SourceDataLine; +import javax.sound.sampled.TargetDataLine; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class Tool { + protected static Logger logger = LoggerFactory.getLogger(Tool.class); + + protected static HashMap> targetMap; + protected static HashMap> sourceMap; + protected static ArrayList portList; + + protected static ArrayList targetList; + protected static ArrayList sourceList; + + static { + Tool tool = new Tool(); + + targetMap = new HashMap>(); + sourceMap = new HashMap>(); + targetList = new ArrayList(); + sourceList = new ArrayList(); + portList = new ArrayList(); + + for (Mixer.Info mixerInfo : AudioSystem.getMixerInfo()) { + String name = mixerInfo.getName(); + Mixer mixer = AudioSystem.getMixer(mixerInfo); + + for (Line.Info lineInfo : mixer.getSourceLineInfo()) { + String lineClassName = lineInfo.getLineClass().getName(); + if (lineClassName.equals("javax.sound.sampled.SourceDataLine")) { + if (mixer.isLineSupported(lineInfo)) { + logger.debug(" " + name); + sourceMap.put(name, tool.new Device(mixer, lineInfo)); + } + } + } + for (Line.Info lineInfo : mixer.getTargetLineInfo()) { + String lineClassName = lineInfo.getLineClass().getName(); + if (lineClassName.equals("javax.sound.sampled.TargetDataLine")) { + if (mixer.isLineSupported(lineInfo)) { + logger.debug(" " + name); + targetMap.put(name, tool.new Device(mixer, lineInfo)); + } + } else if (lineClassName.equals("javax.sound.sampled.Port")) { + name = name.substring(5); + try { + Port port = (Port) mixer.getLine(lineInfo); + Port.Info portInfo = (Info) port.getLineInfo(); + if (!targetMap.containsKey(name) || portInfo.equals(Port.Info.LINE_OUT) || portInfo.equals(Port.Info.SPEAKER)) { + logger.debug(" " + name); + portList.add(name); + } + } catch (LineUnavailableException e) { + logger.error("", e); + } + } + } + } + } + + public static String[] getTargets() { + return targetMap.keySet().toArray(new String[0]); + } + + public static String[] getSources() { + return sourceMap.keySet().toArray(new String[0]); + } + + public static String[] getPorts() { + return portList.toArray(new String[0]); + } + + public static TargetDataLine getTargetDataLine(String name) throws LineUnavailableException { + if (targetMap.containsKey(name)) { + return targetMap.get(name).getLine(); + } else { + throw new LineUnavailableException(); + } + } + + public static TargetDataLine getTargetDataLine(String name, AudioFormat audioFormat) throws LineUnavailableException { + if (targetMap.containsKey(name)) { + return targetMap.get(name).getLine(audioFormat); + } else { + throw new LineUnavailableException(); + } + } + + public static SourceDataLine getSourceDataLine(String name) throws LineUnavailableException { + if (sourceMap.containsKey(name)) { + return sourceMap.get(name).getLine(); + } else { + throw new LineUnavailableException(); + } + } + + public static SourceDataLine getSourceDataLine(String name, AudioFormat audioFormat) throws LineUnavailableException { + if (sourceMap.containsKey(name)) { + return sourceMap.get(name).getLine(audioFormat); + } else { + throw new LineUnavailableException(); + } + } + + public class Device { + protected Mixer mixer; + protected Line.Info lineInfo; + + public Device(Mixer mixer, Line.Info lineInfo) { + this.mixer = mixer; + this.lineInfo = lineInfo; + } + + @SuppressWarnings("unchecked") + public T getLine() throws LineUnavailableException { + return (T) mixer.getLine(lineInfo); + } + + @SuppressWarnings("unchecked") + public T getLine(AudioFormat audioFormat) throws LineUnavailableException { + DataLine.Info dataLineInfo = new DataLine.Info(lineInfo.getLineClass(), audioFormat); + return (T) mixer.getLine(dataLineInfo); + } + } +} diff --git a/src/main/java/sound/util/Utils.java b/src/main/java/sound/util/Utils.java new file mode 100644 index 0000000..5c535a0 --- /dev/null +++ b/src/main/java/sound/util/Utils.java @@ -0,0 +1,39 @@ +package sound.util; + +import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; + +import javazoom.jl.decoder.JavaLayerException; +import javazoom.jl.player.Player; + +public class Utils { + public static final int BUFFER = 2048; // bytes + + public static void play(InputStream inputStream) { + try { + new Player(new BufferedInputStream(inputStream)).play(); + } catch (JavaLayerException e) { + e.printStackTrace(); + } + } + + public static void write(InputStream inputStream, File file) { + byte[] bytes = new byte[BUFFER]; + int read = 0; + try { + FileOutputStream fileOutputStream = new FileOutputStream(file); + while ((read = inputStream.read(bytes)) > 0) { + fileOutputStream.write(bytes, 0, read); + } + fileOutputStream.close(); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + } +} diff --git a/src/main/java/test/SoundAudit.java b/src/main/java/test/SoundAudit.java new file mode 100644 index 0000000..9510034 --- /dev/null +++ b/src/main/java/test/SoundAudit.java @@ -0,0 +1,55 @@ +package test; + +import javax.sound.sampled.*; +public class SoundAudit { + public static void main(String[] args) { try { + System.out.println("OS: "+System.getProperty("os.name")+" "+ + System.getProperty("os.version")+"/"+ + System.getProperty("os.arch")+"\nJava: "+ + System.getProperty("java.version")+" ("+ + System.getProperty("java.vendor")+")\n"); + for (Mixer.Info thisMixerInfo : AudioSystem.getMixerInfo()) { + System.out.println("Mixer: "+thisMixerInfo.getDescription()+ + " ["+thisMixerInfo.getName()+"]"); + Mixer thisMixer = AudioSystem.getMixer(thisMixerInfo); + for (Line.Info thisLineInfo:thisMixer.getSourceLineInfo()) { + if (thisLineInfo.getLineClass().getName().equals( + "javax.sound.sampled.Port")) { + Line thisLine = thisMixer.getLine(thisLineInfo); + thisLine.open(); + System.out.println(" Source Port: " + +thisLineInfo.toString()); + for (Control thisControl : thisLine.getControls()) { + System.out.println(AnalyzeControl(thisControl));} + thisLine.close();}} + for (Line.Info thisLineInfo:thisMixer.getTargetLineInfo()) { + if (thisLineInfo.getLineClass().getName().equals( + "javax.sound.sampled.Port")) { + Line thisLine = thisMixer.getLine(thisLineInfo); + thisLine.open(); + System.out.println(" Target Port: " + +thisLineInfo.toString()); + for (Control thisControl : thisLine.getControls()) { + System.out.println(AnalyzeControl(thisControl));} + thisLine.close();}}} + } catch (Exception e) {e.printStackTrace();}} + public static String AnalyzeControl(Control thisControl) { + String type = thisControl.getType().toString(); + if (thisControl instanceof BooleanControl) { + return " Control: "+type+" (boolean)"; } + if (thisControl instanceof CompoundControl) { + System.out.println(" Control: "+type+ + " (compound - values below)"); + String toReturn = ""; + for (Control children: + ((CompoundControl)thisControl).getMemberControls()) { + toReturn+=" "+AnalyzeControl(children)+"\n";} + return toReturn.substring(0, toReturn.length()-1);} + if (thisControl instanceof EnumControl) { + return " Control:"+type+" (enum: "+thisControl.toString()+")";} + if (thisControl instanceof FloatControl) { + return " Control: "+type+" (float: from "+ + ((FloatControl) thisControl).getMinimum()+" to "+ + ((FloatControl) thisControl).getMaximum()+")";} + return " Control: unknown type";} +} diff --git a/src/main/java/test/Test.java b/src/main/java/test/Test.java new file mode 100644 index 0000000..892471c --- /dev/null +++ b/src/main/java/test/Test.java @@ -0,0 +1,40 @@ +package test; + +import javax.sound.sampled.AudioFormat; + +import sound.Consumer; +import sound.Producer; +import sound.Source; +import sound.consumer.Port; +import sound.consumer.Shoutcast; +import sound.producer.Stream; + +public class Test { + public static void main(String[] args) { + AudioFormat audioFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, 48000f, 16, 2, 4, 48000f, true); + try { + //Producer p1 = new Target("Line-In (Creative SB X-Fi)"); + //Producer p2 = new Target("Line 1 (Virtual Audio Cable)", audioFormat); + //p2.start(); + Producer p3 = new Stream("http://ics2gss.omroep.nl:80/3fm-bb-mp3"); + Producer p4 = new Stream("http://sc7.mystreamserver.com:8004"); + + Consumer c1 = new Source("Java Sound Audio Engine"); + Consumer c2 = new Port("Speakers (Creative SB X-Fi)"); + Consumer c3 = new Shoutcast(); + //Consumer c4 = new Player(); + //Consumer c5 = new Writer(new File("stream.out")); + + //Utils.write(p3.getInputStream(), new File("stream.out")); + //Utils.play(p3.getInputStream()); + c3.start(p4); + + //while (true) { + //Thread.sleep(300000); + //c1.stop(); + //} + } catch (Exception e) { + e.printStackTrace(); + } + } +} \ No newline at end of file diff --git a/src/main/java/test/lines/Main.java b/src/main/java/test/lines/Main.java new file mode 100644 index 0000000..5209436 --- /dev/null +++ b/src/main/java/test/lines/Main.java @@ -0,0 +1,34 @@ +package test.lines; + +import javax.sound.sampled.AudioFormat; +import javax.sound.sampled.AudioSystem; +import javax.sound.sampled.Line; +import javax.sound.sampled.LineUnavailableException; +import javax.sound.sampled.Mixer; +import javax.sound.sampled.SourceDataLine; +import javax.sound.sampled.TargetDataLine; + +public class Main { + public static void main(String[] args) { + System.out.println(System.getProperty("javax.sound.sampled.SourceDataLine")); + + new AudioFormat(44100, 16, 2, true, false); + + for (Mixer.Info mixerInfo : AudioSystem.getMixerInfo()) { + Mixer mixer = AudioSystem.getMixer(mixerInfo); + for (Line.Info lineInfo : mixer.getTargetLineInfo()) { + try { + Line line = mixer.getLine(lineInfo); + if (mixer.isLineSupported(lineInfo)) { + if (line instanceof TargetDataLine) { + new TargetLine(mixer, (TargetDataLine) line); + }/* else if (line instanceof SourceDataLine) { + new SourceLine(mixer, (SourceDataLine) line); + }*/ + } + } catch (LineUnavailableException e) {} + } + + } + } +} diff --git a/src/main/java/test/lines/SourceLine.java b/src/main/java/test/lines/SourceLine.java new file mode 100644 index 0000000..56092d5 --- /dev/null +++ b/src/main/java/test/lines/SourceLine.java @@ -0,0 +1,19 @@ +package test.lines; + +import javax.sound.sampled.Mixer; +import javax.sound.sampled.SourceDataLine; + +public class SourceLine { + //private Mixer mixer; + private SourceDataLine line; + + public SourceLine(Mixer mixer, SourceDataLine line) { + //this.mixer = mixer; + this.line = line; + System.out.println("SOURCE " + mixer.getMixerInfo().getName() + " || " + line.getLineInfo()); + } + + public int write(byte[] bytes, int offset, int length) { + return line.write(bytes, offset, length); + } +} diff --git a/src/main/java/test/lines/TargetLine.java b/src/main/java/test/lines/TargetLine.java new file mode 100644 index 0000000..c0c7d1e --- /dev/null +++ b/src/main/java/test/lines/TargetLine.java @@ -0,0 +1,19 @@ +package test.lines; + +import javax.sound.sampled.Mixer; +import javax.sound.sampled.TargetDataLine; + +public class TargetLine { + //private Mixer mixer; + private TargetDataLine line; + + public TargetLine(Mixer mixer, TargetDataLine line) { + //this.mixer = mixer; + this.line = line; + System.out.println("TARGET " + mixer.getMixerInfo().getName() + " || " + line.getLineInfo()); + } + + public int read(byte[] bytes, int offset, int length) { + return line.read(bytes, offset, length); + } +} diff --git a/src/main/resources/txt/keuze.txt b/src/main/resources/txt/keuze.txt new file mode 100644 index 0000000..7e9581d --- /dev/null +++ b/src/main/resources/txt/keuze.txt @@ -0,0 +1,13 @@ +from pcm: + +-r -s [--unsigned] [--big-endian] + +to mp3: +--cbr -b + + +mp3 to pcm: +--decode + +always: + - - --quiet \ No newline at end of file diff --git a/src/main/resources/txt/mp3 b/src/main/resources/txt/mp3 new file mode 100644 index 0000000..daf87ab --- /dev/null +++ b/src/main/resources/txt/mp3 @@ -0,0 +1,1357 @@ +C:/Users/Rik/Music/Artists/+44/When Your Heart Stops Beating/+44 - 155.mp3 +C:/Users/Rik/Music/Artists/+44/When Your Heart Stops Beating/+44 - Baby Come On.mp3 +C:/Users/Rik/Music/Artists/+44/When Your Heart Stops Beating/+44 - Chapter 13.mp3 +C:/Users/Rik/Music/Artists/+44/When Your Heart Stops Beating/+44 - Cliff Diving.mp3 +C:/Users/Rik/Music/Artists/+44/When Your Heart Stops Beating/+44 - Interlude.mp3 +C:/Users/Rik/Music/Artists/+44/When Your Heart Stops Beating/+44 - Lillian.mp3 +C:/Users/Rik/Music/Artists/+44/When Your Heart Stops Beating/+44 - Little Death.mp3 +C:/Users/Rik/Music/Artists/+44/When Your Heart Stops Beating/+44 - Lycanthrope.mp3 +C:/Users/Rik/Music/Artists/+44/When Your Heart Stops Beating/+44 - Make You Smile.mp3 +C:/Users/Rik/Music/Artists/+44/When Your Heart Stops Beating/+44 - No, It Isn't.mp3 +C:/Users/Rik/Music/Artists/+44/When Your Heart Stops Beating/+44 - Weatherman.mp3 +C:/Users/Rik/Music/Artists/+44/When Your Heart Stops Beating/+44 - When Your Heart Stops Beating.mp3 +C:/Users/Rik/Music/Artists/10 Years Feeding/Feeding the Wolves/10 Years - Chasing the Rapture.mp3 +C:/Users/Rik/Music/Artists/10 Years Feeding/Feeding the Wolves/10 Years - Dead In the Water.mp3 +C:/Users/Rik/Music/Artists/10 Years Feeding/Feeding the Wolves/10 Years - Fade Into the Dream.mp3 +C:/Users/Rik/Music/Artists/10 Years Feeding/Feeding the Wolves/10 Years - Fix Me.mp3 +C:/Users/Rik/Music/Artists/10 Years Feeding/Feeding the Wolves/10 Years - Now Is the Time.mp3 +C:/Users/Rik/Music/Artists/10 Years Feeding/Feeding the Wolves/10 Years - One More Day.mp3 +C:/Users/Rik/Music/Artists/10 Years Feeding/Feeding the Wolves/10 Years - The Wicked Ones.mp3 +C:/Users/Rik/Music/Artists/10 Years Feeding/Feeding the Wolves/10 Years - Waking Up the Ghost.mp3 +C:/Users/Rik/Music/Artists/30 Seconds To Mars/A Beautiful Lie/30 Seconds to Mars - A Beautiful Lie.mp3 +C:/Users/Rik/Music/Artists/30 Seconds To Mars/A Beautiful Lie/30 Seconds to Mars - Attack.mp3 +C:/Users/Rik/Music/Artists/30 Seconds To Mars/A Beautiful Lie/30 Seconds to Mars - Battle of One.mp3 +C:/Users/Rik/Music/Artists/30 Seconds To Mars/A Beautiful Lie/30 Seconds to Mars - From Yesterday.mp3 +C:/Users/Rik/Music/Artists/30 Seconds To Mars/A Beautiful Lie/30 Seconds to Mars - R-Evolve.mp3 +C:/Users/Rik/Music/Artists/30 Seconds To Mars/A Beautiful Lie/30 Seconds to Mars - Savior.mp3 +C:/Users/Rik/Music/Artists/30 Seconds To Mars/A Beautiful Lie/30 Seconds to Mars - The Fantasy.mp3 +C:/Users/Rik/Music/Artists/30 Seconds To Mars/A Beautiful Lie/30 Seconds to Mars - Was It a Dream.mp3 +C:/Users/Rik/Music/Artists/30 Seconds To Mars/This Is War/30 Seconds to Mars - A Call to Arms.mp3 +C:/Users/Rik/Music/Artists/30 Seconds To Mars/This Is War/30 Seconds to Mars - Closer to the Edge.mp3 +C:/Users/Rik/Music/Artists/30 Seconds To Mars/This Is War/30 Seconds to Mars - Equinox.mp3 +C:/Users/Rik/Music/Artists/30 Seconds To Mars/This Is War/30 Seconds to Mars - Escape.mp3 +C:/Users/Rik/Music/Artists/30 Seconds To Mars/This Is War/30 Seconds to Mars - Hurricane.mp3 +C:/Users/Rik/Music/Artists/30 Seconds To Mars/This Is War/30 Seconds to Mars - Kings and Queens.mp3 +C:/Users/Rik/Music/Artists/30 Seconds To Mars/This Is War/30 Seconds to Mars - Night of the Hunter (Flood Remix).mp3 +C:/Users/Rik/Music/Artists/30 Seconds To Mars/This Is War/30 Seconds to Mars - Night of the Hunter.mp3 +C:/Users/Rik/Music/Artists/30 Seconds To Mars/This Is War/30 Seconds to Mars - Search & Destroy.mp3 +C:/Users/Rik/Music/Artists/30 Seconds To Mars/This Is War/30 Seconds to Mars - This Is War.mp3 +C:/Users/Rik/Music/Artists/All Time Low/Nothing Personal/All Time Low - A Party Song (The Walk of Shame).mp3 +C:/Users/Rik/Music/Artists/All Time Low/Nothing Personal/All Time Low - Break Your Little Heart.mp3 +C:/Users/Rik/Music/Artists/All Time Low/Nothing Personal/All Time Low - Damned If I Do Ya (Damned If I Don't).mp3 +C:/Users/Rik/Music/Artists/All Time Low/Nothing Personal/All Time Low - Hello Brooklyn.mp3 +C:/Users/Rik/Music/Artists/All Time Low/Nothing Personal/All Time Low - Keep the Change, You Filthy Animal.mp3 +C:/Users/Rik/Music/Artists/All Time Low/Nothing Personal/All Time Low - Lost In Stereo.mp3 +C:/Users/Rik/Music/Artists/All Time Low/Nothing Personal/All Time Low - Sick Little Games.mp3 +C:/Users/Rik/Music/Artists/All Time Low/Nothing Personal/All Time Low - Stella.mp3 +C:/Users/Rik/Music/Artists/All Time Low/Nothing Personal/All Time Low - Therapy.mp3 +C:/Users/Rik/Music/Artists/All Time Low/Nothing Personal/All Time Low - Too Much.mp3 +C:/Users/Rik/Music/Artists/All Time Low/Nothing Personal/All Time Low - Walls.mp3 +C:/Users/Rik/Music/Artists/All Time Low/Nothing Personal/All Time Low - Weightless.mp3 +C:/Users/Rik/Music/Artists/Anberlin/Dark Is The Way, Light Is A Place/Anberlin - Art of War.mp3 +C:/Users/Rik/Music/Artists/Anberlin/Dark Is The Way, Light Is A Place/Anberlin - Closer.mp3 +C:/Users/Rik/Music/Artists/Anberlin/Dark Is The Way, Light Is A Place/Anberlin - Depraved.mp3 +C:/Users/Rik/Music/Artists/Anberlin/Dark Is The Way, Light Is A Place/Anberlin - Down.mp3 +C:/Users/Rik/Music/Artists/Anberlin/Dark Is The Way, Light Is A Place/Anberlin - Impossible.mp3 +C:/Users/Rik/Music/Artists/Anberlin/Dark Is The Way, Light Is A Place/Anberlin - Pray Tell.mp3 +C:/Users/Rik/Music/Artists/Anberlin/Dark Is The Way, Light Is A Place/Anberlin - Take Me (As You Found Me).mp3 +C:/Users/Rik/Music/Artists/Anberlin/Dark Is The Way, Light Is A Place/Anberlin - To the Wolves.mp3 +C:/Users/Rik/Music/Artists/Anberlin/Dark Is The Way, Light Is A Place/Anberlin - We Owe This to Ourselves.mp3 +C:/Users/Rik/Music/Artists/Anberlin/Dark Is The Way, Light Is A Place/Anberlin - You Belong Here.mp3 +C:/Users/Rik/Music/Artists/Angels & Airwaves/Love/Angels & Airwaves - Clever Love.mp3 +C:/Users/Rik/Music/Artists/Angels & Airwaves/Love/Angels & Airwaves - Epic Holiday.mp3 +C:/Users/Rik/Music/Artists/Angels & Airwaves/Love/Angels & Airwaves - Et Ducit Mundum Per Luce.mp3 +C:/Users/Rik/Music/Artists/Angels & Airwaves/Love/Angels & Airwaves - Hallucinations.mp3 +C:/Users/Rik/Music/Artists/Angels & Airwaves/Love/Angels & Airwaves - Letters to God, Part Ii.mp3 +C:/Users/Rik/Music/Artists/Angels & Airwaves/Love/Angels & Airwaves - Shove.mp3 +C:/Users/Rik/Music/Artists/Angels & Airwaves/Love/Angels & Airwaves - Some Origins of Fire.mp3 +C:/Users/Rik/Music/Artists/Angels & Airwaves/Love/Angels & Airwaves - Soul Survivor (...2012).mp3 +C:/Users/Rik/Music/Artists/Angels & Airwaves/Love/Angels & Airwaves - The Flight of Apollo.mp3 +C:/Users/Rik/Music/Artists/Angels & Airwaves/Love/Angels & Airwaves - The Moon-Atomic (...Fragments and Fictions).mp3 +C:/Users/Rik/Music/Artists/Angels & Airwaves/Love/Angels & Airwaves - Young London.mp3 +C:/Users/Rik/Music/Artists/Arcade Fire/The Suburbs/Arcade Fire - City With No Children.mp3 +C:/Users/Rik/Music/Artists/Arcade Fire/The Suburbs/Arcade Fire - Empty Room.mp3 +C:/Users/Rik/Music/Artists/Arcade Fire/The Suburbs/Arcade Fire - Half Light Ii (No Celebration).mp3 +C:/Users/Rik/Music/Artists/Arcade Fire/The Suburbs/Arcade Fire - Modern Man.mp3 +C:/Users/Rik/Music/Artists/Arcade Fire/The Suburbs/Arcade Fire - Month of May.mp3 +C:/Users/Rik/Music/Artists/Arcade Fire/The Suburbs/Arcade Fire - Suburban War.mp3 +C:/Users/Rik/Music/Artists/Blink-182/Greatest Hits/Blink-182 - Adam's Song.mp3 +C:/Users/Rik/Music/Artists/Blink-182/Greatest Hits/Blink-182 - All the Small Things.mp3 +C:/Users/Rik/Music/Artists/Blink-182/Greatest Hits/Blink-182 - Always.mp3 +C:/Users/Rik/Music/Artists/Blink-182/Greatest Hits/Blink-182 - Another Girl Another Planet.mp3 +C:/Users/Rik/Music/Artists/Blink-182/Greatest Hits/Blink-182 - Carousel.mp3 +C:/Users/Rik/Music/Artists/Blink-182/Greatest Hits/Blink-182 - Dammit.mp3 +C:/Users/Rik/Music/Artists/Blink-182/Greatest Hits/Blink-182 - Down.mp3 +C:/Users/Rik/Music/Artists/Blink-182/Greatest Hits/Blink-182 - Feelin' This.mp3 +C:/Users/Rik/Music/Artists/Blink-182/Greatest Hits/Blink-182 - First Date.mp3 +C:/Users/Rik/Music/Artists/Blink-182/Greatest Hits/Blink-182 - Josie.mp3 +C:/Users/Rik/Music/Artists/Blink-182/Greatest Hits/Blink-182 - M&m's.mp3 +C:/Users/Rik/Music/Artists/Blink-182/Greatest Hits/Blink-182 - Man Overboard (Live).mp3 +C:/Users/Rik/Music/Artists/Blink-182/Greatest Hits/Blink-182 - Miss You.mp3 +C:/Users/Rik/Music/Artists/Blink-182/Greatest Hits/Blink-182 - Not Now.mp3 +C:/Users/Rik/Music/Artists/Blink-182/Greatest Hits/Blink-182 - Rock Show.mp3 +C:/Users/Rik/Music/Artists/Blink-182/Greatest Hits/Blink-182 - Stay Together For the Kids.mp3 +C:/Users/Rik/Music/Artists/Blink-182/Greatest Hits/Blink-182 - What's My Age Again.mp3 +C:/Users/Rik/Music/Artists/Coldplay/Coldplay - Clocks.mp3 +C:/Users/Rik/Music/Artists/Coldplay/Coldplay - In My Place.mp3 +C:/Users/Rik/Music/Artists/Coldplay/Coldplay - Life In Technicolor Ii.mp3 +C:/Users/Rik/Music/Artists/Coldplay/Coldplay - Speed of Sound.mp3 +C:/Users/Rik/Music/Artists/Coldplay/Coldplay - Talk.mp3 +C:/Users/Rik/Music/Artists/Coldplay/Viva la Vida or Death and All His Friends/Coldplay - Life In Technicolor.mp3 +C:/Users/Rik/Music/Artists/Coldplay/Viva la Vida or Death and All His Friends/Coldplay - Lost!.mp3 +C:/Users/Rik/Music/Artists/Coldplay/Viva la Vida or Death and All His Friends/Coldplay - Lovers In Japan Reign of Love.mp3 +C:/Users/Rik/Music/Artists/Coldplay/Viva la Vida or Death and All His Friends/Coldplay - Viva La Vida.mp3 +C:/Users/Rik/Music/Artists/Counting Crows/Counting Crows - Accidentally In Love.mp3 +C:/Users/Rik/Music/Artists/Counting Crows/Films About Ghosts - The Best Of/Counting Crows - American Girls.mp3 +C:/Users/Rik/Music/Artists/Counting Crows/Films About Ghosts - The Best Of/Counting Crows - Angels of the Silences.mp3 +C:/Users/Rik/Music/Artists/Counting Crows/Films About Ghosts - The Best Of/Counting Crows - Big Yellow Taxi.mp3 +C:/Users/Rik/Music/Artists/Counting Crows/Films About Ghosts - The Best Of/Counting Crows - Einstein On the Beach (For An Eggman).mp3 +C:/Users/Rik/Music/Artists/Counting Crows/Films About Ghosts - The Best Of/Counting Crows - Friend of the Devil.mp3 +C:/Users/Rik/Music/Artists/Counting Crows/Films About Ghosts - The Best Of/Counting Crows - Hanginaround.mp3 +C:/Users/Rik/Music/Artists/Counting Crows/Films About Ghosts - The Best Of/Counting Crows - Mr. Jones.mp3 +C:/Users/Rik/Music/Artists/Counting Crows/Films About Ghosts - The Best Of/Counting Crows - Mrs. Potter's Lullaby.mp3 +C:/Users/Rik/Music/Artists/Counting Crows/Films About Ghosts - The Best Of/Counting Crows - Omaha.mp3 +C:/Users/Rik/Music/Artists/Counting Crows/Films About Ghosts - The Best Of/Counting Crows - Rain King.mp3 +C:/Users/Rik/Music/Artists/Counting Crows/Films About Ghosts - The Best Of/Counting Crows - Recovering the Satellites.mp3 +C:/Users/Rik/Music/Artists/Counting Crows/Films About Ghosts - The Best Of/Counting Crows - She Don't Want Nobody Near.mp3 +C:/Users/Rik/Music/Artists/Destine/Lightspeed/Destine - Am I So Blind.mp3 +C:/Users/Rik/Music/Artists/Destine/Lightspeed/Destine - Burn.mp3 +C:/Users/Rik/Music/Artists/Destine/Lightspeed/Destine - California Summer.mp3 +C:/Users/Rik/Music/Artists/Destine/Lightspeed/Destine - Everything In Me.mp3 +C:/Users/Rik/Music/Artists/Destine/Lightspeed/Destine - Forget About Me.mp3 +C:/Users/Rik/Music/Artists/Destine/Lightspeed/Destine - In the End.mp3 +C:/Users/Rik/Music/Artists/Destine/Lightspeed/Destine - In Your Arms.mp3 +C:/Users/Rik/Music/Artists/Destine/Lightspeed/Destine - Sinking Sand.mp3 +C:/Users/Rik/Music/Artists/Destine/Lightspeed/Destine - Spiders.mp3 +C:/Users/Rik/Music/Artists/Destine/Lightspeed/Destine - Stars.mp3 +C:/Users/Rik/Music/Artists/Destine/Lightspeed/Destine - Wake Me.mp3 +C:/Users/Rik/Music/Artists/Destine/Lightspeed/Destine - Where Are You Now.mp3 +C:/Users/Rik/Music/Artists/Di-Rect/Di-Rect - Hungry For Love.mp3 +C:/Users/Rik/Music/Artists/Di-Rect/Di-Rect - She.mp3 +C:/Users/Rik/Music/Artists/Di-Rect/Di-Rect/Di-Rect - A Good Thing.mp3 +C:/Users/Rik/Music/Artists/Di-Rect/Di-Rect/Di-Rect - A Whole New Era.mp3 +C:/Users/Rik/Music/Artists/Di-Rect/Di-Rect/Di-Rect - Break Us In Two.mp3 +C:/Users/Rik/Music/Artists/Di-Rect/Di-Rect/Di-Rect - Bring Down Tomorrow.mp3 +C:/Users/Rik/Music/Artists/Di-Rect/Di-Rect/Di-Rect - Don't Look Back.mp3 +C:/Users/Rik/Music/Artists/Di-Rect/Di-Rect/Di-Rect - I Juct Can't Stand.mp3 +C:/Users/Rik/Music/Artists/Di-Rect/Di-Rect/Di-Rect - It Feels.mp3 +C:/Users/Rik/Music/Artists/Di-Rect/Di-Rect/Di-Rect - Johny.mp3 +C:/Users/Rik/Music/Artists/Di-Rect/Di-Rect/Di-Rect - Lucky.mp3 +C:/Users/Rik/Music/Artists/Di-Rect/Di-Rect/Di-Rect - One Step Closer.mp3 +C:/Users/Rik/Music/Artists/Di-Rect/Di-Rect/Di-Rect - Over and Over.mp3 +C:/Users/Rik/Music/Artists/Di-Rect/Di-Rect/Di-Rect - Someday.mp3 +C:/Users/Rik/Music/Artists/Dropout Year/Best Friends For Never/Dropout Year - A Coming of Age Story.mp3 +C:/Users/Rik/Music/Artists/Dropout Year/Best Friends For Never/Dropout Year - As You Wish.mp3 +C:/Users/Rik/Music/Artists/Dropout Year/Best Friends For Never/Dropout Year - Best Friends For Never.mp3 +C:/Users/Rik/Music/Artists/Dropout Year/Best Friends For Never/Dropout Year - Biggest Fan.mp3 +C:/Users/Rik/Music/Artists/Dropout Year/Best Friends For Never/Dropout Year - Confetti.mp3 +C:/Users/Rik/Music/Artists/Dropout Year/Best Friends For Never/Dropout Year - From Across the Room.mp3 +C:/Users/Rik/Music/Artists/Dropout Year/Best Friends For Never/Dropout Year - It Wasn't Over, It Still Isn't Over.mp3 +C:/Users/Rik/Music/Artists/Fall Out Boy/Folie A Deux/Fall Out Boy - (Coffee's For Closers).mp3 +C:/Users/Rik/Music/Artists/Fall Out Boy/Folie A Deux/Fall Out Boy - 20 Dollar Nose Bleed.mp3 +C:/Users/Rik/Music/Artists/Fall Out Boy/Folie A Deux/Fall Out Boy - 27.mp3 +C:/Users/Rik/Music/Artists/Fall Out Boy/Folie A Deux/Fall Out Boy - America's Suitehearts.mp3 +C:/Users/Rik/Music/Artists/Fall Out Boy/Folie A Deux/Fall Out Boy - Disloyal Order of Water Buffaloes.mp3 +C:/Users/Rik/Music/Artists/Fall Out Boy/Folie A Deux/Fall Out Boy - Headfirst Slide Into Coopestown On a Bad Bet.mp3 +C:/Users/Rik/Music/Artists/Fall Out Boy/Folie A Deux/Fall Out Boy - I Don't Care.mp3 +C:/Users/Rik/Music/Artists/Fall Out Boy/Folie A Deux/Fall Out Boy - She's My Winona.mp3 +C:/Users/Rik/Music/Artists/Fall Out Boy/Folie A Deux/Fall Out Boy - Tiffany Blews.mp3 +C:/Users/Rik/Music/Artists/Fall Out Boy/Folie A Deux/Fall Out Boy - West Coast Smoker.mp3 +C:/Users/Rik/Music/Artists/Fall Out Boy/Folie A Deux/Fall Out Boy - What a Catch, Donnie.mp3 +C:/Users/Rik/Music/Artists/Foo Fighters/Greatest Hits/Foo Fighters - All My Life.mp3 +C:/Users/Rik/Music/Artists/Foo Fighters/Greatest Hits/Foo Fighters - Best of You.mp3 +C:/Users/Rik/Music/Artists/Foo Fighters/Greatest Hits/Foo Fighters - Big Me.mp3 +C:/Users/Rik/Music/Artists/Foo Fighters/Greatest Hits/Foo Fighters - Breakout.mp3 +C:/Users/Rik/Music/Artists/Foo Fighters/Greatest Hits/Foo Fighters - Everlong.mp3 +C:/Users/Rik/Music/Artists/Foo Fighters/Greatest Hits/Foo Fighters - Learn to Fly.mp3 +C:/Users/Rik/Music/Artists/Foo Fighters/Greatest Hits/Foo Fighters - Long Road to Ruin.mp3 +C:/Users/Rik/Music/Artists/Foo Fighters/Greatest Hits/Foo Fighters - Monkey Wrench.mp3 +C:/Users/Rik/Music/Artists/Foo Fighters/Greatest Hits/Foo Fighters - My Hero.mp3 +C:/Users/Rik/Music/Artists/Foo Fighters/Greatest Hits/Foo Fighters - The Pretender.mp3 +C:/Users/Rik/Music/Artists/Foo Fighters/Greatest Hits/Foo Fighters - This Is a Call.mp3 +C:/Users/Rik/Music/Artists/Foo Fighters/Greatest Hits/Foo Fighters - Times Like These.mp3 +C:/Users/Rik/Music/Artists/Foo Fighters/Greatest Hits/Foo Fighters - Wheels.mp3 +C:/Users/Rik/Music/Artists/Foo Fighters/Greatest Hits/Foo Fighters - Word Forward.mp3 +C:/Users/Rik/Music/Artists/Foo Fighters/Wasting Light/Foo Fighters - A Matter of Time.mp3 +C:/Users/Rik/Music/Artists/Foo Fighters/Wasting Light/Foo Fighters - Arlandria.mp3 +C:/Users/Rik/Music/Artists/Foo Fighters/Wasting Light/Foo Fighters - Back & Forth.mp3 +C:/Users/Rik/Music/Artists/Foo Fighters/Wasting Light/Foo Fighters - Bridge Burning.mp3 +C:/Users/Rik/Music/Artists/Foo Fighters/Wasting Light/Foo Fighters - Dear Rosemary.mp3 +C:/Users/Rik/Music/Artists/Foo Fighters/Wasting Light/Foo Fighters - Miss the Misery.mp3 +C:/Users/Rik/Music/Artists/Foo Fighters/Wasting Light/Foo Fighters - Rope.mp3 +C:/Users/Rik/Music/Artists/Foo Fighters/Wasting Light/Foo Fighters - These Days.mp3 +C:/Users/Rik/Music/Artists/Foo Fighters/Wasting Light/Foo Fighters - Walk.mp3 +C:/Users/Rik/Music/Artists/Go Back To The Zoo/Benny Blisto/Go Back to the Zoo - Beam Me Up.mp3 +C:/Users/Rik/Music/Artists/Go Back To The Zoo/Benny Blisto/Go Back to the Zoo - Electric.mp3 +C:/Users/Rik/Music/Artists/Go Back To The Zoo/Benny Blisto/Go Back to the Zoo - Fuck You.mp3 +C:/Users/Rik/Music/Artists/Go Back To The Zoo/Benny Blisto/Go Back to the Zoo - Hey Dj.mp3 +C:/Users/Rik/Music/Artists/Go Back To The Zoo/Benny Blisto/Go Back to the Zoo - I Lov It.mp3 +C:/Users/Rik/Music/Artists/Go Back To The Zoo/Benny Blisto/Go Back to the Zoo - I'm the Night (See You Later).mp3 +C:/Users/Rik/Music/Artists/Go Back To The Zoo/Benny Blisto/Go Back to the Zoo - Nicer.mp3 +C:/Users/Rik/Music/Artists/Go Back To The Zoo/Benny Blisto/Go Back to the Zoo - Oh No (We Stayed).mp3 +C:/Users/Rik/Music/Artists/Go Back To The Zoo/Benny Blisto/Go Back to the Zoo - Sweet World.mp3 +C:/Users/Rik/Music/Artists/Good Charlotte/Cardiology/Good Charlotte - 1979.mp3 +C:/Users/Rik/Music/Artists/Good Charlotte/Cardiology/Good Charlotte - Alive.mp3 +C:/Users/Rik/Music/Artists/Good Charlotte/Cardiology/Good Charlotte - Cardiology.mp3 +C:/Users/Rik/Music/Artists/Good Charlotte/Cardiology/Good Charlotte - Counting the Days.mp3 +C:/Users/Rik/Music/Artists/Good Charlotte/Cardiology/Good Charlotte - Harlow's Song (Can't Dream Without You).mp3 +C:/Users/Rik/Music/Artists/Good Charlotte/Cardiology/Good Charlotte - Interlude (The Fifth Chamber).mp3 +C:/Users/Rik/Music/Artists/Good Charlotte/Cardiology/Good Charlotte - Introduction to Cardiology.mp3 +C:/Users/Rik/Music/Artists/Good Charlotte/Cardiology/Good Charlotte - Last Night.mp3 +C:/Users/Rik/Music/Artists/Good Charlotte/Cardiology/Good Charlotte - Let the Music Play.mp3 +C:/Users/Rik/Music/Artists/Good Charlotte/Cardiology/Good Charlotte - Like It's Her Birthday.mp3 +C:/Users/Rik/Music/Artists/Good Charlotte/Cardiology/Good Charlotte - Right Where I Belong.mp3 +C:/Users/Rik/Music/Artists/Good Charlotte/Cardiology/Good Charlotte - Sex On the Radio.mp3 +C:/Users/Rik/Music/Artists/Good Charlotte/Cardiology/Good Charlotte - Silver Screen Romance.mp3 +C:/Users/Rik/Music/Artists/Good Charlotte/Cardiology/Good Charlotte - Standing Ovation.mp3 +C:/Users/Rik/Music/Artists/Good Charlotte/Cardiology/Good Charlotte - There She Goes.mp3 +C:/Users/Rik/Music/Artists/Green Day/21st Century Breakdown/Green Day - 21 Guns.mp3 +C:/Users/Rik/Music/Artists/Green Day/21st Century Breakdown/Green Day - 21st Century Breakdown.mp3 +C:/Users/Rik/Music/Artists/Green Day/21st Century Breakdown/Green Day - American Eulogy.mp3 +C:/Users/Rik/Music/Artists/Green Day/21st Century Breakdown/Green Day - Before the Lobotomy.mp3 +C:/Users/Rik/Music/Artists/Green Day/21st Century Breakdown/Green Day - Christian's Inferno.mp3 +C:/Users/Rik/Music/Artists/Green Day/21st Century Breakdown/Green Day - East Jesus Nowhere.mp3 +C:/Users/Rik/Music/Artists/Green Day/21st Century Breakdown/Green Day - Horseshoes and Handgrenades.mp3 +C:/Users/Rik/Music/Artists/Green Day/21st Century Breakdown/Green Day - Know Your Enemy.mp3 +C:/Users/Rik/Music/Artists/Green Day/21st Century Breakdown/Green Day - Last Night On Earth.mp3 +C:/Users/Rik/Music/Artists/Green Day/21st Century Breakdown/Green Day - Last of the American Girls.mp3 +C:/Users/Rik/Music/Artists/Green Day/21st Century Breakdown/Green Day - Murder City.mp3 +C:/Users/Rik/Music/Artists/Green Day/21st Century Breakdown/Green Day - Peacemaker.mp3 +C:/Users/Rik/Music/Artists/Green Day/21st Century Breakdown/Green Day - Restless Heart Syndrome.mp3 +C:/Users/Rik/Music/Artists/Green Day/21st Century Breakdown/Green Day - See the Light.mp3 +C:/Users/Rik/Music/Artists/Green Day/21st Century Breakdown/Green Day - The Static Age.mp3 +C:/Users/Rik/Music/Artists/Green Day/21st Century Breakdown/Green Day - Viva La Gloria (Little Girl).mp3 +C:/Users/Rik/Music/Artists/Green Day/American Idiot/Green Day - American Idiot.mp3 +C:/Users/Rik/Music/Artists/Green Day/American Idiot/Green Day - Are We the Waiting.mp3 +C:/Users/Rik/Music/Artists/Green Day/American Idiot/Green Day - Boulevard of Broken Dreams.mp3 +C:/Users/Rik/Music/Artists/Green Day/American Idiot/Green Day - Extraordinary Girl.mp3 +C:/Users/Rik/Music/Artists/Green Day/American Idiot/Green Day - Give Me Novacaine.mp3 +C:/Users/Rik/Music/Artists/Green Day/American Idiot/Green Day - Holiday.mp3 +C:/Users/Rik/Music/Artists/Green Day/American Idiot/Green Day - Homecoming.mp3 +C:/Users/Rik/Music/Artists/Green Day/American Idiot/Green Day - Jesus of Suburbia.mp3 +C:/Users/Rik/Music/Artists/Green Day/American Idiot/Green Day - Letterbomb.mp3 +C:/Users/Rik/Music/Artists/Green Day/American Idiot/Green Day - She's a Rebel.mp3 +C:/Users/Rik/Music/Artists/Green Day/American Idiot/Green Day - St. Jimmy.mp3 +C:/Users/Rik/Music/Artists/Green Day/American Idiot/Green Day - Wake Me Up When September Ends.mp3 +C:/Users/Rik/Music/Artists/Green Day/American Idiot/Green Day - Whatsername.mp3 +C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - All the Time.mp3 +C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - Armatage Shanks.mp3 +C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - Bascet Case.mp3 +C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - Brat.mp3 +C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - Burnout.mp3 +C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - Chump.mp3 +C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - Church On Sunday.mp3 +C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - Coming Clean.mp3 +C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - Desensitized.mp3 +C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - Emenius Sleepus.mp3 +C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - Fashion Victim.mp3 +C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - Geek Stink Breath.mp3 +C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - Good Riddance (Time of Your Life).mp3 +C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - In the End.mp3 +C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - J.A.R. (Jason Andrew Relva).mp3 +C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - Jaded.mp3 +C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - Maria.mp3 +C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - Nice Guys Finish Last.mp3 +C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - Poprocks & Coke.mp3 +C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - Redundant.mp3 +C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - Scumbag.mp3 +C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - She.mp3 +C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - Stuck With Me.mp3 +C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - Suffocate.mp3 +C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - The Grouch.mp3 +C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - The Saints Are Coming.mp3 +C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - Waiting.mp3 +C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - Walking Alone.mp3 +C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - Walking Contradiction.mp3 +C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - Warning.mp3 +C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - Welcome to Paradise.mp3 +C:/Users/Rik/Music/Artists/Kaiser Chiefs/Off With Their Heads/Kaiser Chiefs - Addicted to Drugs.mp3 +C:/Users/Rik/Music/Artists/Kaiser Chiefs/Off With Their Heads/Kaiser Chiefs - Always Happens Like That.mp3 +C:/Users/Rik/Music/Artists/Kaiser Chiefs/Off With Their Heads/Kaiser Chiefs - Can't Say What I Mean.mp3 +C:/Users/Rik/Music/Artists/Kaiser Chiefs/Off With Their Heads/Kaiser Chiefs - Good Days Bad Days.mp3 +C:/Users/Rik/Music/Artists/Kaiser Chiefs/Off With Their Heads/Kaiser Chiefs - Half the Truth.mp3 +C:/Users/Rik/Music/Artists/Kaiser Chiefs/Off With Their Heads/Kaiser Chiefs - Like It Too Much.mp3 +C:/Users/Rik/Music/Artists/Kaiser Chiefs/Off With Their Heads/Kaiser Chiefs - Never Miss a Beat.mp3 +C:/Users/Rik/Music/Artists/Kaiser Chiefs/Off With Their Heads/Kaiser Chiefs - Spanish Metal.mp3 +C:/Users/Rik/Music/Artists/Kaiser Chiefs/Off With Their Heads/Kaiser Chiefs - Tomato In the Rain.mp3 +C:/Users/Rik/Music/Artists/Kaiser Chiefs/Off With Their Heads/Kaiser Chiefs - You Want History.mp3 +C:/Users/Rik/Music/Artists/Kaiser Chiefs/Yours Truly, Angry Mob/Kaiser Chiefs - Boxing Champ.mp3 +C:/Users/Rik/Music/Artists/Kaiser Chiefs/Yours Truly, Angry Mob/Kaiser Chiefs - Everything Is Average Nowadays.mp3 +C:/Users/Rik/Music/Artists/Kaiser Chiefs/Yours Truly, Angry Mob/Kaiser Chiefs - Heat Dies Down.mp3 +C:/Users/Rik/Music/Artists/Kaiser Chiefs/Yours Truly, Angry Mob/Kaiser Chiefs - Highroyds.mp3 +C:/Users/Rik/Music/Artists/Kaiser Chiefs/Yours Truly, Angry Mob/Kaiser Chiefs - I Can Do Without You.mp3 +C:/Users/Rik/Music/Artists/Kaiser Chiefs/Yours Truly, Angry Mob/Kaiser Chiefs - Learnt My Lesson Well.mp3 +C:/Users/Rik/Music/Artists/Kaiser Chiefs/Yours Truly, Angry Mob/Kaiser Chiefs - Love's Not a Competition (But I'm Winning).mp3 +C:/Users/Rik/Music/Artists/Kaiser Chiefs/Yours Truly, Angry Mob/Kaiser Chiefs - My Kind of Guy.mp3 +C:/Users/Rik/Music/Artists/Kaiser Chiefs/Yours Truly, Angry Mob/Kaiser Chiefs - Retirement.mp3 +C:/Users/Rik/Music/Artists/Kaiser Chiefs/Yours Truly, Angry Mob/Kaiser Chiefs - Ruby.mp3 +C:/Users/Rik/Music/Artists/Kaiser Chiefs/Yours Truly, Angry Mob/Kaiser Chiefs - Thank You Very Much.mp3 +C:/Users/Rik/Music/Artists/Kaiser Chiefs/Yours Truly, Angry Mob/Kaiser Chiefs - The Angry Mob.mp3 +C:/Users/Rik/Music/Artists/Kaiser Chiefs/Yours Truly, Angry Mob/Kaiser Chiefs - Try Your Best.mp3 +C:/Users/Rik/Music/Artists/Keane/Keane - Everybody's Changing.mp3 +C:/Users/Rik/Music/Artists/Keane/Keane - Is It Any Wonder.mp3 +C:/Users/Rik/Music/Artists/Keane/Keane - Somewhere Only We Know.mp3 +C:/Users/Rik/Music/Artists/Keane/Keane - This Is the Last Time.mp3 +C:/Users/Rik/Music/Artists/Keane/Perfect Symmetry/Keane - Again & Again.mp3 +C:/Users/Rik/Music/Artists/Keane/Perfect Symmetry/Keane - Better Than This.mp3 +C:/Users/Rik/Music/Artists/Keane/Perfect Symmetry/Keane - Black Burning Heart.mp3 +C:/Users/Rik/Music/Artists/Keane/Perfect Symmetry/Keane - Lovers Are Losing.mp3 +C:/Users/Rik/Music/Artists/Keane/Perfect Symmetry/Keane - Perfect Symmetry.mp3 +C:/Users/Rik/Music/Artists/Keane/Perfect Symmetry/Keane - Playing Along.mp3 +C:/Users/Rik/Music/Artists/Keane/Perfect Symmetry/Keane - Pretend That You're Alone.mp3 +C:/Users/Rik/Music/Artists/Keane/Perfect Symmetry/Keane - Spiralling.mp3 +C:/Users/Rik/Music/Artists/Keane/Perfect Symmetry/Keane - You Don't See Me.mp3 +C:/Users/Rik/Music/Artists/Kensington/Borders/Kensington - All That I Know.mp3 +C:/Users/Rik/Music/Artists/Kensington/Borders/Kensington - Franklin Exits.mp3 +C:/Users/Rik/Music/Artists/Kensington/Borders/Kensington - I Was Too Scared.mp3 +C:/Users/Rik/Music/Artists/Kensington/Borders/Kensington - Not As Bright.mp3 +C:/Users/Rik/Music/Artists/Kensington/Borders/Kensington - So Am I.mp3 +C:/Users/Rik/Music/Artists/Kensington/Borders/Kensington - The Heart of It.mp3 +C:/Users/Rik/Music/Artists/Kensington/Borders/Kensington - Thieves and Murderers.mp3 +C:/Users/Rik/Music/Artists/Kensington/Borders/Kensington - Waiting For a Sign.mp3 +C:/Users/Rik/Music/Artists/Kensington/Borders/Kensington - What's Gotten Into Us.mp3 +C:/Users/Rik/Music/Artists/Kensington/Borders/Kensington - When It All Falls Down.mp3 +C:/Users/Rik/Music/Artists/Kensington/Borders/Kensington - Youth.mp3 +C:/Users/Rik/Music/Artists/Kings of Leon/Come Around Sundown/Kings of Leon - Back Down South.mp3 +C:/Users/Rik/Music/Artists/Kings of Leon/Come Around Sundown/Kings of Leon - Beach Side.mp3 +C:/Users/Rik/Music/Artists/Kings of Leon/Come Around Sundown/Kings of Leon - Birthday.mp3 +C:/Users/Rik/Music/Artists/Kings of Leon/Come Around Sundown/Kings of Leon - Mary.mp3 +C:/Users/Rik/Music/Artists/Kings of Leon/Come Around Sundown/Kings of Leon - Mi Amigo.mp3 +C:/Users/Rik/Music/Artists/Kings of Leon/Come Around Sundown/Kings of Leon - No Money.mp3 +C:/Users/Rik/Music/Artists/Kings of Leon/Come Around Sundown/Kings of Leon - Pickup Truck.mp3 +C:/Users/Rik/Music/Artists/Kings of Leon/Come Around Sundown/Kings of Leon - Pony Up.mp3 +C:/Users/Rik/Music/Artists/Kings of Leon/Come Around Sundown/Kings of Leon - Pyro.mp3 +C:/Users/Rik/Music/Artists/Kings of Leon/Come Around Sundown/Kings of Leon - Radioactive.mp3 +C:/Users/Rik/Music/Artists/Kings of Leon/Come Around Sundown/Kings of Leon - The End.mp3 +C:/Users/Rik/Music/Artists/Kings of Leon/Come Around Sundown/Kings of Leon - The Face.mp3 +C:/Users/Rik/Music/Artists/Kings of Leon/Come Around Sundown/Kings of Leon - The Immortals.mp3 +C:/Users/Rik/Music/Artists/Kings of Leon/Only By The Night/Kings of Leon - Be Somebody.mp3 +C:/Users/Rik/Music/Artists/Kings of Leon/Only By The Night/Kings of Leon - Closer.mp3 +C:/Users/Rik/Music/Artists/Kings of Leon/Only By The Night/Kings of Leon - Crawl.mp3 +C:/Users/Rik/Music/Artists/Kings of Leon/Only By The Night/Kings of Leon - I Want You.mp3 +C:/Users/Rik/Music/Artists/Kings of Leon/Only By The Night/Kings of Leon - Manhattan.mp3 +C:/Users/Rik/Music/Artists/Kings of Leon/Only By The Night/Kings of Leon - Notion.mp3 +C:/Users/Rik/Music/Artists/Kings of Leon/Only By The Night/Kings of Leon - Sex On Fire.mp3 +C:/Users/Rik/Music/Artists/Kings of Leon/Only By The Night/Kings of Leon - Use Somebody.mp3 +C:/Users/Rik/Music/Artists/Lifehouse/Smoke & Mirrors/Lifehouse - All In.mp3 +C:/Users/Rik/Music/Artists/Lifehouse/Smoke & Mirrors/Lifehouse - All That I'm Asking For.mp3 +C:/Users/Rik/Music/Artists/Lifehouse/Smoke & Mirrors/Lifehouse - By Your Side.mp3 +C:/Users/Rik/Music/Artists/Lifehouse/Smoke & Mirrors/Lifehouse - Crash and Burn.mp3 +C:/Users/Rik/Music/Artists/Lifehouse/Smoke & Mirrors/Lifehouse - Falling In.mp3 +C:/Users/Rik/Music/Artists/Lifehouse/Smoke & Mirrors/Lifehouse - From Where You Are.mp3 +C:/Users/Rik/Music/Artists/Lifehouse/Smoke & Mirrors/Lifehouse - Had Enough.mp3 +C:/Users/Rik/Music/Artists/Lifehouse/Smoke & Mirrors/Lifehouse - Halfway Gone.mp3 +C:/Users/Rik/Music/Artists/Lifehouse/Smoke & Mirrors/Lifehouse - In Your Skin.mp3 +C:/Users/Rik/Music/Artists/Lifehouse/Smoke & Mirrors/Lifehouse - It Is What It Is.mp3 +C:/Users/Rik/Music/Artists/Lifehouse/Smoke & Mirrors/Lifehouse - Smoke & Mirrors.mp3 +C:/Users/Rik/Music/Artists/Lifehouse/Smoke & Mirrors/Lifehouse - Wrecking Ball.mp3 +C:/Users/Rik/Music/Artists/Lifehouse/Who We Are/Lifehouse - Bridges.mp3 +C:/Users/Rik/Music/Artists/Lifehouse/Who We Are/Lifehouse - Disarray.mp3 +C:/Users/Rik/Music/Artists/Lifehouse/Who We Are/Lifehouse - Easier to Be.mp3 +C:/Users/Rik/Music/Artists/Lifehouse/Who We Are/Lifehouse - First Time.mp3 +C:/Users/Rik/Music/Artists/Lifehouse/Who We Are/Lifehouse - Learn You Inside Out.mp3 +C:/Users/Rik/Music/Artists/Lifehouse/Who We Are/Lifehouse - Make Me Over.mp3 +C:/Users/Rik/Music/Artists/Lifehouse/Who We Are/Lifehouse - Mesmerized.mp3 +C:/Users/Rik/Music/Artists/Lifehouse/Who We Are/Lifehouse - Storm.mp3 +C:/Users/Rik/Music/Artists/Lifehouse/Who We Are/Lifehouse - Whatever It Takes.mp3 +C:/Users/Rik/Music/Artists/Lifehouse/Who We Are/Lifehouse - Who We Are.mp3 +C:/Users/Rik/Music/Artists/Linking Park/Hybrid Theory/Linkin Park - A Place For My Head.mp3 +C:/Users/Rik/Music/Artists/Linking Park/Hybrid Theory/Linkin Park - Crawling.mp3 +C:/Users/Rik/Music/Artists/Linking Park/Hybrid Theory/Linkin Park - Forgotten.mp3 +C:/Users/Rik/Music/Artists/Linking Park/Hybrid Theory/Linkin Park - In the End.mp3 +C:/Users/Rik/Music/Artists/Linking Park/Hybrid Theory/Linkin Park - One Step Closer.mp3 +C:/Users/Rik/Music/Artists/Linking Park/Hybrid Theory/Linkin Park - Papercut.mp3 +C:/Users/Rik/Music/Artists/Linking Park/Hybrid Theory/Linkin Park - Points of Authority.mp3 +C:/Users/Rik/Music/Artists/Linking Park/Hybrid Theory/Linkin Park - Pushing Me Away.mp3 +C:/Users/Rik/Music/Artists/Linking Park/Hybrid Theory/Linkin Park - Runaway.mp3 +C:/Users/Rik/Music/Artists/Linking Park/Hybrid Theory/Linkin Park - With You.mp3 +C:/Users/Rik/Music/Artists/Lostprophets/Liberation Transmission/Lostprophets - 4am Forever.mp3 +C:/Users/Rik/Music/Artists/Lostprophets/Liberation Transmission/Lostprophets - A Town Called Hypocrisy.mp3 +C:/Users/Rik/Music/Artists/Lostprophets/Liberation Transmission/Lostprophets - Always All Ways (Apologies, Glances and Messed Up Chances).mp3 +C:/Users/Rik/Music/Artists/Lostprophets/Liberation Transmission/Lostprophets - Broken Hearts, Torn Up Letters and the Story of a Lonely Girl.mp3 +C:/Users/Rik/Music/Artists/Lostprophets/Liberation Transmission/Lostprophets - Can't Catch Tomorrow (Good Shoes Won't Save You This Time).mp3 +C:/Users/Rik/Music/Artists/Lostprophets/Liberation Transmission/Lostprophets - Can't Stop, Gotta Date With Hate.mp3 +C:/Users/Rik/Music/Artists/Lostprophets/Liberation Transmission/Lostprophets - Everybody's Screaming !!!.mp3 +C:/Users/Rik/Music/Artists/Lostprophets/Liberation Transmission/Lostprophets - Everyday Combat.mp3 +C:/Users/Rik/Music/Artists/Lostprophets/Liberation Transmission/Lostprophets - For All These Times Son, For All These Times.mp3 +C:/Users/Rik/Music/Artists/Lostprophets/Liberation Transmission/Lostprophets - Heaven For the Weather, Hell For the Company.mp3 +C:/Users/Rik/Music/Artists/Lostprophets/Liberation Transmission/Lostprophets - Rooftops (A Liberation Broadcast).mp3 +C:/Users/Rik/Music/Artists/Lostprophets/Liberation Transmission/Lostprophets - The New Transmission.mp3 +C:/Users/Rik/Music/Artists/Matchbook Romance/Voices/Matchbook Romance - Goody, Like Two Shoes.mp3 +C:/Users/Rik/Music/Artists/Matchbook Romance/Voices/Matchbook Romance - Monsters.mp3 +C:/Users/Rik/Music/Artists/Matchbook Romance/Voices/Matchbook Romance - My Mannequin Can Dance.mp3 +C:/Users/Rik/Music/Artists/Matchbook Romance/Voices/Matchbook Romance - Portrait.mp3 +C:/Users/Rik/Music/Artists/Matchbook Romance/Voices/Matchbook Romance - Singing Bridges (We All Fall).mp3 +C:/Users/Rik/Music/Artists/Matchbook Romance/Voices/Matchbook Romance - Surrender.mp3 +C:/Users/Rik/Music/Artists/Matchbook Romance/Voices/Matchbook Romance - What a Sight.mp3 +C:/Users/Rik/Music/Artists/Neon Trees/Habits/Neon Trees - 1983.mp3 +C:/Users/Rik/Music/Artists/Neon Trees/Habits/Neon Trees - Animal.mp3 +C:/Users/Rik/Music/Artists/Neon Trees/Habits/Neon Trees - In the Next Room.mp3 +C:/Users/Rik/Music/Artists/Neon Trees/Habits/Neon Trees - Sins of My Youth.mp3 +C:/Users/Rik/Music/Artists/Neon Trees/Habits/Neon Trees - Your Surrender.mp3 +C:/Users/Rik/Music/Artists/Nickelback/Dark Horse/Nickelback - Gotta Be Somebody.mp3 +C:/Users/Rik/Music/Artists/Nickelback/Dark Horse/Nickelback - I'd Come For You.mp3 +C:/Users/Rik/Music/Artists/Nickelback/Dark Horse/Nickelback - If Today Was Your Last Day.mp3 +C:/Users/Rik/Music/Artists/Nickelback/Dark Horse/Nickelback - Just to Get High.mp3 +C:/Users/Rik/Music/Artists/Nickelback/Dark Horse/Nickelback - Never Gonna Be Alone.mp3 +C:/Users/Rik/Music/Artists/Nickelback/Dark Horse/Nickelback - This Afternoon.mp3 +C:/Users/Rik/Music/Artists/Nickelback/Nickelback - How You Remind Me.mp3 +C:/Users/Rik/Music/Artists/Nickelback/Nickelback - Photograph.mp3 +C:/Users/Rik/Music/Artists/OneRepublic/Waking Up/Onerepublic - All the Right Moves.mp3 +C:/Users/Rik/Music/Artists/OneRepublic/Waking Up/Onerepublic - Fear.mp3 +C:/Users/Rik/Music/Artists/OneRepublic/Waking Up/Onerepublic - Good Life.mp3 +C:/Users/Rik/Music/Artists/OneRepublic/Waking Up/Onerepublic - Secrets.mp3 +C:/Users/Rik/Music/Artists/Plain White T's/All That We Needed/Plain White T's - All That We Needed.mp3 +C:/Users/Rik/Music/Artists/Plain White T's/All That We Needed/Plain White T's - Anything.mp3 +C:/Users/Rik/Music/Artists/Plain White T's/All That We Needed/Plain White T's - Breakdown.mp3 +C:/Users/Rik/Music/Artists/Plain White T's/All That We Needed/Plain White T's - Faster.mp3 +C:/Users/Rik/Music/Artists/Plain White T's/All That We Needed/Plain White T's - Last Call.mp3 +C:/Users/Rik/Music/Artists/Plain White T's/All That We Needed/Plain White T's - Lazy Day Afternoon.mp3 +C:/Users/Rik/Music/Artists/Plain White T's/All That We Needed/Plain White T's - My Only One.mp3 +C:/Users/Rik/Music/Artists/Plain White T's/All That We Needed/Plain White T's - Revenge.mp3 +C:/Users/Rik/Music/Artists/Plain White T's/All That We Needed/Plain White T's - Sad Story.mp3 +C:/Users/Rik/Music/Artists/Plain White T's/All That We Needed/Plain White T's - Sing My Best.mp3 +C:/Users/Rik/Music/Artists/Plain White T's/All That We Needed/Plain White T's - Take Me Away.mp3 +C:/Users/Rik/Music/Artists/Plain White T's/All That We Needed/Plain White T's - What More Do You Want.mp3 +C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Greatest Hits/Red Hot Chili Peppers - Breaking the Girl.mp3 +C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Greatest Hits/Red Hot Chili Peppers - By the Way.mp3 +C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Greatest Hits/Red Hot Chili Peppers - Californication.mp3 +C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Greatest Hits/Red Hot Chili Peppers - Fortune Faded.mp3 +C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Greatest Hits/Red Hot Chili Peppers - Give It Away.mp3 +C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Greatest Hits/Red Hot Chili Peppers - Higher Ground.mp3 +C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Greatest Hits/Red Hot Chili Peppers - My Friends.mp3 +C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Greatest Hits/Red Hot Chili Peppers - Otherside.mp3 +C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Greatest Hits/Red Hot Chili Peppers - Parallel Universe.mp3 +C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Greatest Hits/Red Hot Chili Peppers - Save the Population.mp3 +C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Greatest Hits/Red Hot Chili Peppers - Scar Tissue.mp3 +C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Greatest Hits/Red Hot Chili Peppers - Soul to Squeeze.mp3 +C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Greatest Hits/Red Hot Chili Peppers - Under the Bridge.mp3 +C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Greatest Hits/Red Hot Chili Peppers - Universally Speaking.mp3 +C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Stadium Arcadium/Red Hot Chili Peppers - Animal Bar.mp3 +C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Stadium Arcadium/Red Hot Chili Peppers - Charlie.mp3 +C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Stadium Arcadium/Red Hot Chili Peppers - C'mon Girl.mp3 +C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Stadium Arcadium/Red Hot Chili Peppers - Dani California.mp3 +C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Stadium Arcadium/Red Hot Chili Peppers - Death of a Martian.mp3 +C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Stadium Arcadium/Red Hot Chili Peppers - Desecration Smile.mp3 +C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Stadium Arcadium/Red Hot Chili Peppers - Especially In Michigan.mp3 +C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Stadium Arcadium/Red Hot Chili Peppers - Hard to Concentrate.mp3 +C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Stadium Arcadium/Red Hot Chili Peppers - Hey.mp3 +C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Stadium Arcadium/Red Hot Chili Peppers - If.mp3 +C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Stadium Arcadium/Red Hot Chili Peppers - Make You Feel Better.mp3 +C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Stadium Arcadium/Red Hot Chili Peppers - She Looks to Me.mp3 +C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Stadium Arcadium/Red Hot Chili Peppers - She's Only 18.mp3 +C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Stadium Arcadium/Red Hot Chili Peppers - Slow Cheetah.mp3 +C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Stadium Arcadium/Red Hot Chili Peppers - Snow (Hey Oh).mp3 +C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Stadium Arcadium/Red Hot Chili Peppers - So Much I.mp3 +C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Stadium Arcadium/Red Hot Chili Peppers - Stadium Arcadium.mp3 +C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Stadium Arcadium/Red Hot Chili Peppers - Storm In a Teacup.mp3 +C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Stadium Arcadium/Red Hot Chili Peppers - Strip My Mind.mp3 +C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Stadium Arcadium/Red Hot Chili Peppers - Tell Me Baby.mp3 +C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Stadium Arcadium/Red Hot Chili Peppers - Torture Me.mp3 +C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Stadium Arcadium/Red Hot Chili Peppers - Turn It Again.mp3 +C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Stadium Arcadium/Red Hot Chili Peppers - Warlocks.mp3 +C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Stadium Arcadium/Red Hot Chili Peppers - We Believe.mp3 +C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Stadium Arcadium/Red Hot Chili Peppers - Wet Sand.mp3 +C:/Users/Rik/Music/Artists/Rooney/Calling The World/Rooney - All In Your Head.mp3 +C:/Users/Rik/Music/Artists/Rooney/Calling The World/Rooney - Are You Afraid.mp3 +C:/Users/Rik/Music/Artists/Rooney/Calling The World/Rooney - Believe In Me.mp3 +C:/Users/Rik/Music/Artists/Rooney/Calling The World/Rooney - Calling the World.mp3 +C:/Users/Rik/Music/Artists/Rooney/Calling The World/Rooney - Don't Come Around Again.mp3 +C:/Users/Rik/Music/Artists/Rooney/Calling The World/Rooney - I Should've Been After You.mp3 +C:/Users/Rik/Music/Artists/Rooney/Calling The World/Rooney - Love Me Or Leave Me.mp3 +C:/Users/Rik/Music/Artists/Rooney/Calling The World/Rooney - Paralyzed.mp3 +C:/Users/Rik/Music/Artists/Rooney/Calling The World/Rooney - What For.mp3 +C:/Users/Rik/Music/Artists/Savage Garden/Savage Garden/Savage Garden - A Thousand Words.mp3 +C:/Users/Rik/Music/Artists/Savage Garden/Savage Garden/Savage Garden - Break Me Shake Me.mp3 +C:/Users/Rik/Music/Artists/Savage Garden/Savage Garden/Savage Garden - Carry On Dancing.mp3 +C:/Users/Rik/Music/Artists/Savage Garden/Savage Garden/Savage Garden - I Want You.mp3 +C:/Users/Rik/Music/Artists/Savage Garden/Savage Garden/Savage Garden - To the Moon and Back.mp3 +C:/Users/Rik/Music/Artists/Savage Garden/Savage Garden/Savage Garden - Truly Madly Deeply.mp3 +C:/Users/Rik/Music/Artists/Savage Garden/Savage Garden/Savage Garden - Violet.mp3 +C:/Users/Rik/Music/Artists/Simple Plan/Simple Plan/Simple Plan - Generation.mp3 +C:/Users/Rik/Music/Artists/Simple Plan/Simple Plan/Simple Plan - I Can Wait Forever.mp3 +C:/Users/Rik/Music/Artists/Simple Plan/Simple Plan/Simple Plan - No Love.mp3 +C:/Users/Rik/Music/Artists/Simple Plan/Simple Plan/Simple Plan - Running Out of Time.mp3 +C:/Users/Rik/Music/Artists/Simple Plan/Simple Plan/Simple Plan - Save You.mp3 +C:/Users/Rik/Music/Artists/Simple Plan/Simple Plan/Simple Plan - Take My Hand.mp3 +C:/Users/Rik/Music/Artists/Simple Plan/Simple Plan/Simple Plan - The End.mp3 +C:/Users/Rik/Music/Artists/Simple Plan/Simple Plan/Simple Plan - Time to Say Goodbye.mp3 +C:/Users/Rik/Music/Artists/Simple Plan/Simple Plan/Simple Plan - What If.mp3 +C:/Users/Rik/Music/Artists/Simple Plan/Simple Plan/Simple Plan - When I'm Gone (Acoustic).mp3 +C:/Users/Rik/Music/Artists/Simple Plan/Simple Plan/Simple Plan - When I'm Gone.mp3 +C:/Users/Rik/Music/Artists/Simple Plan/Simple Plan/Simple Plan - Your Love Is a Lie.mp3 +C:/Users/Rik/Music/Artists/Snow Patrol/A Hundred Million Suns/Snow Patrol - Crack the Shutters.mp3 +C:/Users/Rik/Music/Artists/Snow Patrol/A Hundred Million Suns/Snow Patrol - Disaster Button.mp3 +C:/Users/Rik/Music/Artists/Snow Patrol/A Hundred Million Suns/Snow Patrol - Engines.mp3 +C:/Users/Rik/Music/Artists/Snow Patrol/A Hundred Million Suns/Snow Patrol - If There's a Rocket Tie Me to It.mp3 +C:/Users/Rik/Music/Artists/Snow Patrol/A Hundred Million Suns/Snow Patrol - Please Just Take These Photos From My Hands.mp3 +C:/Users/Rik/Music/Artists/Snow Patrol/A Hundred Million Suns/Snow Patrol - Take Back the City.mp3 +C:/Users/Rik/Music/Artists/Snow Patrol/Eyes Open/Snow Patrol - Chasing Cars.mp3 +C:/Users/Rik/Music/Artists/Snow Patrol/Eyes Open/Snow Patrol - Hands Open .mp3 +C:/Users/Rik/Music/Artists/Snow Patrol/Eyes Open/Snow Patrol - Headlights On Dark Roads.mp3 +C:/Users/Rik/Music/Artists/Snow Patrol/Eyes Open/Snow Patrol - In My Arms.mp3 +C:/Users/Rik/Music/Artists/Snow Patrol/Eyes Open/Snow Patrol - It's Beginning to Get to Me.mp3 +C:/Users/Rik/Music/Artists/Snow Patrol/Eyes Open/Snow Patrol - Open Your Eyes .mp3 +C:/Users/Rik/Music/Artists/Snow Patrol/Eyes Open/Snow Patrol - Shut Your Eyes .mp3 +C:/Users/Rik/Music/Artists/Snow Patrol/Eyes Open/Snow Patrol - Warmer Climate.mp3 +C:/Users/Rik/Music/Artists/Snow Patrol/Eyes Open/Snow Patrol - You're All I Have.mp3 +C:/Users/Rik/Music/Artists/Snow Patrol/Snow Patrol - Chocolate.mp3 +C:/Users/Rik/Music/Artists/Snow Patrol/Snow Patrol - Just Say Yes.mp3 +C:/Users/Rik/Music/Artists/Snow Patrol/Snow Patrol - Run.mp3 +C:/Users/Rik/Music/Artists/So They Say/Antidote for Irony/So They Say - Anxiety Is Setting In.mp3 +C:/Users/Rik/Music/Artists/So They Say/Antidote for Irony/So They Say - Good-Bye.mp3 +C:/Users/Rik/Music/Artists/So They Say/Antidote for Irony/So They Say - In Essence We Are Falling.mp3 +C:/Users/Rik/Music/Artists/So They Say/Antidote for Irony/So They Say - In Loving Memory Of....mp3 +C:/Users/Rik/Music/Artists/So They Say/Antidote for Irony/So They Say - Over Exposed Photo.mp3 +C:/Users/Rik/Music/Artists/So They Say/Antidote for Irony/So They Say - Talking In Circles.mp3 +C:/Users/Rik/Music/Artists/So They Say/Antidote for Irony/So They Say - The Burden.mp3 +C:/Users/Rik/Music/Artists/So They Say/Antidote for Irony/So They Say - You Asked, Where Are You Now.mp3 +C:/Users/Rik/Music/Artists/Stone Sour/Audio Secrecy/Stone Sour - Anna.mp3 +C:/Users/Rik/Music/Artists/Stone Sour/Audio Secrecy/Stone Sour - Dying.mp3 +C:/Users/Rik/Music/Artists/Stone Sour/Audio Secrecy/Stone Sour - Hate Not Gone.mp3 +C:/Users/Rik/Music/Artists/Stone Sour/Audio Secrecy/Stone Sour - Hesitate.mp3 +C:/Users/Rik/Music/Artists/Stone Sour/Audio Secrecy/Stone Sour - Home Again.mp3 +C:/Users/Rik/Music/Artists/Stone Sour/Audio Secrecy/Stone Sour - Imperfect.mp3 +C:/Users/Rik/Music/Artists/Stone Sour/Audio Secrecy/Stone Sour - Let's Be Honest.mp3 +C:/Users/Rik/Music/Artists/Stone Sour/Audio Secrecy/Stone Sour - Miracles.mp3 +C:/Users/Rik/Music/Artists/Stone Sour/Audio Secrecy/Stone Sour - Mission Statement.mp3 +C:/Users/Rik/Music/Artists/Stone Sour/Audio Secrecy/Stone Sour - Nylon 66.mp3 +C:/Users/Rik/Music/Artists/Stone Sour/Audio Secrecy/Stone Sour - Pieces.mp3 +C:/Users/Rik/Music/Artists/Stone Sour/Audio Secrecy/Stone Sour - Say You'll Haunt Me.mp3 +C:/Users/Rik/Music/Artists/Stone Sour/Audio Secrecy/Stone Sour - The Bitter End.mp3 +C:/Users/Rik/Music/Artists/Stone Sour/Audio Secrecy/Stone Sour - Threadbare.mp3 +C:/Users/Rik/Music/Artists/Stone Sour/Audio Secrecy/Stone Sour - Unfinished.mp3 +C:/Users/Rik/Music/Artists/Sum 41/Screaming Bloody Murder/Sum 41 - Baby You Don't Wanna Know.mp3 +C:/Users/Rik/Music/Artists/Sum 41/Screaming Bloody Murder/Sum 41 - Back Where I Belong.mp3 +C:/Users/Rik/Music/Artists/Sum 41/Screaming Bloody Murder/Sum 41 - Blood In My Eyes.mp3 +C:/Users/Rik/Music/Artists/Sum 41/Screaming Bloody Murder/Sum 41 - Crash.mp3 +C:/Users/Rik/Music/Artists/Sum 41/Screaming Bloody Murder/Sum 41 - Exit Song.mp3 +C:/Users/Rik/Music/Artists/Sum 41/Screaming Bloody Murder/Sum 41 - Happiness Machine.mp3 +C:/Users/Rik/Music/Artists/Sum 41/Screaming Bloody Murder/Sum 41 - Holy Image of Lies.mp3 +C:/Users/Rik/Music/Artists/Sum 41/Screaming Bloody Murder/Sum 41 - Jessica Kill.mp3 +C:/Users/Rik/Music/Artists/Sum 41/Screaming Bloody Murder/Sum 41 - Reason to Believe (Acoustic).mp3 +C:/Users/Rik/Music/Artists/Sum 41/Screaming Bloody Murder/Sum 41 - Reason to Believe.mp3 +C:/Users/Rik/Music/Artists/Sum 41/Screaming Bloody Murder/Sum 41 - Screaming Bloody Murder.mp3 +C:/Users/Rik/Music/Artists/Sum 41/Screaming Bloody Murder/Sum 41 - Sick of Everyone.mp3 +C:/Users/Rik/Music/Artists/Sum 41/Screaming Bloody Murder/Sum 41 - Skumfuk.mp3 +C:/Users/Rik/Music/Artists/Sum 41/Screaming Bloody Murder/Sum 41 - Time For You to Go.mp3 +C:/Users/Rik/Music/Artists/Sum 41/Screaming Bloody Murder/Sum 41 - What Am I to Say.mp3 +C:/Users/Rik/Music/Artists/Sum 41/Underclass Hero/Sum 41 - Best of Me.mp3 +C:/Users/Rik/Music/Artists/Sum 41/Underclass Hero/Sum 41 - Confusion and Frustration In Modern Times.mp3 +C:/Users/Rik/Music/Artists/Sum 41/Underclass Hero/Sum 41 - Count Your Last Blessings.mp3 +C:/Users/Rik/Music/Artists/Sum 41/Underclass Hero/Sum 41 - Dear Father.mp3 +C:/Users/Rik/Music/Artists/Sum 41/Underclass Hero/Sum 41 - King of Contradiction.mp3 +C:/Users/Rik/Music/Artists/Sum 41/Underclass Hero/Sum 41 - March of the Dogs.mp3 +C:/Users/Rik/Music/Artists/Sum 41/Underclass Hero/Sum 41 - Pull the Curtain.mp3 +C:/Users/Rik/Music/Artists/Sum 41/Underclass Hero/Sum 41 - So Long Goodbye.mp3 +C:/Users/Rik/Music/Artists/Sum 41/Underclass Hero/Sum 41 - Speak of the Devil.mp3 +C:/Users/Rik/Music/Artists/Sum 41/Underclass Hero/Sum 41 - The Jester.mp3 +C:/Users/Rik/Music/Artists/Sum 41/Underclass Hero/Sum 41 - Underclass Hero.mp3 +C:/Users/Rik/Music/Artists/Sum 41/Underclass Hero/Sum 41 - Walking Disaster.mp3 +C:/Users/Rik/Music/Artists/Sum 41/Underclass Hero/Sum 41 - With Me.mp3 +C:/Users/Rik/Music/Artists/The Academy Is/Almost Here/The Academy Is... - Almost Here.mp3 +C:/Users/Rik/Music/Artists/The Academy Is/Almost Here/The Academy Is... - Attention.mp3 +C:/Users/Rik/Music/Artists/The Academy Is/Almost Here/The Academy Is... - Black Mamba.mp3 +C:/Users/Rik/Music/Artists/The Academy Is/Almost Here/The Academy Is... - Checkmarks.mp3 +C:/Users/Rik/Music/Artists/The Academy Is/Almost Here/The Academy Is... - Classifieds.mp3 +C:/Users/Rik/Music/Artists/The Academy Is/Almost Here/The Academy Is... - Down and Out.mp3 +C:/Users/Rik/Music/Artists/The Academy Is/Almost Here/The Academy Is... - Season.mp3 +C:/Users/Rik/Music/Artists/The Academy Is/Almost Here/The Academy Is... - Skeptics and True Believers.mp3 +C:/Users/Rik/Music/Artists/The Academy Is/Almost Here/The Academy Is... - The Phrase That Pays.mp3 +C:/Users/Rik/Music/Artists/The All-American Rejects/Move Along/The All-American Rejects - 11.11 P.M.mp3 +C:/Users/Rik/Music/Artists/The All-American Rejects/Move Along/The All-American Rejects - Change Your Mind.mp3 +C:/Users/Rik/Music/Artists/The All-American Rejects/Move Along/The All-American Rejects - Dance Inside.mp3 +C:/Users/Rik/Music/Artists/The All-American Rejects/Move Along/The All-American Rejects - Dirty Little Secret.mp3 +C:/Users/Rik/Music/Artists/The All-American Rejects/Move Along/The All-American Rejects - I'm Waiting.mp3 +C:/Users/Rik/Music/Artists/The All-American Rejects/Move Along/The All-American Rejects - Move Along.mp3 +C:/Users/Rik/Music/Artists/The All-American Rejects/Move Along/The All-American Rejects - Stab My Back.mp3 +C:/Users/Rik/Music/Artists/The All-American Rejects/Move Along/The All-American Rejects - Top of the World.mp3 +C:/Users/Rik/Music/Artists/The All-American Rejects/When The World Comes Down/The All-American Rejects - Another Heart Calls.mp3 +C:/Users/Rik/Music/Artists/The All-American Rejects/When The World Comes Down/The All-American Rejects - Back to Me.mp3 +C:/Users/Rik/Music/Artists/The All-American Rejects/When The World Comes Down/The All-American Rejects - Believe.mp3 +C:/Users/Rik/Music/Artists/The All-American Rejects/When The World Comes Down/The All-American Rejects - Breakin'.mp3 +C:/Users/Rik/Music/Artists/The All-American Rejects/When The World Comes Down/The All-American Rejects - Damn Girl.mp3 +C:/Users/Rik/Music/Artists/The All-American Rejects/When The World Comes Down/The All-American Rejects - Fallin' Apart.mp3 +C:/Users/Rik/Music/Artists/The All-American Rejects/When The World Comes Down/The All-American Rejects - Gives You Hell.mp3 +C:/Users/Rik/Music/Artists/The All-American Rejects/When The World Comes Down/The All-American Rejects - I Wanna.mp3 +C:/Users/Rik/Music/Artists/The All-American Rejects/When The World Comes Down/The All-American Rejects - Mona Lisa.mp3 +C:/Users/Rik/Music/Artists/The All-American Rejects/When The World Comes Down/The All-American Rejects - Real World.mp3 +C:/Users/Rik/Music/Artists/The All-American Rejects/When The World Comes Down/The All-American Rejects - Sunshine.mp3 +C:/Users/Rik/Music/Artists/The All-American Rejects/When The World Comes Down/The All-American Rejects - The Wind Blows.mp3 +C:/Users/Rik/Music/Artists/The Fray/How To Save A Life/The Fray - All At Once.mp3 +C:/Users/Rik/Music/Artists/The Fray/How To Save A Life/The Fray - Dead Wrong.mp3 +C:/Users/Rik/Music/Artists/The Fray/How To Save A Life/The Fray - Fall Away.mp3 +C:/Users/Rik/Music/Artists/The Fray/How To Save A Life/The Fray - Heaven Forbid.mp3 +C:/Users/Rik/Music/Artists/The Fray/How To Save A Life/The Fray - How to Save a Life.mp3 +C:/Users/Rik/Music/Artists/The Fray/How To Save A Life/The Fray - Hundred.mp3 +C:/Users/Rik/Music/Artists/The Fray/How To Save A Life/The Fray - Little House.mp3 +C:/Users/Rik/Music/Artists/The Fray/How To Save A Life/The Fray - Look After You.mp3 +C:/Users/Rik/Music/Artists/The Fray/How To Save A Life/The Fray - Over My Head (Cable Car).mp3 +C:/Users/Rik/Music/Artists/The Fray/How To Save A Life/The Fray - She Is.mp3 +C:/Users/Rik/Music/Artists/The Fray/How To Save A Life/The Fray - Trust Me.mp3 +C:/Users/Rik/Music/Artists/The Hoosiers/The Illusion Of Safety/The Hoosiers - Bumpy Ride.mp3 +C:/Users/Rik/Music/Artists/The Hoosiers/The Illusion Of Safety/The Hoosiers - Choices.mp3 +C:/Users/Rik/Music/Artists/The Hoosiers/The Illusion Of Safety/The Hoosiers - Giddy Up.mp3 +C:/Users/Rik/Music/Artists/The Hoosiers/The Illusion Of Safety/The Hoosiers - Glorious.mp3 +C:/Users/Rik/Music/Artists/The Hoosiers/The Illusion Of Safety/The Hoosiers - Live By the Ocean.mp3 +C:/Users/Rik/Music/Artists/The Hoosiers/The Illusion Of Safety/The Hoosiers - Made to Measure.mp3 +C:/Users/Rik/Music/Artists/The Hoosiers/The Illusion Of Safety/The Hoosiers - Sarajevo.mp3 +C:/Users/Rik/Music/Artists/The Hoosiers/The Illusion Of Safety/The Hoosiers - Unlikely Hero.mp3 +C:/Users/Rik/Music/Artists/The Hoosiers/The Illusion Of Safety/The Hoosiers - Who Said Anything (About Falling In Love).mp3 +C:/Users/Rik/Music/Artists/The Killers/Day & Age/The Killers - A Crippling Blow.mp3 +C:/Users/Rik/Music/Artists/The Killers/Day & Age/The Killers - A Dustland Fairytale.mp3 +C:/Users/Rik/Music/Artists/The Killers/Day & Age/The Killers - Human.mp3 +C:/Users/Rik/Music/Artists/The Killers/Day & Age/The Killers - I Can't Stay.mp3 +C:/Users/Rik/Music/Artists/The Killers/Day & Age/The Killers - Joy Ride.mp3 +C:/Users/Rik/Music/Artists/The Killers/Day & Age/The Killers - Losing Touch.mp3 +C:/Users/Rik/Music/Artists/The Killers/Day & Age/The Killers - Neon Tiger.mp3 +C:/Users/Rik/Music/Artists/The Killers/Day & Age/The Killers - Spaceman.mp3 +C:/Users/Rik/Music/Artists/The Killers/Day & Age/The Killers - The World We Live In.mp3 +C:/Users/Rik/Music/Artists/The Killers/Day & Age/The Killers - This Is Your Life.mp3 +C:/Users/Rik/Music/Artists/The Killers/Hot Fuss/The Killers - All These Things That I've Done.mp3 +C:/Users/Rik/Music/Artists/The Killers/Hot Fuss/The Killers - Andy, You're a Star.mp3 +C:/Users/Rik/Music/Artists/The Killers/Hot Fuss/The Killers - Believe Me Natalie.mp3 +C:/Users/Rik/Music/Artists/The Killers/Hot Fuss/The Killers - Everything Will Be Alright.mp3 +C:/Users/Rik/Music/Artists/The Killers/Hot Fuss/The Killers - Glamorous Indie Rock & Roll.mp3 +C:/Users/Rik/Music/Artists/The Killers/Hot Fuss/The Killers - Indie Rock & Roll.mp3 +C:/Users/Rik/Music/Artists/The Killers/Hot Fuss/The Killers - Jenny Was a Friend of Mine.mp3 +C:/Users/Rik/Music/Artists/The Killers/Hot Fuss/The Killers - Midnight Show.mp3 +C:/Users/Rik/Music/Artists/The Killers/Hot Fuss/The Killers - Mr Brightside.mp3 +C:/Users/Rik/Music/Artists/The Killers/Hot Fuss/The Killers - Mr. Brightside.mp3 +C:/Users/Rik/Music/Artists/The Killers/Hot Fuss/The Killers - On Top.mp3 +C:/Users/Rik/Music/Artists/The Killers/Hot Fuss/The Killers - Smile Like You Mean It.mp3 +C:/Users/Rik/Music/Artists/The Killers/Hot Fuss/The Killers - The Ballad of Michael Valentine (Bonus).mp3 +C:/Users/Rik/Music/Artists/The Killers/Hot Fuss/The Killers - Under the Gun (Bonus).mp3 +C:/Users/Rik/Music/Artists/The Killers/Hot Fuss/The Killers - Who Let You Go (Bonus).mp3 +C:/Users/Rik/Music/Artists/The Offspring/Greatest Hits/The Offspring - (Can't Get My) Head Around You.mp3 +C:/Users/Rik/Music/Artists/The Offspring/Greatest Hits/The Offspring - All I Want.mp3 +C:/Users/Rik/Music/Artists/The Offspring/Greatest Hits/The Offspring - Can't Repeat.mp3 +C:/Users/Rik/Music/Artists/The Offspring/Greatest Hits/The Offspring - Come Out and Play (Keep 'em Separated).mp3 +C:/Users/Rik/Music/Artists/The Offspring/Greatest Hits/The Offspring - Defy You.mp3 +C:/Users/Rik/Music/Artists/The Offspring/Greatest Hits/The Offspring - Gone Away.mp3 +C:/Users/Rik/Music/Artists/The Offspring/Greatest Hits/The Offspring - Gotta Get Away.mp3 +C:/Users/Rik/Music/Artists/The Offspring/Greatest Hits/The Offspring - Hit That.mp3 +C:/Users/Rik/Music/Artists/The Offspring/Greatest Hits/The Offspring - Original Prankster.mp3 +C:/Users/Rik/Music/Artists/The Offspring/Greatest Hits/The Offspring - Pretty Fly (For a White Guy).mp3 +C:/Users/Rik/Music/Artists/The Offspring/Greatest Hits/The Offspring - Self Esteem.mp3 +C:/Users/Rik/Music/Artists/The Offspring/Greatest Hits/The Offspring - The Kids Aren't Alright.mp3 +C:/Users/Rik/Music/Artists/The Offspring/Greatest Hits/The Offspring - Want You Bad.mp3 +C:/Users/Rik/Music/Artists/The Offspring/Greatest Hits/The Offspring - Why Don't You Get a Job.mp3 +C:/Users/Rik/Music/Artists/The Script/Science & Faith/The Script - Dead Man Walking.mp3 +C:/Users/Rik/Music/Artists/The Script/Science & Faith/The Script - Exit Wounds.mp3 +C:/Users/Rik/Music/Artists/The Script/Science & Faith/The Script - For the First Time.mp3 +C:/Users/Rik/Music/Artists/The Script/Science & Faith/The Script - If You Ever Come Back.mp3 +C:/Users/Rik/Music/Artists/The Script/Science & Faith/The Script - Long Gone and Moved On.mp3 +C:/Users/Rik/Music/Artists/The Script/Science & Faith/The Script - Nothing.mp3 +C:/Users/Rik/Music/Artists/The Script/Science & Faith/The Script - Science & Faith.mp3 +C:/Users/Rik/Music/Artists/The Script/Science & Faith/The Script - This = Love.mp3 +C:/Users/Rik/Music/Artists/The Script/Science & Faith/The Script - You Won't Feel a Thing.mp3 +C:/Users/Rik/Music/Artists/The Script/The Script/The Script - Before the Worst.mp3 +C:/Users/Rik/Music/Artists/The Script/The Script/The Script - Breakeven.mp3 +C:/Users/Rik/Music/Artists/The Script/The Script/The Script - Fall For Anything.mp3 +C:/Users/Rik/Music/Artists/The Script/The Script/The Script - Rusty Halo.mp3 +C:/Users/Rik/Music/Artists/The Script/The Script/The Script - Talk You Down.mp3 +C:/Users/Rik/Music/Artists/The Script/The Script/The Script - The End Is Where I Begin.mp3 +C:/Users/Rik/Music/Artists/The Script/The Script/The Script - The Man Who Can't Be Moved.mp3 +C:/Users/Rik/Music/Artists/Three Days Grace/Life Starts Now/Three Days Grace - Bitter Taste.mp3 +C:/Users/Rik/Music/Artists/Three Days Grace/Life Starts Now/Three Days Grace - Break.mp3 +C:/Users/Rik/Music/Artists/Three Days Grace/Life Starts Now/Three Days Grace - Goin' Down.mp3 +C:/Users/Rik/Music/Artists/Three Days Grace/Life Starts Now/Three Days Grace - Last to Know.mp3 +C:/Users/Rik/Music/Artists/Three Days Grace/Life Starts Now/Three Days Grace - Life Starts Now.mp3 +C:/Users/Rik/Music/Artists/Three Days Grace/Life Starts Now/Three Days Grace - Lost In You.mp3 +C:/Users/Rik/Music/Artists/Three Days Grace/Life Starts Now/Three Days Grace - No More.mp3 +C:/Users/Rik/Music/Artists/Three Days Grace/Life Starts Now/Three Days Grace - Someone Who Cares.mp3 +C:/Users/Rik/Music/Artists/Three Days Grace/Life Starts Now/Three Days Grace - The Good Life.mp3 +C:/Users/Rik/Music/Artists/Three Days Grace/Life Starts Now/Three Days Grace - Without You.mp3 +C:/Users/Rik/Music/Artists/U2/No Line On The Horizon/U2 - Breathe.mp3 +C:/Users/Rik/Music/Artists/U2/No Line On The Horizon/U2 - Get On Your Boots.mp3 +C:/Users/Rik/Music/Artists/U2/No Line On The Horizon/U2 - I'll Go Crazy If I Don't Go Crazy Tonight.mp3 +C:/Users/Rik/Music/Artists/U2/No Line On The Horizon/U2 - Magnificent.mp3 +C:/Users/Rik/Music/Artists/U2/No Line On The Horizon/U2 - No Line On the Horizon.mp3 +C:/Users/Rik/Music/Artists/U2/No Line On The Horizon/U2 - Stand Up Comedy.mp3 +C:/Users/Rik/Music/Artists/U2/No Line On The Horizon/U2 - Unknown Caller.mp3 +C:/Users/Rik/Music/Artists/U2/No Line On The Horizon/U2 - White As Snow.mp3 +C:/Users/Rik/Music/Artists/U2/U2 - Beautiful Day.mp3 +C:/Users/Rik/Music/Artists/U2/U2 - Elevation.mp3 +C:/Users/Rik/Music/Artists/U2/U2 - I Still Haven't Found What I'm Looking For.mp3 +C:/Users/Rik/Music/Artists/U2/U2 - New Year's Day.mp3 +C:/Users/Rik/Music/Artists/U2/U2 - One.mp3 +C:/Users/Rik/Music/Artists/U2/U2 - Stuck In a Moment You Can't Get Out of.mp3 +C:/Users/Rik/Music/Artists/U2/U2 - Sunday Bloody Sunday .mp3 +C:/Users/Rik/Music/Artists/U2/U2 - Sweetest Thing.mp3 +C:/Users/Rik/Music/Artists/U2/U2 - The City of Blinding Lights.mp3 +C:/Users/Rik/Music/Artists/U2/U2 - Vertigo.mp3 +C:/Users/Rik/Music/Artists/U2/U2 - Where the Streets Have No Name.mp3 +C:/Users/Rik/Music/Artists/U2/U2 - With Or Without You.mp3 +C:/Users/Rik/Music/Artists/Weezer/Hurley/Weezer - All My Friends Are Insects (Bonus Track).mp3 +C:/Users/Rik/Music/Artists/Weezer/Hurley/Weezer - Brave New World.mp3 +C:/Users/Rik/Music/Artists/Weezer/Hurley/Weezer - Hang On.mp3 +C:/Users/Rik/Music/Artists/Weezer/Hurley/Weezer - I Want to Be Something (Bonus Track).mp3 +C:/Users/Rik/Music/Artists/Weezer/Hurley/Weezer - Memories.mp3 +C:/Users/Rik/Music/Artists/Weezer/Hurley/Weezer - Represent (Rocked Out Mix) %5Bbonus Track%5D.mp3 +C:/Users/Rik/Music/Artists/Weezer/Hurley/Weezer - Ruling Me.mp3 +C:/Users/Rik/Music/Artists/Weezer/Hurley/Weezer - Run Away.mp3 +C:/Users/Rik/Music/Artists/Weezer/Hurley/Weezer - Smart Girls.mp3 +C:/Users/Rik/Music/Artists/Weezer/Hurley/Weezer - Time Flies.mp3 +C:/Users/Rik/Music/Artists/Weezer/Hurley/Weezer - Trainwrecks.mp3 +C:/Users/Rik/Music/Artists/Weezer/Hurley/Weezer - Unspoken.mp3 +C:/Users/Rik/Music/Artists/Weezer/Hurley/Weezer - Viva La Vida (Bonus Track).mp3 +C:/Users/Rik/Music/Artists/Weezer/Hurley/Weezer - Where's My Sex.mp3 +C:/Users/Rik/Music/Artists/Yellowcard/Paper Walls/Yellowcard - Afraid.mp3 +C:/Users/Rik/Music/Artists/Yellowcard/Paper Walls/Yellowcard - Cut Me, Mick.mp3 +C:/Users/Rik/Music/Artists/Yellowcard/Paper Walls/Yellowcard - Date Line (I Am Gone).mp3 +C:/Users/Rik/Music/Artists/Yellowcard/Paper Walls/Yellowcard - Dear Bobbie.mp3 +C:/Users/Rik/Music/Artists/Yellowcard/Paper Walls/Yellowcard - Fighting.mp3 +C:/Users/Rik/Music/Artists/Yellowcard/Paper Walls/Yellowcard - Five Become Four.mp3 +C:/Users/Rik/Music/Artists/Yellowcard/Paper Walls/Yellowcard - Keeper.mp3 +C:/Users/Rik/Music/Artists/Yellowcard/Paper Walls/Yellowcard - Light Up the Sky.mp3 +C:/Users/Rik/Music/Artists/Yellowcard/Paper Walls/Yellowcard - Paper Walls.mp3 +C:/Users/Rik/Music/Artists/Yellowcard/Paper Walls/Yellowcard - Shadows and Regrets.mp3 +C:/Users/Rik/Music/Artists/Yellowcard/Paper Walls/Yellowcard - Shrink the World.mp3 +C:/Users/Rik/Music/Artists/Yellowcard/Paper Walls/Yellowcard - The Takedown.mp3 +C:/Users/Rik/Music/Artists/Yellowcard/Paper Walls/Yellowcard - You and Me and One Spotlight.mp3 +C:/Users/Rik/Music/Artists/Yellowcard/Yellowcard - October Nights.mp3 +C:/Users/Rik/Music/Artists/You Me At Six/Hold Me Down/You Me At Six - Contagious Chemistry.mp3 +C:/Users/Rik/Music/Artists/You Me At Six/Hold Me Down/You Me At Six - Fireworks.mp3 +C:/Users/Rik/Music/Artists/You Me At Six/Hold Me Down/You Me At Six - Hard to Swallow.mp3 +C:/Users/Rik/Music/Artists/You Me At Six/Hold Me Down/You Me At Six - Liquid Confidence.mp3 +C:/Users/Rik/Music/Artists/You Me At Six/Hold Me Down/You Me At Six - Playing the Blame Game.mp3 +C:/Users/Rik/Music/Artists/You Me At Six/Hold Me Down/You Me At Six - Safer to Hate Her.mp3 +C:/Users/Rik/Music/Artists/You Me At Six/Hold Me Down/You Me At Six - Stay With Me.mp3 +C:/Users/Rik/Music/Artists/You Me At Six/Hold Me Down/You Me At Six - Take Your Breath Away.mp3 +C:/Users/Rik/Music/Artists/You Me At Six/Hold Me Down/You Me At Six - There's No Such Thing As Accident.mp3 +C:/Users/Rik/Music/Artists/You Me At Six/Hold Me Down/You Me At Six - Trophy Eyes.mp3 +C:/Users/Rik/Music/Artists/You Me At Six/Hold Me Down/You Me At Six - Underdog.mp3 +C:/Users/Rik/Music/Old/Bad English - Time Stood Still.mp3 +C:/Users/Rik/Music/Old/Bon Jovi/Bon Jovi - In These Arms.mp3 +C:/Users/Rik/Music/Old/Bon Jovi/Bon Jovi - Livin' On a Prayer.mp3 +C:/Users/Rik/Music/Old/Don Henley - The Boys of Summer.mp3 +C:/Users/Rik/Music/Old/Duran Duran/Duran Duran - Ordinary World.mp3 +C:/Users/Rik/Music/Old/Duran Duran/Duran Duran - The Reflex.mp3 +C:/Users/Rik/Music/Old/Europe - The Final Countdown.mp3 +C:/Users/Rik/Music/Old/Genesis/Genesis - Land of Confusion.mp3 +C:/Users/Rik/Music/Old/Midnight Oil - Beds Are Burning.mp3 +C:/Users/Rik/Music/Old/No Doubt/No Doubt - It's My Life.mp3 +C:/Users/Rik/Music/Old/Survivor - Eye of the Tiger.mp3 +C:/Users/Rik/Music/Various/3 Doors Down/3 Doors Down - Here Without You.mp3 +C:/Users/Rik/Music/Various/3 Doors Down/3 Doors Down - Kryptonite.mp3 +C:/Users/Rik/Music/Various/A Silent Express - Will I Be Around.mp3 +C:/Users/Rik/Music/Various/Adam Lambert - Whataya Want From Me.mp3 +C:/Users/Rik/Music/Various/Alphabeat - The Spell.mp3 +C:/Users/Rik/Music/Various/Anouk/Anouk - Girl.mp3 +C:/Users/Rik/Music/Various/Anouk/Anouk - Nobody's Wife.mp3 +C:/Users/Rik/Music/Various/Anouk/Anouk - R U Kiddin' Me.mp3 +C:/Users/Rik/Music/Various/Avril Lavigne/Avril Lavigne - What the Hell.mp3 +C:/Users/Rik/Music/Various/Biffy Clyro - Many of Horror.mp3 +C:/Users/Rik/Music/Various/Brandon Flowers - Crossfire.mp3 +C:/Users/Rik/Music/Various/Carolina Liar - Show Me What Im Looking For.mp3 +C:/Users/Rik/Music/Various/Chumbawamba - Tubthumping.mp3 +C:/Users/Rik/Music/Various/Eagle Eye Cherry - Save Tonight.mp3 +C:/Users/Rik/Music/Various/Esm%C3%A9e Denters - Outta Here.mp3 +C:/Users/Rik/Music/Various/Falco Luneau - Nobody.mp3 +C:/Users/Rik/Music/Various/Freemasons - Uninvited.mp3 +C:/Users/Rik/Music/Various/Gavin DeGraw/Gavin Degraw - Chariot.mp3 +C:/Users/Rik/Music/Various/Gavin DeGraw/Gavin Degraw - Follow Through.mp3 +C:/Users/Rik/Music/Various/Gavin DeGraw/Gavin Degraw - In Love With a Girl.mp3 +C:/Users/Rik/Music/Various/Intwine - Happy.mp3 +C:/Users/Rik/Music/Various/Jaap - Don't Stop Believin'.mp3 +C:/Users/Rik/Music/Various/Jonas Brothers - Burnin' Up.mp3 +C:/Users/Rik/Music/Various/Joshua Radin - I'd Rather Be With You.mp3 +C:/Users/Rik/Music/Various/Kevin Rudolf - Let It Rock.mp3 +C:/Users/Rik/Music/Various/Kid Rock - All Summer Long.mp3 +C:/Users/Rik/Music/Various/Kylie Minogue/Kylie Minogue - All the Lovers.mp3 +C:/Users/Rik/Music/Various/Kylie Minogue/Kylie Minogue - Get Outta My Way.mp3 +C:/Users/Rik/Music/Various/Kylie Minogue/Kylie Minogue - Love At First Sight.mp3 +C:/Users/Rik/Music/Various/Kylie Minogue/Kylie Minogue - Wow.mp3 +C:/Users/Rik/Music/Various/Lenny Kravitz/Lenny Kravitz - Again.mp3 +C:/Users/Rik/Music/Various/Lenny Kravitz/Lenny Kravitz - Fly Away.mp3 +C:/Users/Rik/Music/Various/Liquido - Narcotic.mp3 +C:/Users/Rik/Music/Various/Live/Live - Heaven.mp3 +C:/Users/Rik/Music/Various/Live/Live - Overcome.mp3 +C:/Users/Rik/Music/Various/Live/Live - Run to the Water.mp3 +C:/Users/Rik/Music/Various/Live/Live - Selling the Drama.mp3 +C:/Users/Rik/Music/Various/Live/Live - The River.mp3 +C:/Users/Rik/Music/Various/Mando Diao - Dance With Somebody.mp3 +C:/Users/Rik/Music/Various/Maroon 5/Maroon 5 - Misery.mp3 +C:/Users/Rik/Music/Various/Maroon 5/Maroon 5 - Won't Go Home Without You.mp3 +C:/Users/Rik/Music/Various/Melee/Melee - Built to Last.mp3 +C:/Users/Rik/Music/Various/Melee/Melee - Imitation.mp3 +C:/Users/Rik/Music/Various/Mike Posner - Cooler Than Me.mp3 +C:/Users/Rik/Music/Various/Novastar/Novastar - Because.mp3 +C:/Users/Rik/Music/Various/Novastar/Novastar - Waiting So Long.mp3 +C:/Users/Rik/Music/Various/Oasis - Wonderwall.mp3 +C:/Users/Rik/Music/Various/One Night Only - Just For Tonight.mp3 +C:/Users/Rik/Music/Various/Robyn - With Every Heartbeat.mp3 +C:/Users/Rik/Music/Various/Roxette/Roxette - How Do You Do!.mp3 +C:/Users/Rik/Music/Various/Roxette/Roxette - It Must Have Been Love.mp3 +C:/Users/Rik/Music/Various/Roxette/Roxette - Joyride.mp3 +C:/Users/Rik/Music/Various/Roxette/Roxette - Listen to Your Heart.mp3 +C:/Users/Rik/Music/Various/Roxette/Roxette - The Look.mp3 +C:/Users/Rik/Music/Various/Scissor Sisters - Fire With Fire.mp3 +C:/Users/Rik/Music/Various/Scouting For Girls - Take a Change On Us.mp3 +C:/Users/Rik/Music/Various/Scouting for Girls/Scouting For Girls - Famous.mp3 +C:/Users/Rik/Music/Various/Scouting for Girls/Scouting For Girls - This Ain't a Love Song.mp3 +C:/Users/Rik/Music/Various/September/September - Can't Get Over.mp3 +C:/Users/Rik/Music/Various/September/September - Cry For You.mp3 +C:/Users/Rik/Music/Various/Sick Puppies - Maybe.mp3 +C:/Users/Rik/Music/Various/Simple Minds - Don't You (Forget About Me).mp3 +C:/Users/Rik/Music/Various/Spin Doctors - Two Princes.mp3 +C:/Users/Rik/Music/Various/Swedish House Mafia - One (Your Name).mp3 +C:/Users/Rik/Music/Various/Taio Cruz - Break Your Heart.mp3 +C:/Users/Rik/Music/Various/The Calling - Wherever You Will Go.mp3 +C:/Users/Rik/Music/Various/The Naked & Famous - Young Blood.mp3 +C:/Users/Rik/Music/Various/The Rasmus - In the Shadows.mp3 +C:/Users/Rik/Music/Various/Train/Train - Drops of Jupiter.mp3 +C:/Users/Rik/Music/Various/Train/Train - Hey, Soul Sister.mp3 +C:/Users/Rik/Music/Various/Train/Train - If It's Love.mp3 +C:/Users/Rik/Music/Various/Wheatus - Teenage Dirtbag.mp3 +C:/Users/Rik/Music/Various/Within Temptation - Faster.mp3 +C:/Users/Rik/Music/Various/Jason Derulo - In My Head.mp3 +C:/Users/Rik/Music/Artists/Foo Fighters/Wasting Light/Foo Fighters - Better Off.mp3 +C:/Users/Rik/Music/Artists/Foo Fighters/Wasting Light/Foo Fighters - I Should Have Known.mp3 +C:/Users/Rik/Music/Artists/Jimmy Eat World/Chase The Light/Jimmy Eat World - Always Be.mp3 +C:/Users/Rik/Music/Artists/Jimmy Eat World/Chase The Light/Jimmy Eat World - Big Casino.mp3 +C:/Users/Rik/Music/Artists/Jimmy Eat World/Chase The Light/Jimmy Eat World - Carry You.mp3 +C:/Users/Rik/Music/Artists/Jimmy Eat World/Chase The Light/Jimmy Eat World - Chase This Light.mp3 +C:/Users/Rik/Music/Artists/Jimmy Eat World/Chase The Light/Jimmy Eat World - Dizzy.mp3 +C:/Users/Rik/Music/Artists/Jimmy Eat World/Chase The Light/Jimmy Eat World - Electable (Give It Up).mp3 +C:/Users/Rik/Music/Artists/Jimmy Eat World/Chase The Light/Jimmy Eat World - Feeling Lucky.mp3 +C:/Users/Rik/Music/Artists/Jimmy Eat World/Chase The Light/Jimmy Eat World - Firefight.mp3 +C:/Users/Rik/Music/Artists/Jimmy Eat World/Chase The Light/Jimmy Eat World - Gotta Be Somebody's Blues.mp3 +C:/Users/Rik/Music/Artists/Jimmy Eat World/Chase The Light/Jimmy Eat World - Here It Goes.mp3 +C:/Users/Rik/Music/Artists/Jimmy Eat World/Chase The Light/Jimmy Eat World - Let It Happen.mp3 +C:/Users/Rik/Music/Artists/Simple Plan/Still Not Getting Any/Simple Plan - Crazy.mp3 +C:/Users/Rik/Music/Artists/Simple Plan/Still Not Getting Any/Simple Plan - Everytime.mp3 +C:/Users/Rik/Music/Artists/Simple Plan/Still Not Getting Any/Simple Plan - Jump.mp3 +C:/Users/Rik/Music/Artists/Simple Plan/Still Not Getting Any/Simple Plan - Me Against The World.mp3 +C:/Users/Rik/Music/Artists/Simple Plan/Still Not Getting Any/Simple Plan - One.mp3 +C:/Users/Rik/Music/Artists/Simple Plan/Still Not Getting Any/Simple Plan - Perfect World.mp3 +C:/Users/Rik/Music/Artists/Simple Plan/Still Not Getting Any/Simple Plan - Promise.mp3 +C:/Users/Rik/Music/Artists/Simple Plan/Still Not Getting Any/Simple Plan - Shut Up.mp3 +C:/Users/Rik/Music/Artists/Simple Plan/Still Not Getting Any/Simple Plan - Thank You.mp3 +C:/Users/Rik/Music/Artists/Simple Plan/Still Not Getting Any/Simple Plan - Untitled.mp3 +C:/Users/Rik/Music/Artists/Simple Plan/Still Not Getting Any/Simple Plan - Welcome To My Life.mp3 +C:/Users/Rik/Music/Artists/Volbeat/Beyond Hell-Above Heaven/Volbeat - 16 Dollars.mp3 +C:/Users/Rik/Music/Artists/Volbeat/Beyond Hell-Above Heaven/Volbeat - 7 Shots.mp3 +C:/Users/Rik/Music/Artists/Volbeat/Beyond Hell-Above Heaven/Volbeat - A Better Believer.mp3 +C:/Users/Rik/Music/Artists/Volbeat/Beyond Hell-Above Heaven/Volbeat - A New Day.mp3 +C:/Users/Rik/Music/Artists/Volbeat/Beyond Hell-Above Heaven/Volbeat - A Warrior's Call.mp3 +C:/Users/Rik/Music/Artists/Volbeat/Beyond Hell-Above Heaven/Volbeat - Being 1.mp3 +C:/Users/Rik/Music/Artists/Volbeat/Beyond Hell-Above Heaven/Volbeat - Fallen.mp3 +C:/Users/Rik/Music/Artists/Volbeat/Beyond Hell-Above Heaven/Volbeat - Heaven Nor Hell.mp3 +C:/Users/Rik/Music/Artists/Volbeat/Beyond Hell-Above Heaven/Volbeat - Magic Zone.mp3 +C:/Users/Rik/Music/Artists/Volbeat/Beyond Hell-Above Heaven/Volbeat - Thanks.mp3 +C:/Users/Rik/Music/Artists/Volbeat/Beyond Hell-Above Heaven/Volbeat - The Mirror and the Ripper.mp3 +C:/Users/Rik/Music/Artists/Volbeat/Beyond Hell-Above Heaven/Volbeat - Who They Are.mp3 +C:/Users/Rik/Music/Various/Beady Eye - The Roller.mp3 +C:/Users/Rik/Music/Various/Depeche Mode - Just Can't Get Enough.mp3 +C:/Users/Rik/Music/Various/Kelly Clarkson/Kelly Clarkson - Because of You.mp3 +C:/Users/Rik/Music/Various/Kelly Clarkson/Kelly Clarkson - Behind These Hazel Eyes.mp3 +C:/Users/Rik/Music/Various/Kelly Clarkson/Kelly Clarkson - Since U Been Gone.mp3 +C:/Users/Rik/Music/Artists/The Gaslight Anthem/American Slang/The Gaslight Anthem - American Slang.mp3 +C:/Users/Rik/Music/Artists/The Gaslight Anthem/American Slang/The Gaslight Anthem - Boxer.mp3 +C:/Users/Rik/Music/Artists/The Gaslight Anthem/American Slang/The Gaslight Anthem - Bring It On.mp3 +C:/Users/Rik/Music/Artists/The Gaslight Anthem/American Slang/The Gaslight Anthem - Old Haunts.mp3 +C:/Users/Rik/Music/Artists/The Gaslight Anthem/American Slang/The Gaslight Anthem - Orphans.mp3 +C:/Users/Rik/Music/Artists/The Gaslight Anthem/American Slang/The Gaslight Anthem - Stay Lucky.mp3 +C:/Users/Rik/Music/Artists/The Gaslight Anthem/American Slang/The Gaslight Anthem - The Diamond Church Street Choir.mp3 +C:/Users/Rik/Music/Artists/The Gaslight Anthem/American Slang/The Gaslight Anthem - The Queen Of Lower Chelsea.mp3 +C:/Users/Rik/Music/Artists/The Gaslight Anthem/American Slang/The Gaslight Anthem - The Spirit Of Jazz.mp3 +C:/Users/Rik/Music/Artists/The Gaslight Anthem/American Slang/The Gaslight Anthem - We Did It When We Were Young.mp3 +C:/Users/Rik/Music/Artists/Blind/Blind/Blind - Break Away.mp3 +C:/Users/Rik/Music/Artists/Blind/Blind/Blind - Every You Every Me.mp3 +C:/Users/Rik/Music/Artists/Blind/Blind/Blind - Jesus Only Knows.mp3 +C:/Users/Rik/Music/Artists/Blind/Blind/Blind - Love Is Gone.mp3 +C:/Users/Rik/Music/Artists/Blind/Blind/Blind - Ordinary Day.mp3 +C:/Users/Rik/Music/Artists/Blind/Blind/Blind - People.mp3 +C:/Users/Rik/Music/Artists/Blind/Blind/Blind - Save Me Now.mp3 +C:/Users/Rik/Music/Artists/Blind/Blind/Blind - These Are the Days.mp3 +C:/Users/Rik/Music/Artists/Blind/Blind/Blind - Today I Break Loose.mp3 +C:/Users/Rik/Music/Artists/Blind/Blind/Blind - Triple X.mp3 +C:/Users/Rik/Music/Artists/Blind/Blind/Blind - Wake Me Up.mp3 +C:/Users/Rik/Music/Artists/Blind/Blind/Blind - We Can Stay.mp3 +C:/Users/Rik/Music/Artists/Blind/Blind/Blind - You.mp3 +C:/Users/Rik/Music/Artists/Cute Is What We Aim For/Rotation/Cute Is What We Aim For - Do What You Do.mp3 +C:/Users/Rik/Music/Artists/Cute Is What We Aim For/Rotation/Cute Is What We Aim For - Doctor.mp3 +C:/Users/Rik/Music/Artists/Cute Is What We Aim For/Rotation/Cute Is What We Aim For - Hollywood.mp3 +C:/Users/Rik/Music/Artists/Cute Is What We Aim For/Rotation/Cute Is What We Aim For - Loser.mp3 +C:/Users/Rik/Music/Artists/Cute Is What We Aim For/Rotation/Cute Is What We Aim For - Marriage to Millions.mp3 +C:/Users/Rik/Music/Artists/Cute Is What We Aim For/Rotation/Cute Is What We Aim For - Miss Sobriety.mp3 +C:/Users/Rik/Music/Artists/Cute Is What We Aim For/Rotation/Cute Is What We Aim For - Navigate Me.mp3 +C:/Users/Rik/Music/Artists/Cute Is What We Aim For/Rotation/Cute Is What We Aim For - Practice Makes Perfect.mp3 +C:/Users/Rik/Music/Artists/Cute Is What We Aim For/Rotation/Cute Is What We Aim For - Safe Ride.mp3 +C:/Users/Rik/Music/Artists/Cute Is What We Aim For/Rotation/Cute Is What We Aim For - The Lock Down Denial.mp3 +C:/Users/Rik/Music/Artists/Cute Is What We Aim For/Rotation/Cute Is What We Aim For - Time.mp3 +C:/Users/Rik/Music/Artists/Kids In Glass Houses/Dirt/Kids In Glass Houses - Artbreaker I.mp3 +C:/Users/Rik/Music/Artists/Kids In Glass Houses/Dirt/Kids In Glass Houses - Artbreaker II.mp3 +C:/Users/Rik/Music/Artists/Kids In Glass Houses/Dirt/Kids In Glass Houses - For Better Or Hearse.mp3 +C:/Users/Rik/Music/Artists/Kids In Glass Houses/Dirt/Kids In Glass Houses - Giving Up.mp3 +C:/Users/Rik/Music/Artists/Kids In Glass Houses/Dirt/Kids In Glass Houses - Hunt the Haunted.mp3 +C:/Users/Rik/Music/Artists/Kids In Glass Houses/Dirt/Kids In Glass Houses - Lilli Rose.mp3 +C:/Users/Rik/Music/Artists/Kids In Glass Houses/Dirt/Kids In Glass Houses - Matters At All.mp3 +C:/Users/Rik/Music/Artists/Kids In Glass Houses/Dirt/Kids In Glass Houses - Maybe Tomorrow.mp3 +C:/Users/Rik/Music/Artists/Kids In Glass Houses/Dirt/Kids In Glass Houses - Sunshine.mp3 +C:/Users/Rik/Music/Artists/Kids In Glass Houses/Dirt/Kids In Glass Houses - The Best Is Yet To Come.mp3 +C:/Users/Rik/Music/Artists/Kids In Glass Houses/Dirt/Kids In Glass Houses - The Morning Afterlife.mp3 +C:/Users/Rik/Music/Artists/Kids In Glass Houses/Dirt/Kids In Glass Houses - Undercover Lover.mp3 +C:/Users/Rik/Music/Artists/Kids In Glass Houses/Dirt/Kids In Glass Houses - Youngblood (Let It Out).mp3 +C:/Users/Rik/Music/Artists/Simple Plan/Get Your Heart On!/Simple Plan - Anywhere Else But Here.mp3 +C:/Users/Rik/Music/Artists/Simple Plan/Get Your Heart On!/Simple Plan - Astronaut.mp3 +C:/Users/Rik/Music/Artists/Simple Plan/Get Your Heart On!/Simple Plan - Can't Keep My Hands Off You.mp3 +C:/Users/Rik/Music/Artists/Simple Plan/Get Your Heart On!/Simple Plan - Freaking Me Out.mp3 +C:/Users/Rik/Music/Artists/Simple Plan/Get Your Heart On!/Simple Plan - Gone Too Soon.mp3 +C:/Users/Rik/Music/Artists/Simple Plan/Get Your Heart On!/Simple Plan - Jet Lag.mp3 +C:/Users/Rik/Music/Artists/Simple Plan/Get Your Heart On!/Simple Plan - Last One Standing.mp3 +C:/Users/Rik/Music/Artists/Simple Plan/Get Your Heart On!/Simple Plan - Loser Of The Year.mp3 +C:/Users/Rik/Music/Artists/Simple Plan/Get Your Heart On!/Simple Plan - This Song Saved My Life.mp3 +C:/Users/Rik/Music/Artists/Simple Plan/Get Your Heart On!/Simple Plan - You Suck At Love.mp3 +C:/Users/Rik/Music/Various/The Von Bondies - C%60Mon C%60Mon.mp3 +C:/Users/Rik/Music/Various/White Stripes - Seven Nation Army.mp3 +C:/Users/Rik/Music/Artists/Futures/The Holiday/Futures - 16.mp3 +C:/Users/Rik/Music/Artists/Futures/The Holiday/Futures - Holiday.mp3 +C:/Users/Rik/Music/Artists/Futures/The Holiday/Futures - Sal Paradise.mp3 +C:/Users/Rik/Music/Artists/Futures/The Holiday/Futures - Take Me Home.mp3 +C:/Users/Rik/Music/Artists/Futures/The Holiday/Futures - Thank You.mp3 +C:/Users/Rik/Music/Artists/Futures/The Holiday/Futures - The Boy Who Cried Wolf.mp3 +C:/Users/Rik/Music/Artists/Futures/The Holiday/Futures - The Summer.mp3 +C:/Users/Rik/Music/Artists/Rise Against/Appeal To Reason/Rise Against - Audience of One.mp3 +C:/Users/Rik/Music/Artists/Rise Against/Appeal To Reason/Rise Against - Collapse (Post-Amerika).mp3 +C:/Users/Rik/Music/Artists/Rise Against/Appeal To Reason/Rise Against - Elective Amnesia.mp3 +C:/Users/Rik/Music/Artists/Rise Against/Appeal To Reason/Rise Against - Entertainment.mp3 +C:/Users/Rik/Music/Artists/Rise Against/Appeal To Reason/Rise Against - From Heads Unworthy.mp3 +C:/Users/Rik/Music/Artists/Rise Against/Appeal To Reason/Rise Against - Hairline Fracture.mp3 +C:/Users/Rik/Music/Artists/Rise Against/Appeal To Reason/Rise Against - Hero of War.mp3 +C:/Users/Rik/Music/Artists/Rise Against/Appeal To Reason/Rise Against - Kotov Syndrome.mp3 +C:/Users/Rik/Music/Artists/Rise Against/Appeal To Reason/Rise Against - Long Forgotten Sons.mp3 +C:/Users/Rik/Music/Artists/Rise Against/Appeal To Reason/Rise Against - Prayer of the Refugee.mp3 +C:/Users/Rik/Music/Artists/Rise Against/Appeal To Reason/Rise Against - Re-Education (Through Labor).mp3 +C:/Users/Rik/Music/Artists/Rise Against/Appeal To Reason/Rise Against - Savior.mp3 +C:/Users/Rik/Music/Artists/Rise Against/Appeal To Reason/Rise Against - The Dirt Whispered.mp3 +C:/Users/Rik/Music/Artists/Rise Against/Appeal To Reason/Rise Against - The Strength to Go On.mp3 +C:/Users/Rik/Music/Artists/Rise Against/Appeal To Reason/Rise Against - Whereabouts Unknown.mp3 +C:/Users/Rik/Music/Artists/White Lies/To Lose My Life/White Lies - A Place To Hide.mp3 +C:/Users/Rik/Music/Artists/White Lies/To Lose My Life/White Lies - Death.mp3 +C:/Users/Rik/Music/Artists/White Lies/To Lose My Life/White Lies - E.S.T..mp3 +C:/Users/Rik/Music/Artists/White Lies/To Lose My Life/White Lies - Farewell To The Fairground.mp3 +C:/Users/Rik/Music/Artists/White Lies/To Lose My Life/White Lies - Fifty On Our Foreheads.mp3 +C:/Users/Rik/Music/Artists/White Lies/To Lose My Life/White Lies - From The Stars.mp3 +C:/Users/Rik/Music/Artists/White Lies/To Lose My Life/White Lies - Nothing To Give.mp3 +C:/Users/Rik/Music/Artists/White Lies/To Lose My Life/White Lies - The Price Of Love.mp3 +C:/Users/Rik/Music/Artists/White Lies/To Lose My Life/White Lies - To Lose My Life.mp3 +C:/Users/Rik/Music/Artists/White Lies/To Lose My Life/White Lies - Unfinished Business.mp3 +C:/Users/Rik/Music/Artists/Yellowcard/When You're Through Thinking, Say Yes/Yellowcard - Be the Young.mp3 +C:/Users/Rik/Music/Artists/Yellowcard/When You're Through Thinking, Say Yes/Yellowcard - For You and Your Denial.mp3 +C:/Users/Rik/Music/Artists/Yellowcard/When You're Through Thinking, Say Yes/Yellowcard - Hang You Up.mp3 +C:/Users/Rik/Music/Artists/Yellowcard/When You're Through Thinking, Say Yes/Yellowcard - Hide.mp3 +C:/Users/Rik/Music/Artists/Yellowcard/When You're Through Thinking, Say Yes/Yellowcard - Life of Leaving Home.mp3 +C:/Users/Rik/Music/Artists/Yellowcard/When You're Through Thinking, Say Yes/Yellowcard - Promises.mp3 +C:/Users/Rik/Music/Artists/Yellowcard/When You're Through Thinking, Say Yes/Yellowcard - See Me Smiling.mp3 +C:/Users/Rik/Music/Artists/Yellowcard/When You're Through Thinking, Say Yes/Yellowcard - Sing for Me (Acoustic).mp3 +C:/Users/Rik/Music/Artists/Yellowcard/When You're Through Thinking, Say Yes/Yellowcard - Sing for Me.mp3 +C:/Users/Rik/Music/Artists/Yellowcard/When You're Through Thinking, Say Yes/Yellowcard - Soundtrack.mp3 +C:/Users/Rik/Music/Artists/Yellowcard/When You're Through Thinking, Say Yes/Yellowcard - The Sound of You and Me.mp3 +C:/Users/Rik/Music/Artists/Yellowcard/When You're Through Thinking, Say Yes/Yellowcard - With You Around.mp3 +C:/Users/Rik/Music/Artists/Fall Out Boy/Infinity On High/Fall Out Boy - Bang The Doldrums.mp3 +C:/Users/Rik/Music/Artists/Fall Out Boy/Infinity On High/Fall Out Boy - Don't You Know Who I Think I Am.mp3 +C:/Users/Rik/Music/Artists/Fall Out Boy/Infinity On High/Fall Out Boy - Fame.mp3 +C:/Users/Rik/Music/Artists/Fall Out Boy/Infinity On High/Fall Out Boy - Hum Hallelujah.mp3 +C:/Users/Rik/Music/Artists/Fall Out Boy/Infinity On High/Fall Out Boy - I'm Like A Lawyer With The Way I'm Always Trying To Get You Off (me+you).mp3 +C:/Users/Rik/Music/Artists/Fall Out Boy/Infinity On High/Fall Out Boy - I've Got All This Ringing In My Ears And None On My Fingers.mp3 +C:/Users/Rik/Music/Artists/Fall Out Boy/Infinity On High/Fall Out Boy - Thanks For The Memories.mp3 +C:/Users/Rik/Music/Artists/Fall Out Boy/Infinity On High/Fall Out Boy - The (After) Life Of The Party.mp3 +C:/Users/Rik/Music/Artists/Fall Out Boy/Infinity On High/Fall Out Boy - The Carpal Tunnel Of Love.mp3 +C:/Users/Rik/Music/Artists/Fall Out Boy/Infinity On High/Fall Out Boy - The Take Over, The Breaks Over.mp3 +C:/Users/Rik/Music/Artists/Fall Out Boy/Infinity On High/Fall Out Boy - This Ain't A Scene, It's An Arms Race.mp3 +C:/Users/Rik/Music/Artists/Fall Out Boy/Infinity On High/Fall Out Boy - Thriller.mp3 +C:/Users/Rik/Music/Artists/Fall Out Boy/Infinity On High/Fall Out Boy - You're Crashing, But You're No Wave.mp3 +C:/Users/Rik/Music/Artists/Jimmy Eat World/Invented/Jimmy Eat World - Action Needs An Audience.mp3 +C:/Users/Rik/Music/Artists/Jimmy Eat World/Invented/Jimmy Eat World - Coffee And Cigarettes.mp3 +C:/Users/Rik/Music/Artists/Jimmy Eat World/Invented/Jimmy Eat World - Cut.mp3 +C:/Users/Rik/Music/Artists/Jimmy Eat World/Invented/Jimmy Eat World - Evidence.mp3 +C:/Users/Rik/Music/Artists/Jimmy Eat World/Invented/Jimmy Eat World - Heart Is Hard To Find.mp3 +C:/Users/Rik/Music/Artists/Jimmy Eat World/Invented/Jimmy Eat World - Higher Devotion.mp3 +C:/Users/Rik/Music/Artists/Jimmy Eat World/Invented/Jimmy Eat World - Invented.mp3 +C:/Users/Rik/Music/Artists/Jimmy Eat World/Invented/Jimmy Eat World - Littlething.mp3 +C:/Users/Rik/Music/Artists/Jimmy Eat World/Invented/Jimmy Eat World - Mixtape.mp3 +C:/Users/Rik/Music/Artists/Jimmy Eat World/Invented/Jimmy Eat World - Movielike.mp3 +C:/Users/Rik/Music/Artists/Jimmy Eat World/Invented/Jimmy Eat World - My Best Theory.mp3 +C:/Users/Rik/Music/Artists/Jimmy Eat World/Invented/Jimmy Eat World - Stop.mp3 +C:/Users/Rik/Music/Artists/Red/Until We Have Faces/Red - Best Is Yet to Come.mp3 +C:/Users/Rik/Music/Artists/Red/Until We Have Faces/Red - Buried Beneath.mp3 +C:/Users/Rik/Music/Artists/Red/Until We Have Faces/Red - Faceless.mp3 +C:/Users/Rik/Music/Artists/Red/Until We Have Faces/Red - Feed the Machine.mp3 +C:/Users/Rik/Music/Artists/Red/Until We Have Faces/Red - Hymn for the Missing.mp3 +C:/Users/Rik/Music/Artists/Red/Until We Have Faces/Red - Let It Burn.mp3 +C:/Users/Rik/Music/Artists/Red/Until We Have Faces/Red - Lie to Me (Denial).mp3 +C:/Users/Rik/Music/Artists/Red/Until We Have Faces/Red - Not Alone.mp3 +C:/Users/Rik/Music/Artists/Red/Until We Have Faces/Red - The Outside.mp3 +C:/Users/Rik/Music/Artists/Red/Until We Have Faces/Red - Watch You Crawl.mp3 +C:/Users/Rik/Music/Artists/Red/Until We Have Faces/Red - Who We Are.mp3 +C:/Users/Rik/Music/Artists/Framing Hanley/A Promise To Burn/Framing Hanley - Back To Go Again.mp3 +C:/Users/Rik/Music/Artists/Framing Hanley/A Promise To Burn/Framing Hanley - Bittersweet Sundown.mp3 +C:/Users/Rik/Music/Artists/Framing Hanley/A Promise To Burn/Framing Hanley - Fool With Dreams.mp3 +C:/Users/Rik/Music/Artists/Framing Hanley/A Promise To Burn/Framing Hanley - Intro.mp3 +C:/Users/Rik/Music/Artists/Framing Hanley/A Promise To Burn/Framing Hanley - Livin' So Divine.mp3 +C:/Users/Rik/Music/Artists/Framing Hanley/A Promise To Burn/Framing Hanley - Photographs & Gasoline.mp3 +C:/Users/Rik/Music/Artists/Framing Hanley/A Promise To Burn/Framing Hanley - The Burn.mp3 +C:/Users/Rik/Music/Artists/Framing Hanley/A Promise To Burn/Framing Hanley - The Promise.mp3 +C:/Users/Rik/Music/Artists/Framing Hanley/A Promise To Burn/Framing Hanley - Wake Up.mp3 +C:/Users/Rik/Music/Artists/Framing Hanley/A Promise To Burn/Framing Hanley - WarZone.mp3 +C:/Users/Rik/Music/Artists/Framing Hanley/A Promise To Burn/Framing Hanley - Weight of The World.mp3 +C:/Users/Rik/Music/Artists/Framing Hanley/A Promise To Burn/Framing Hanley - You Stupid Girl.mp3 +C:/Users/Rik/Music/Artists/Framing Hanley/A Promise To Burn/Framing Hanley - You.mp3 +C:/Users/Rik/Music/Artists/Anberlin/Cities/Anberlin - (Fin).mp3 +C:/Users/Rik/Music/Artists/Anberlin/Cities/Anberlin - A Whisper & A Clamour.mp3 +C:/Users/Rik/Music/Artists/Anberlin/Cities/Anberlin - Adelaide.mp3 +C:/Users/Rik/Music/Artists/Anberlin/Cities/Anberlin - Alexithymia.mp3 +C:/Users/Rik/Music/Artists/Anberlin/Cities/Anberlin - Debut.mp3 +C:/Users/Rik/Music/Artists/Anberlin/Cities/Anberlin - Dismantle. Repair.mp3 +C:/Users/Rik/Music/Artists/Anberlin/Cities/Anberlin - Godspeed.mp3 +C:/Users/Rik/Music/Artists/Anberlin/Cities/Anberlin - Hello Alone.mp3 +C:/Users/Rik/Music/Artists/Anberlin/Cities/Anberlin - Inevitable.mp3 +C:/Users/Rik/Music/Artists/Anberlin/Cities/Anberlin - Reclusion.mp3 +C:/Users/Rik/Music/Artists/Anberlin/Cities/Anberlin - The Promise.mp3 +C:/Users/Rik/Music/Artists/Anberlin/Cities/Anberlin - The Unwinding Cable Car.mp3 +C:/Users/Rik/Music/Artists/Anberlin/Cities/Anberlin - There Is A Light That Never Goes Dope.mp3 +C:/Users/Rik/Music/Artists/Anberlin/Cities/Anberlin - There Is No Mathematics To Love And Loss.mp3 +C:/Users/Rik/Music/Artists/Anberlin/Cities/Anberlin - Uncanny.mp3 +C:/Users/Rik/Music/Artists/Anberlin/New Surrender/Anberlin - Blame Me! Blame Me!.mp3 +C:/Users/Rik/Music/Artists/Anberlin/New Surrender/Anberlin - Breaking.mp3 +C:/Users/Rik/Music/Artists/Anberlin/New Surrender/Anberlin - Breathe.mp3 +C:/Users/Rik/Music/Artists/Anberlin/New Surrender/Anberlin - Burn Out Brighter (Northern Lights).mp3 +C:/Users/Rik/Music/Artists/Anberlin/New Surrender/Anberlin - Disappear.mp3 +C:/Users/Rik/Music/Artists/Anberlin/New Surrender/Anberlin - Feel Good Drag.mp3 +C:/Users/Rik/Music/Artists/Anberlin/New Surrender/Anberlin - Haight St.mp3 +C:/Users/Rik/Music/Artists/Anberlin/New Surrender/Anberlin - Misearbile Visu (Ex Malo Bonum).mp3 +C:/Users/Rik/Music/Artists/Anberlin/New Surrender/Anberlin - Retrace.mp3 +C:/Users/Rik/Music/Artists/Anberlin/New Surrender/Anberlin - Soft Skeletons.mp3 +C:/Users/Rik/Music/Artists/Anberlin/New Surrender/Anberlin - The Resistance.mp3 +C:/Users/Rik/Music/Artists/Anberlin/New Surrender/Anberlin - Younglife.mp3 +C:/Users/Rik/Music/Artists/Arcade Fire/Neon Bible/Arcade Fire - Antichrist Television Blues.mp3 +C:/Users/Rik/Music/Artists/Arcade Fire/Neon Bible/Arcade Fire - Black Mirror.mp3 +C:/Users/Rik/Music/Artists/Arcade Fire/Neon Bible/Arcade Fire - Black WaveBad Vibrations.mp3 +C:/Users/Rik/Music/Artists/Arcade Fire/Neon Bible/Arcade Fire - Intervention.mp3 +C:/Users/Rik/Music/Artists/Arcade Fire/Neon Bible/Arcade Fire - Keep The Car Running.mp3 +C:/Users/Rik/Music/Artists/Arcade Fire/Neon Bible/Arcade Fire - No Cars Go.mp3 +C:/Users/Rik/Music/Artists/Arcade Fire/Neon Bible/Arcade Fire - Ocean Of Noise.mp3 +C:/Users/Rik/Music/Artists/Arcade Fire/Neon Bible/Arcade Fire - Well & The Lighthouse, The.mp3 +C:/Users/Rik/Music/Artists/Arcade Fire/Neon Bible/Arcade Fire - Windowsill.mp3 +C:/Users/Rik/Music/Artists/Green Day/21st Century Breakdown/Green Day - %C2%A1Viva la Gloria!.mp3 +C:/Users/Rik/Music/Artists/The Gaslight Anthem/Sink or Swim/The Gaslight Anthem - 1990.mp3 +C:/Users/Rik/Music/Artists/The Gaslight Anthem/Sink or Swim/The Gaslight Anthem - Angry Johnny and the Radio.mp3 +C:/Users/Rik/Music/Artists/The Gaslight Anthem/Sink or Swim/The Gaslight Anthem - Bomboxes and Dictionaries.mp3 +C:/Users/Rik/Music/Artists/The Gaslight Anthem/Sink or Swim/The Gaslight Anthem - Drive.mp3 +C:/Users/Rik/Music/Artists/The Gaslight Anthem/Sink or Swim/The Gaslight Anthem - I Coul'da Been a Contender.mp3 +C:/Users/Rik/Music/Artists/The Gaslight Anthem/Sink or Swim/The Gaslight Anthem - I'da Called You Woody, Joe.mp3 +C:/Users/Rik/Music/Artists/The Gaslight Anthem/Sink or Swim/The Gaslight Anthem - Red in the Morning.mp3 +C:/Users/Rik/Music/Artists/The Gaslight Anthem/Sink or Swim/The Gaslight Anthem - We Came to Dance.mp3 +C:/Users/Rik/Music/Artists/The Gaslight Anthem/Sink or Swim/The Gaslight Anthem - We're Getting A Divorce, You Keep The Dinner.mp3 +C:/Users/Rik/Music/Artists/The Gaslight Anthem/Sink or Swim/The Gaslight Anthem - Wooderson.mp3 +C:/Users/Rik/Music/Artists/Volbeat/Guitar Gangsters & Cadillac Blood/Volbeat - Back To Prom.mp3 +C:/Users/Rik/Music/Artists/Volbeat/Guitar Gangsters & Cadillac Blood/Volbeat - Broken Man And The Dawn.mp3 +C:/Users/Rik/Music/Artists/Volbeat/Guitar Gangsters & Cadillac Blood/Volbeat - End Of The Road.mp3 +C:/Users/Rik/Music/Artists/Volbeat/Guitar Gangsters & Cadillac Blood/Volbeat - Find That Soul.mp3 +C:/Users/Rik/Music/Artists/Volbeat/Guitar Gangsters & Cadillac Blood/Volbeat - Guitar Gangsters & Cadillac Blood.mp3 +C:/Users/Rik/Music/Artists/Volbeat/Guitar Gangsters & Cadillac Blood/Volbeat - Hallelujah Goat.mp3 +C:/Users/Rik/Music/Artists/Volbeat/Guitar Gangsters & Cadillac Blood/Volbeat - I'm So Lonesome I Could Cry.mp3 +C:/Users/Rik/Music/Artists/Volbeat/Guitar Gangsters & Cadillac Blood/Volbeat - Light A Way.mp3 +C:/Users/Rik/Music/Artists/Volbeat/Guitar Gangsters & Cadillac Blood/Volbeat - Making Believe.mp3 +C:/Users/Rik/Music/Artists/Volbeat/Guitar Gangsters & Cadillac Blood/Volbeat - Mary Ann' s Place.mp3 +C:/Users/Rik/Music/Artists/Volbeat/Guitar Gangsters & Cadillac Blood/Volbeat - Maybellene I Hofteholder.mp3 +C:/Users/Rik/Music/Artists/Volbeat/Guitar Gangsters & Cadillac Blood/Volbeat - Still Counting.mp3 +C:/Users/Rik/Music/Artists/Volbeat/Guitar Gangsters & Cadillac Blood/Volbeat - We.mp3 +C:/Users/Rik/Music/Artists/Volbeat/Guitar Gangsters & Cadillac Blood/Volbeat - Wild Rover Of Hell.mp3 +C:/Users/Rik/Music/Artists/My Chemical Romance/Danger Days - The True Lives Of The Fabulous Killjoys/My Chemical Romance - Bulletproof Heart.mp3 +C:/Users/Rik/Music/Artists/My Chemical Romance/Danger Days - The True Lives Of The Fabulous Killjoys/My Chemical Romance - Destroya.mp3 +C:/Users/Rik/Music/Artists/My Chemical Romance/Danger Days - The True Lives Of The Fabulous Killjoys/My Chemical Romance - Party Poison.mp3 +C:/Users/Rik/Music/Artists/My Chemical Romance/Danger Days - The True Lives Of The Fabulous Killjoys/My Chemical Romance - Planetary (Go!).mp3 +C:/Users/Rik/Music/Artists/My Chemical Romance/Danger Days - The True Lives Of The Fabulous Killjoys/My Chemical Romance - Save Yourself- I'll Hold Them Back.mp3 +C:/Users/Rik/Music/Artists/My Chemical Romance/Danger Days - The True Lives Of The Fabulous Killjoys/My Chemical Romance - S-C-A-R-E-C-R-O-W.mp3 +C:/Users/Rik/Music/Artists/My Chemical Romance/Danger Days - The True Lives Of The Fabulous Killjoys/My Chemical Romance - Sing.mp3 +C:/Users/Rik/Music/Artists/My Chemical Romance/Danger Days - The True Lives Of The Fabulous Killjoys/My Chemical Romance - Summertime.mp3 +C:/Users/Rik/Music/Artists/My Chemical Romance/Danger Days - The True Lives Of The Fabulous Killjoys/My Chemical Romance - The Kids From Yesterday.mp3 +C:/Users/Rik/Music/Artists/My Chemical Romance/Danger Days - The True Lives Of The Fabulous Killjoys/My Chemical Romance - The Only Hope For Me Is You.mp3 +C:/Users/Rik/Music/Artists/My Chemical Romance/Danger Days - The True Lives Of The Fabulous Killjoys/My Chemical Romance - Vampire Money.mp3 +C:/Users/Rik/Music/Artists/Longwave/Secrets Are Sinister/Longwave - Eyes Like Headlights.mp3 +C:/Users/Rik/Music/Artists/Longwave/Secrets Are Sinister/Longwave - I Don't Dare.mp3 +C:/Users/Rik/Music/Artists/Longwave/Secrets Are Sinister/Longwave - It's True.mp3 +C:/Users/Rik/Music/Artists/Longwave/Secrets Are Sinister/Longwave - Life Is Wrong.mp3 +C:/Users/Rik/Music/Artists/Longwave/Secrets Are Sinister/Longwave - No Direction.mp3 +C:/Users/Rik/Music/Artists/Longwave/Secrets Are Sinister/Longwave - Satellites.mp3 +C:/Users/Rik/Music/Artists/Longwave/Secrets Are Sinister/Longwave - Secrets Are Sinister.mp3 +C:/Users/Rik/Music/Artists/Longwave/Secrets Are Sinister/Longwave - Shining Hours.mp3 +C:/Users/Rik/Music/Artists/Longwave/Secrets Are Sinister/Longwave - Sideways Sideways Rain.mp3 +C:/Users/Rik/Music/Artists/Longwave/Secrets Are Sinister/Longwave - Sirens In The Deep Sea.mp3 +C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/I'm With You/Red Hot Chili Peppers - Annie Wants a Baby.mp3 +C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/I'm With You/Red Hot Chili Peppers - Brendan's Death Song.mp3 +C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/I'm With You/Red Hot Chili Peppers - Dance, Dance, Dance.mp3 +C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/I'm With You/Red Hot Chili Peppers - Did I Let You Know.mp3 +C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/I'm With You/Red Hot Chili Peppers - Ethiopia.mp3 +C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/I'm With You/Red Hot Chili Peppers - Even You Brutus.mp3 +C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/I'm With You/Red Hot Chili Peppers - Factory of Faith.mp3 +C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/I'm With You/Red Hot Chili Peppers - Goodbye Hooray.mp3 +C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/I'm With You/Red Hot Chili Peppers - Happiness Loves Company.mp3 +C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/I'm With You/Red Hot Chili Peppers - Look Around.mp3 +C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/I'm With You/Red Hot Chili Peppers - Meet Me At the Corner.mp3 +C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/I'm With You/Red Hot Chili Peppers - Monarchy of Roses.mp3 +C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/I'm With You/Red Hot Chili Peppers - Police Station.mp3 +C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/I'm With You/Red Hot Chili Peppers - The Adventures of Rain Dance Maggie.mp3 +C:/Users/Rik/Music/Artists/Amber Pacific/Virtues/Amber Pacific - An Anthem For The Young At Heart.mp3 +C:/Users/Rik/Music/Artists/Amber Pacific/Virtues/Amber Pacific - Burdens Of The Past.mp3 +C:/Users/Rik/Music/Artists/Amber Pacific/Virtues/Amber Pacific - Conviction.mp3 +C:/Users/Rik/Music/Artists/Amber Pacific/Virtues/Amber Pacific - Shine.mp3 +C:/Users/Rik/Music/Artists/Amber Pacific/Virtues/Amber Pacific - Something To Be Said.mp3 +C:/Users/Rik/Music/Artists/Amber Pacific/Virtues/Amber Pacific - The Best Mistake.mp3 +C:/Users/Rik/Music/Artists/Amber Pacific/Virtues/Amber Pacific - The Girl Who Destroys.mp3 +C:/Users/Rik/Music/Artists/Amber Pacific/Virtues/Amber Pacific - The Good Life.mp3 +C:/Users/Rik/Music/Artists/Amber Pacific/Virtues/Amber Pacific - Three Words.mp3 +C:/Users/Rik/Music/Artists/Amber Pacific/Virtues/Amber Pacific - We Can't Fake This.mp3 +C:/Users/Rik/Music/Artists/Amber Pacific/Virtues/Amber Pacific - What Matters Most.mp3 +C:/Users/Rik/Music/Old/Nirvana - Smells Like Teen Spirit.mp3 +C:/Users/Rik/Music/Artists/10 Years Feeding/Feeding the Wolves/10 Years - Don't Fight It.mp3 +C:/Users/Rik/Music/Artists/Cold War Kids/Mine Is Yours/Cold War Kids - Broken Open.mp3 +C:/Users/Rik/Music/Artists/Cold War Kids/Mine Is Yours/Cold War Kids - Bulldozer.mp3 +C:/Users/Rik/Music/Artists/Cold War Kids/Mine Is Yours/Cold War Kids - Cold Toes On The Cold Floor.mp3 +C:/Users/Rik/Music/Artists/Cold War Kids/Mine Is Yours/Cold War Kids - Finally Begin.mp3 +C:/Users/Rik/Music/Artists/Cold War Kids/Mine Is Yours/Cold War Kids - Louder Than Ever.mp3 +C:/Users/Rik/Music/Artists/Cold War Kids/Mine Is Yours/Cold War Kids - Mine Is Yours.mp3 +C:/Users/Rik/Music/Artists/Cold War Kids/Mine Is Yours/Cold War Kids - Out Of The Wilderness.mp3 +C:/Users/Rik/Music/Artists/Cold War Kids/Mine Is Yours/Cold War Kids - Royal Blue.mp3 +C:/Users/Rik/Music/Artists/Cold War Kids/Mine Is Yours/Cold War Kids - Sensitive Kid.mp3 +C:/Users/Rik/Music/Artists/Cold War Kids/Mine Is Yours/Cold War Kids - Skip The Charades.mp3 +C:/Users/Rik/Music/Artists/Sum 41/Screaming Bloody Murder/Sum 41 - We're the Same.mp3 +C:/Users/Rik/Music/Artists/Maximo Park/Our Earthly Pleasures/Maximo Park - A Fortnight's Time.mp3 +C:/Users/Rik/Music/Artists/Maximo Park/Our Earthly Pleasures/Maximo Park - Books From Boxes.mp3 +C:/Users/Rik/Music/Artists/Maximo Park/Our Earthly Pleasures/Maximo Park - By The Monument.mp3 +C:/Users/Rik/Music/Artists/Maximo Park/Our Earthly Pleasures/Maximo Park - Girls Who Play Guitars.mp3 +C:/Users/Rik/Music/Artists/Maximo Park/Our Earthly Pleasures/Maximo Park - Karaoke Plays.mp3 +C:/Users/Rik/Music/Artists/Maximo Park/Our Earthly Pleasures/Maximo Park - Nosebleed.mp3 +C:/Users/Rik/Music/Artists/Maximo Park/Our Earthly Pleasures/Maximo Park - Our Velocity.mp3 +C:/Users/Rik/Music/Artists/Maximo Park/Our Earthly Pleasures/Maximo Park - Parisian Skies.mp3 +C:/Users/Rik/Music/Artists/Maximo Park/Our Earthly Pleasures/Maximo Park - Russian Literature.mp3 +C:/Users/Rik/Music/Artists/Maximo Park/Our Earthly Pleasures/Maximo Park - Sandblasted And Set Free.mp3 +C:/Users/Rik/Music/Artists/Maximo Park/Our Earthly Pleasures/Maximo Park - The Unshockable.mp3 +C:/Users/Rik/Music/Artists/Maximo Park/Our Earthly Pleasures/Maximo Park - Your Urge.mp3 +C:/Users/Rik/Music/Artists/Stereophonics/Keep Calm and Carry On/Stereophonics - 100MPH.mp3 +C:/Users/Rik/Music/Artists/Stereophonics/Keep Calm and Carry On/Stereophonics - Beerbottle.mp3 +C:/Users/Rik/Music/Artists/Stereophonics/Keep Calm and Carry On/Stereophonics - Could You Be The One.mp3 +C:/Users/Rik/Music/Artists/Stereophonics/Keep Calm and Carry On/Stereophonics - I Got Your Number.mp3 +C:/Users/Rik/Music/Artists/Stereophonics/Keep Calm and Carry On/Stereophonics - Innocent.mp3 +C:/Users/Rik/Music/Artists/Stereophonics/Keep Calm and Carry On/Stereophonics - Live 'N' Love.mp3 +C:/Users/Rik/Music/Artists/Stereophonics/Keep Calm and Carry On/Stereophonics - She's Alright.mp3 +C:/Users/Rik/Music/Artists/Stereophonics/Keep Calm and Carry On/Stereophonics - Show Me How.mp3 +C:/Users/Rik/Music/Artists/Stereophonics/Keep Calm and Carry On/Stereophonics - Stuck In A Rut.mp3 +C:/Users/Rik/Music/Artists/Stereophonics/Keep Calm and Carry On/Stereophonics - Trouble.mp3 +C:/Users/Rik/Music/Artists/Stereophonics/Keep Calm and Carry On/Stereophonics - Uppercut.mp3 +C:/Users/Rik/Music/Artists/Stereophonics/Keep Calm and Carry On/Stereophonics - Wonder.mp3 +C:/Users/Rik/Music/Artists/Foo Fighters/Greatest Hits/Foo Fighters - Everlong (Acoustic).mp3 +C:/Users/Rik/Music/Artists/Lifehouse/Smoke & Mirrors/Lifehouse - Everything (Live).mp3 +C:/Users/Rik/Music/Artists/Amber Pacific/Virtues/Amber Pacific - Forever.mp3 +C:/Users/Rik/Music/Artists/Blink-182/Neighborhoods/Blink-182 - After Midnight.mp3 +C:/Users/Rik/Music/Artists/Blink-182/Neighborhoods/Blink-182 - Even If She Falls.mp3 +C:/Users/Rik/Music/Artists/Blink-182/Neighborhoods/Blink-182 - Fighting the Gravity.mp3 +C:/Users/Rik/Music/Artists/Blink-182/Neighborhoods/Blink-182 - Ghost On The Dance Floor.mp3 +C:/Users/Rik/Music/Artists/Blink-182/Neighborhoods/Blink-182 - Heart's All Gone (Interlude).mp3 +C:/Users/Rik/Music/Artists/Blink-182/Neighborhoods/Blink-182 - Heart's All Gone.mp3 +C:/Users/Rik/Music/Artists/Blink-182/Neighborhoods/Blink-182 - Kaleidoscope.mp3 +C:/Users/Rik/Music/Artists/Blink-182/Neighborhoods/Blink-182 - Love Is Dangerous.mp3 +C:/Users/Rik/Music/Artists/Blink-182/Neighborhoods/Blink-182 - Mh 4.18.2011.mp3 +C:/Users/Rik/Music/Artists/Blink-182/Neighborhoods/Blink-182 - Natives.mp3 +C:/Users/Rik/Music/Artists/Blink-182/Neighborhoods/Blink-182 - Snake Charmer.mp3 +C:/Users/Rik/Music/Artists/Blink-182/Neighborhoods/Blink-182 - This Is Home.mp3 +C:/Users/Rik/Music/Artists/Blink-182/Neighborhoods/Blink-182 - Up All Night.mp3 +C:/Users/Rik/Music/Artists/Blink-182/Neighborhoods/Blink-182 - Wishing Well.mp3 +C:/Users/Rik/Music/Artists/Longwave/Secrets Are Sinister/Longwave - The Devil And The Liar.mp3 +C:/Users/Rik/Music/Artists/Kane/Singles Only/Kane - All I Can Do.mp3 +C:/Users/Rik/Music/Artists/Kane/Singles Only/Kane - Believe It.mp3 +C:/Users/Rik/Music/Artists/Kane/Singles Only/Kane - Can You Handle Me.mp3 +C:/Users/Rik/Music/Artists/Kane/Singles Only/Kane - Catwalk Criminal.mp3 +C:/Users/Rik/Music/Artists/Kane/Singles Only/Kane - Damn Those Eyes.mp3 +C:/Users/Rik/Music/Artists/Kane/Singles Only/Kane - Dreamer.mp3 +C:/Users/Rik/Music/Artists/Kane/Singles Only/Kane - Fearless.mp3 +C:/Users/Rik/Music/Artists/Kane/Singles Only/Kane - Hold On to the World.mp3 +C:/Users/Rik/Music/Artists/Kane/Singles Only/Kane - I Will Keep My Head Down.mp3 +C:/Users/Rik/Music/Artists/Kane/Singles Only/Kane - In Over My Head.mp3 +C:/Users/Rik/Music/Artists/Kane/Singles Only/Kane - It's London Calling.mp3 +C:/Users/Rik/Music/Artists/Kane/Singles Only/Kane - Let It Be.mp3 +C:/Users/Rik/Music/Artists/Kane/Singles Only/Kane - Love Over Healing.mp3 +C:/Users/Rik/Music/Artists/Kane/Singles Only/Kane - My Best Wasn't Good Enough.mp3 +C:/Users/Rik/Music/Artists/Kane/Singles Only/Kane - No Surrender.mp3 +C:/Users/Rik/Music/Artists/Kane/Singles Only/Kane - Rain Down On Me.mp3 +C:/Users/Rik/Music/Artists/Kane/Singles Only/Kane - Scream.mp3 +C:/Users/Rik/Music/Artists/Kane/Singles Only/Kane - Shot of a Gun.mp3 +C:/Users/Rik/Music/Artists/Kane/Singles Only/Kane - So Glad You Made It.mp3 +C:/Users/Rik/Music/Artists/Kane/Singles Only/Kane - Something to Say.mp3 +C:/Users/Rik/Music/Artists/Kane/Singles Only/Kane - Wanna Make It Happen.mp3 +C:/Users/Rik/Music/Artists/Kane/Singles Only/Kane - Where Do I Go Now.mp3 +C:/Users/Rik/Music/Artists/Coldplay/Mylo Xyloto/Coldplay - A Hopeful Transmission.mp3 +C:/Users/Rik/Music/Artists/Coldplay/Mylo Xyloto/Coldplay - Charlie Brown.mp3 +C:/Users/Rik/Music/Artists/Coldplay/Mylo Xyloto/Coldplay - Don't Let It Break Your Heart.mp3 +C:/Users/Rik/Music/Artists/Coldplay/Mylo Xyloto/Coldplay - Every Teardrop Is a Waterfall.mp3 +C:/Users/Rik/Music/Artists/Coldplay/Mylo Xyloto/Coldplay - Hurts Like Heaven.mp3 +C:/Users/Rik/Music/Artists/Coldplay/Mylo Xyloto/Coldplay - M.M.I.X..mp3 +C:/Users/Rik/Music/Artists/Coldplay/Mylo Xyloto/Coldplay - Major Minus.mp3 +C:/Users/Rik/Music/Artists/Coldplay/Mylo Xyloto/Coldplay - Mylo Xyloto.mp3 +C:/Users/Rik/Music/Artists/Coldplay/Mylo Xyloto/Coldplay - Paradise.mp3 +C:/Users/Rik/Music/Artists/Coldplay/Mylo Xyloto/Coldplay - Princess of China.mp3 +C:/Users/Rik/Music/Artists/Coldplay/Mylo Xyloto/Coldplay - U.F.O..mp3 +C:/Users/Rik/Music/Artists/Coldplay/Mylo Xyloto/Coldplay - Up in Flames.mp3 +C:/Users/Rik/Music/Artists/Coldplay/Mylo Xyloto/Coldplay - Up with the Birds.mp3 +C:/Users/Rik/Music/Artists/Coldplay/Mylo Xyloto/Coldplay - Us Against the World.mp3 +C:/Users/Rik/Music/Artists/Kane/Singles Only/Kane - High Places.mp3 +C:/Users/Rik/Music/Artists/White Lies/Ritual/White Lies - Bad Love.mp3 +C:/Users/Rik/Music/Artists/White Lies/Ritual/White Lies - Bigger Than Us.mp3 +C:/Users/Rik/Music/Artists/White Lies/Ritual/White Lies - Come Down.mp3 +C:/Users/Rik/Music/Artists/White Lies/Ritual/White Lies - Holy Ghost.mp3 +C:/Users/Rik/Music/Artists/White Lies/Ritual/White Lies - Is Love.mp3 +C:/Users/Rik/Music/Artists/White Lies/Ritual/White Lies - Peace & Quiet.mp3 +C:/Users/Rik/Music/Artists/White Lies/Ritual/White Lies - Strangers.mp3 +C:/Users/Rik/Music/Artists/White Lies/Ritual/White Lies - Streetlights.mp3 +C:/Users/Rik/Music/Artists/White Lies/Ritual/White Lies - The Power & The Glory.mp3 +C:/Users/Rik/Music/Artists/White Lies/Ritual/White Lies - Turn The Bells.mp3 +C:/Users/Rik/Music/Artists/Destine/Destine - Thousand Miles.mp3 +C:/Users/Rik/Music/Artists/The Seer/Heading for the Sun/The Seer - Dive Into The Blue Sky.mp3 +C:/Users/Rik/Music/Artists/The Seer/Heading for the Sun/The Seer - Eyes Gone Blind.mp3 +C:/Users/Rik/Music/Artists/The Seer/Heading for the Sun/The Seer - Fallen Leaves.mp3 +C:/Users/Rik/Music/Artists/The Seer/Heading for the Sun/The Seer - Rain Down On Me.mp3 +C:/Users/Rik/Music/Artists/The Seer/Heading for the Sun/The Seer - Raining.mp3 +C:/Users/Rik/Music/Artists/The Seer/Heading for the Sun/The Seer - Setting Sails.mp3 +C:/Users/Rik/Music/Artists/The Seer/Heading for the Sun/The Seer - The Borderline.mp3 +C:/Users/Rik/Music/Artists/The Seer/Heading for the Sun/The Seer - The Enemy.mp3 +C:/Users/Rik/Music/Artists/The Seer/Heading for the Sun/The Seer - Wasted.mp3 +C:/Users/Rik/Music/Artists/The Seer/Heading for the Sun/The Seer - What We Are.mp3 +C:/Users/Rik/Music/Artists/The Seer/Heading for the Sun/The Seer - Where Do We Go.mp3 +C:/Users/Rik/Music/Artists/The Seer/Heading for the Sun/The Seer - Wishful Thinking.mp3 +C:/Users/Rik/Music/Old/Bruce Springsteen/Bruce Springsteen - The River.mp3 +C:/Users/Rik/Music/Archive/Artists/Snow Patrol/Fallen Empires/Snow Patrol - Called Out In The Dark.mp3 +C:/Users/Rik/Music/Archive/Artists/Snow Patrol/Fallen Empires/Snow Patrol - This Isn't Everything You Are.mp3 +C:/Users/Rik/Music/Archive/Artists/The Wombats/This Modern Glitch/The Wombats - Techno Fan.mp3 +C:/Users/Rik/Music/Archive/Artists/The Wombats/This Modern Glitch/The Wombats - Tokyo (Vampires & Wolves).mp3 +C:/Users/Rik/Music/Artists/The Offspring/Rise and Fall Rage and Grace/The Offspring - A Lot Like Me.mp3 +C:/Users/Rik/Music/Artists/The Offspring/Rise and Fall Rage and Grace/The Offspring - Fix You.mp3 +C:/Users/Rik/Music/Artists/The Offspring/Rise and Fall Rage and Grace/The Offspring - Half-Truism.mp3 +C:/Users/Rik/Music/Artists/The Offspring/Rise and Fall Rage and Grace/The Offspring - Hammerhead.mp3 +C:/Users/Rik/Music/Artists/The Offspring/Rise and Fall Rage and Grace/The Offspring - Kristy, Are You Doing Okay.mp3 +C:/Users/Rik/Music/Artists/The Offspring/Rise and Fall Rage and Grace/The Offspring - Let's Hear It For Rock Bottom.mp3 +C:/Users/Rik/Music/Artists/The Offspring/Rise and Fall Rage and Grace/The Offspring - Nothingtown.mp3 +C:/Users/Rik/Music/Artists/The Offspring/Rise and Fall Rage and Grace/The Offspring - O.C. Life.mp3 +C:/Users/Rik/Music/Artists/The Offspring/Rise and Fall Rage and Grace/The Offspring - Rise And Fall.mp3 +C:/Users/Rik/Music/Artists/The Offspring/Rise and Fall Rage and Grace/The Offspring - Stuff Is Messed Up.mp3 +C:/Users/Rik/Music/Artists/The Offspring/Rise and Fall Rage and Grace/The Offspring - Takes Me Nowhere.mp3 +C:/Users/Rik/Music/Artists/The Offspring/Rise and Fall Rage and Grace/The Offspring - Trust In You.mp3 +C:/Users/Rik/Music/Artists/The Offspring/Rise and Fall Rage and Grace/The Offspring - You're Gonna Go Far, Kid.mp3 +C:/Users/Rik/Music/Artists/Nickelback/Here and Now/Nickelback - Bottoms Up.mp3 +C:/Users/Rik/Music/Artists/Nickelback/Here and Now/Nickelback - Don't Ever Let It End.mp3 +C:/Users/Rik/Music/Artists/Nickelback/Here and Now/Nickelback - Everything I Wanna Do.mp3 +C:/Users/Rik/Music/Artists/Nickelback/Here and Now/Nickelback - Gotta Get Me Some.mp3 +C:/Users/Rik/Music/Artists/Nickelback/Here and Now/Nickelback - Holding On to Heaven.mp3 +C:/Users/Rik/Music/Artists/Nickelback/Here and Now/Nickelback - Kiss It Goodbye.mp3 +C:/Users/Rik/Music/Artists/Nickelback/Here and Now/Nickelback - Lullaby.mp3 +C:/Users/Rik/Music/Artists/Nickelback/Here and Now/Nickelback - Midnight Queen.mp3 +C:/Users/Rik/Music/Artists/Nickelback/Here and Now/Nickelback - This Means War.mp3 +C:/Users/Rik/Music/Artists/Nickelback/Here and Now/Nickelback - Trying Not to Love You.mp3 +C:/Users/Rik/Music/Artists/Nickelback/Here and Now/Nickelback - When We Stand Together.mp3 +C:/Users/Rik/Music/Artists/The Vaccines/What Did You Expect From The Vaccines/The Vaccines - A Lack of Understanding.mp3 +C:/Users/Rik/Music/Artists/The Vaccines/What Did You Expect From The Vaccines/The Vaccines - All in White.mp3 +C:/Users/Rik/Music/Artists/The Vaccines/What Did You Expect From The Vaccines/The Vaccines - Blow It Up.mp3 +C:/Users/Rik/Music/Artists/The Vaccines/What Did You Expect From The Vaccines/The Vaccines - Family Friend.mp3 +C:/Users/Rik/Music/Artists/The Vaccines/What Did You Expect From The Vaccines/The Vaccines - If You Wanna.mp3 +C:/Users/Rik/Music/Artists/The Vaccines/What Did You Expect From The Vaccines/The Vaccines - N%C3%B8rgaard.mp3 +C:/Users/Rik/Music/Artists/The Vaccines/What Did You Expect From The Vaccines/The Vaccines - Post Break-Up Sex.mp3 +C:/Users/Rik/Music/Artists/The Vaccines/What Did You Expect From The Vaccines/The Vaccines - Under Your Thumb.mp3 +C:/Users/Rik/Music/Artists/The Vaccines/What Did You Expect From The Vaccines/The Vaccines - Westsuit.mp3 +C:/Users/Rik/Music/Artists/The Vaccines/What Did You Expect From The Vaccines/The Vaccines - Wolf Pack.mp3 +C:/Users/Rik/Music/Artists/The Vaccines/What Did You Expect From The Vaccines/The Vaccines - Wreckin' Bar.mp3 +C:/Users/Rik/Music/Artists/Daughtry/Leave This Town/Daughtry - Call Your Name.mp3 +C:/Users/Rik/Music/Artists/Daughtry/Leave This Town/Daughtry - Every Time You Turn Around.mp3 +C:/Users/Rik/Music/Artists/Daughtry/Leave This Town/Daughtry - Ghost Of Me.mp3 +C:/Users/Rik/Music/Artists/Daughtry/Leave This Town/Daughtry - Learn My Lesson.mp3 +C:/Users/Rik/Music/Artists/Daughtry/Leave This Town/Daughtry - Life After You.mp3 +C:/Users/Rik/Music/Artists/Daughtry/Leave This Town/Daughtry - No Surprise.mp3 +C:/Users/Rik/Music/Artists/Daughtry/Leave This Town/Daughtry - Open Up Your Eyes.mp3 +C:/Users/Rik/Music/Artists/Daughtry/Leave This Town/Daughtry - September.mp3 +C:/Users/Rik/Music/Artists/Daughtry/Leave This Town/Daughtry - Supernatural.mp3 +C:/Users/Rik/Music/Artists/Daughtry/Leave This Town/Daughtry - Tennessee Line.mp3 +C:/Users/Rik/Music/Artists/Daughtry/Leave This Town/Daughtry - What I Meant To Say.mp3 +C:/Users/Rik/Music/Artists/Daughtry/Leave This Town/Daughtry - You Don't Belong.mp3 +C:/Users/Rik/Music/Artists/Moke/The Long & Dangerous Sea/Moke - Black And Blue.mp3 +C:/Users/Rik/Music/Artists/Moke/The Long & Dangerous Sea/Moke - Ghost.mp3 +C:/Users/Rik/Music/Artists/Moke/The Long & Dangerous Sea/Moke - Heaven.mp3 +C:/Users/Rik/Music/Artists/Moke/The Long & Dangerous Sea/Moke - Lament.mp3 +C:/Users/Rik/Music/Artists/Moke/The Long & Dangerous Sea/Moke - Love My Life.mp3 +C:/Users/Rik/Music/Artists/Moke/The Long & Dangerous Sea/Moke - Nobody's Listening.mp3 +C:/Users/Rik/Music/Artists/Moke/The Long & Dangerous Sea/Moke - Switch.mp3 +C:/Users/Rik/Music/Artists/Moke/The Long & Dangerous Sea/Moke - Terrible End.mp3 +C:/Users/Rik/Music/Artists/Moke/The Long & Dangerous Sea/Moke - The Long & Dangerous Sea.mp3 +C:/Users/Rik/Music/Artists/Moke/The Long & Dangerous Sea/Moke - Windows Of Hope.mp3 +C:/Users/Rik/Music/Artists/Placebo/Battle for the Sun/Placebo - Ashtray Heart.mp3 +C:/Users/Rik/Music/Artists/Placebo/Battle for the Sun/Placebo - Battle for the Sun.mp3 +C:/Users/Rik/Music/Artists/Placebo/Battle for the Sun/Placebo - Breathe Underwater.mp3 +C:/Users/Rik/Music/Artists/Placebo/Battle for the Sun/Placebo - Bright Lights.mp3 +C:/Users/Rik/Music/Artists/Placebo/Battle for the Sun/Placebo - Come Undone.mp3 +C:/Users/Rik/Music/Artists/Placebo/Battle for the Sun/Placebo - Devil in the Details.mp3 +C:/Users/Rik/Music/Artists/Placebo/Battle for the Sun/Placebo - For What It's Worth.mp3 +C:/Users/Rik/Music/Artists/Placebo/Battle for the Sun/Placebo - Happy You're Gone.mp3 +C:/Users/Rik/Music/Artists/Placebo/Battle for the Sun/Placebo - Julien.mp3 +C:/Users/Rik/Music/Artists/Placebo/Battle for the Sun/Placebo - Kings of Medicine.mp3 +C:/Users/Rik/Music/Artists/Placebo/Battle for the Sun/Placebo - Kitty Litter.mp3 +C:/Users/Rik/Music/Artists/Placebo/Battle for the Sun/Placebo - Speak in Tongues.mp3 +C:/Users/Rik/Music/Artists/Placebo/Battle for the Sun/Placebo - The Never-Ending Why.mp3 +C:/Users/Rik/Music/Artists/Keane/Night Train/Keane - Back In Time.mp3 +C:/Users/Rik/Music/Artists/Keane/Night Train/Keane - Clear Skies.mp3 +C:/Users/Rik/Music/Artists/Keane/Night Train/Keane - House Lights.mp3 +C:/Users/Rik/Music/Artists/Keane/Night Train/Keane - Ishin Denshin (You've Got To Help Yourself).mp3 +C:/Users/Rik/Music/Artists/Keane/Night Train/Keane - Looking Back.mp3 +C:/Users/Rik/Music/Artists/Keane/Night Train/Keane - My Shadow.mp3 +C:/Users/Rik/Music/Artists/Keane/Night Train/Keane - Stop For a Minute.mp3 +C:/Users/Rik/Music/Artists/Keane/Night Train/Keane - Your Love.mp3 +C:/Users/Rik/Music/Artists/Keane/Under The Iron Sea/Keane - A Bad Dream.mp3 +C:/Users/Rik/Music/Artists/Keane/Under The Iron Sea/Keane - Atlantic.mp3 +C:/Users/Rik/Music/Artists/Keane/Under The Iron Sea/Keane - Broken Toy.mp3 +C:/Users/Rik/Music/Artists/Keane/Under The Iron Sea/Keane - Crystal Ball.mp3 +C:/Users/Rik/Music/Artists/Keane/Under The Iron Sea/Keane - Hamburg Song.mp3 +C:/Users/Rik/Music/Artists/Keane/Under The Iron Sea/Keane - Is It Any Wonder.mp3 +C:/Users/Rik/Music/Artists/Keane/Under The Iron Sea/Keane - Leaving So Soon.mp3 +C:/Users/Rik/Music/Artists/Keane/Under The Iron Sea/Keane - Let It Slide .mp3 +C:/Users/Rik/Music/Artists/Keane/Under The Iron Sea/Keane - Nothing In My Way.mp3 +C:/Users/Rik/Music/Artists/Keane/Under The Iron Sea/Keane - Put It Behind You.mp3 +C:/Users/Rik/Music/Artists/Keane/Under The Iron Sea/Keane - The Frog Prince.mp3 +C:/Users/Rik/Music/Artists/Keane/Under The Iron Sea/Keane - The Iron Sea.mp3 +C:/Users/Rik/Music/Artists/Keane/Under The Iron Sea/Keane - Try Again.mp3 +C:/Users/Rik/Music/Artists/Hey Monday/Hold On Tight/Hey Monday - 6 Months.mp3 +C:/Users/Rik/Music/Artists/Hey Monday/Hold On Tight/Hey Monday - Arizona.mp3 +C:/Users/Rik/Music/Artists/Hey Monday/Hold On Tight/Hey Monday - Candles.mp3 +C:/Users/Rik/Music/Artists/Hey Monday/Hold On Tight/Hey Monday - Homecoming.mp3 +C:/Users/Rik/Music/Artists/Hey Monday/Hold On Tight/Hey Monday - How You Love Me Now.mp3 +C:/Users/Rik/Music/Artists/Hey Monday/Hold On Tight/Hey Monday - Hurricane Streets.mp3 +C:/Users/Rik/Music/Artists/Hey Monday/Hold On Tight/Hey Monday - Josey.mp3 +C:/Users/Rik/Music/Artists/Hey Monday/Hold On Tight/Hey Monday - Obvious.mp3 +C:/Users/Rik/Music/Artists/Hey Monday/Hold On Tight/Hey Monday - Run, Don't Walk.mp3 +C:/Users/Rik/Music/Artists/Hey Monday/Hold On Tight/Hey Monday - Set Off.mp3 +C:/Users/Rik/Music/Artists/Hey Monday/Hold On Tight/Hey Monday - Should've Tried Harder.mp3 +C:/Users/Rik/Music/Artists/Mae/The Everglow/Mae - Anything.mp3 +C:/Users/Rik/Music/Artists/Mae/The Everglow/Mae - Breakdown.mp3 +C:/Users/Rik/Music/Artists/Mae/The Everglow/Mae - Cover Me.mp3 +C:/Users/Rik/Music/Artists/Mae/The Everglow/Mae - Epilogue.mp3 +C:/Users/Rik/Music/Artists/Mae/The Everglow/Mae - Mistakes we Knew we Were Making.mp3 +C:/Users/Rik/Music/Artists/Mae/The Everglow/Mae - Painless.mp3 +C:/Users/Rik/Music/Artists/Mae/The Everglow/Mae - Prologue.mp3 +C:/Users/Rik/Music/Artists/Mae/The Everglow/Mae - Ready and Waiting to Fall.mp3 +C:/Users/Rik/Music/Artists/Mae/The Everglow/Mae - Someone Else's Arms.mp3 +C:/Users/Rik/Music/Artists/Mae/The Everglow/Mae - Suspension.mp3 +C:/Users/Rik/Music/Artists/Mae/The Everglow/Mae - The Everglow.mp3 +C:/Users/Rik/Music/Artists/Mae/The Everglow/Mae - The Ocean.mp3 +C:/Users/Rik/Music/Artists/Mae/The Everglow/Mae - The Sun and the Moon.mp3 +C:/Users/Rik/Music/Artists/Mae/The Everglow/Mae - This is the Countdown.mp3 +C:/Users/Rik/Music/Artists/Mae/The Everglow/Mae - We're So Far Away.mp3 +C:/Users/Rik/Music/Artists/Saves the Day/Saves the Day - All I'm Losing Is Me.mp3 +C:/Users/Rik/Music/Artists/Saves the Day/Saves the Day - At Your Funeral.mp3 +C:/Users/Rik/Music/Artists/Saves the Day/Saves the Day - Cars And Calories.mp3 +C:/Users/Rik/Music/Artists/Saves the Day/Saves the Day - Certain Tragedy.mp3 +C:/Users/Rik/Music/Artists/Saves the Day/Saves the Day - Firefly.mp3 +C:/Users/Rik/Music/Artists/Saves the Day/Saves the Day - Freakish.mp3 +C:/Users/Rik/Music/Artists/Saves the Day/Saves the Day - Jukebox Breakdown.mp3 +C:/Users/Rik/Music/Artists/Saves the Day/Saves the Day - Nightingale.mp3 +C:/Users/Rik/Music/Artists/Saves the Day/Saves the Day - See You.mp3 +C:/Users/Rik/Music/Artists/Saves the Day/Saves the Day - This Is Not An Exit.mp3 +C:/Users/Rik/Music/Artists/Saves the Day/Saves the Day - Your Ghost Takes Flight.mp3 \ No newline at end of file diff --git a/src/main/resources/txt/options b/src/main/resources/txt/options new file mode 100644 index 0000000..4d95aae --- /dev/null +++ b/src/main/resources/txt/options @@ -0,0 +1,182 @@ +LAME 32bits version 3.98.4 (http://www.mp3dev.org/) + +usage: lame [options] [outfile] + + and/or can be "-", which means stdin/stdout. + +RECOMMENDED: + lame -V2 input.wav output.mp3 + +OPTIONS: + Input options: + --scale scale input (multiply PCM data) by + --scale-l scale channel 0 (left) input (multiply PCM data) by + --scale-r scale channel 1 (right) input (multiply PCM data) by + --mp1input input file is a MPEG Layer I file + --mp2input input file is a MPEG Layer II file + --mp3input input file is a MPEG Layer III file + --nogap <...> + gapless encoding for a set of contiguous files + --nogapout + output dir for gapless encoding (must precede --nogap) + --nogaptags allow the use of VBR tags in gapless encoding + + Input options for RAW PCM: + -r input is raw pcm + -x force byte-swapping of input + -s sfreq sampling frequency of input file (kHz) - default 44.1 kHz + --bitwidth w input bit width is w (default 16) + --signed input is signed (default) + --unsigned input is unsigned + --little-endian input is little-endian (default) + --big-endian input is big-endian + + + Operational options: + -a downmix from stereo to mono file for mono encoding + -m (j)oint, (s)imple, (f)orce, (d)dual-mono, (m)ono + default is (j) or (s) depending on bitrate + joint = joins the best possible of MS and LR stereo + simple = force LR stereo on all frames + force = force MS stereo on all frames. + --preset type type must be "medium", "standard", "extreme", "insane", + or a value for an average desired bitrate and depending + on the value specified, appropriate quality settings will + be used. + "--preset help" gives more info on these + --comp choose bitrate to achive a compression ratio of + --replaygain-fast compute RG fast but slightly inaccurately (default) + --replaygain-accurate compute RG more accurately and find the peak sample + --noreplaygain disable ReplayGain analysis + --clipdetect enable --replaygain-accurate and print a message whether + clipping occurs and how far the waveform is from full scale + --flush flush output stream as soon as possible + --freeformat produce a free format bitstream + --decode input=mp3 file, output=wav + -t disable writing wav header when using --decode + + + Verbosity: + --disptime print progress report every arg seconds + -S don't print progress report, VBR histograms + --nohist disable VBR histogram display + --silent don't print anything on screen + --quiet don't print anything on screen + --brief print more useful information + --verbose print a lot of useful information + + Noise shaping & psycho acoustic algorithms: + -q = 0...9. Default -q 5 + -q 0: Highest quality, very slow + -q 9: Poor quality, but fast + -h Same as -q 2. Recommended. + -f Same as -q 7. Fast, ok quality + + + CBR (constant bitrate, the default) options: + -b set the bitrate in kbps, default 128 kbps + --cbr enforce use of constant bitrate + + ABR options: + --abr specify average bitrate desired (instead of quality) + + VBR options: + -V n quality setting for VBR. default n=4 + 0=high quality,bigger files. 9=smaller files + -v the same as -V 4 + --vbr-old use old variable bitrate (VBR) routine + --vbr-new use new variable bitrate (VBR) routine (default) + -b specify minimum allowed bitrate, default 32 kbps + -B specify maximum allowed bitrate, default 320 kbps + -F strictly enforce the -b option, for use with players that + do not support low bitrate mp3 + -t disable writing LAME Tag + -T enable and force writing LAME Tag + + + PSY related: + --temporal-masking x x=0 disables, x=1 enables temporal masking effect + --nssafejoint M/S switching criterion + --nsmsfix M/S switching tuning [effective 0-3.5] + --interch x adjust inter-channel masking ratio + --ns-bass x adjust masking for sfbs 0 - 6 (long) 0 - 5 (short) + --ns-alto x adjust masking for sfbs 7 - 13 (long) 6 - 10 (short) + --ns-treble x adjust masking for sfbs 14 - 21 (long) 11 - 12 (short) + --ns-sfb21 x change ns-treble by x dB for sfb21 + + + experimental switches: + -Y lets LAME ignore noise in sfb21, like in CBR + + + MP3 header/stream options: + -e de-emphasis n/5/c (obsolete) + -c mark as copyright + -o mark as non-original + -p error protection. adds 16 bit checksum to every frame + (the checksum is computed correctly) + --nores disable the bit reservoir + --strictly-enforce-ISO comply as much as possible to ISO MPEG spec + + Filter options: + --lowpass frequency(kHz), lowpass filter cutoff above freq + --lowpass-width frequency(kHz) - default 15% of lowpass freq + --highpass frequency(kHz), highpass filter cutoff below freq + --highpass-width frequency(kHz) - default 15% of highpass freq + --resample sampling frequency of output file(kHz)- default=automatic + + + ID3 tag options: + --tt audio/song title (max 30 chars for version 1 tag) + --ta <artist> audio/song artist (max 30 chars for version 1 tag) + --tl <album> audio/song album (max 30 chars for version 1 tag) + --ty <year> audio/song year of issue (1 to 9999) + --tc <comment> user-defined text (max 30 chars for v1 tag, 28 for v1.1) + --tn <track[/total]> audio/song track number and (optionally) the total + number of tracks on the original recording. (track + and total each 1 to 255. just the track number + creates v1.1 tag, providing a total forces v2.0). + --tg <genre> audio/song genre (name or number in list) + --ti <file> audio/song albumArt (jpeg/png/gif file, 128KB max, v2.3) + --tv <id=value> user-defined frame specified by id and value (v2.3 tag) + --add-id3v2 force addition of version 2 tag + --id3v1-only add only a version 1 tag + --id3v2-only add only a version 2 tag + --space-id3v1 pad version 1 tag with spaces instead of nulls + --pad-id3v2 same as '--pad-id3v2-size 128' + --pad-id3v2-size <value> adds version 2 tag, pad with extra <value> bytes + --genre-list print alphabetically sorted ID3 genre list and exit + --ignore-tag-errors ignore errors in values passed for tags + + Note: A version 2 tag will NOT be added unless one of the input fields + won't fit in a version 1 tag (e.g. the title string is longer than 30 + characters), or the '--add-id3v2' or '--id3v2-only' options are used, + or output is redirected to stdout. + + +MS-Windows-specific options: + --priority <type> sets the process priority: + 0,1 = Low priority (IDLE_PRIORITY_CLASS) + 2 = normal priority (NORMAL_PRIORITY_CLASS, default) + 3,4 = High priority (HIGH_PRIORITY_CLASS)) + Note: Calling '--priority' without a parameter will select priority 0. + +Misc: + --license print License information + + + + Platform specific: + --noasm <instructions> disable assembly optimizations for mmx/3dnow/sse + + + +MPEG-1 layer III sample frequencies (kHz): 32 48 44.1 +bitrates (kbps): 32 40 48 56 64 80 96 112 128 160 192 224 256 320 + +MPEG-2 layer III sample frequencies (kHz): 16 24 22.05 +bitrates (kbps): 8 16 24 32 40 48 56 64 80 96 112 128 144 160 + +MPEG-2.5 layer III sample frequencies (kHz): 8 12 11.025 +bitrates (kbps): 8 16 24 32 40 48 56 64 + diff --git a/src/main/resources/txt/short b/src/main/resources/txt/short new file mode 100644 index 0000000..538d3ff --- /dev/null +++ b/src/main/resources/txt/short @@ -0,0 +1 @@ +medium.mp3 \ No newline at end of file diff --git a/src/main/resources/txt/testfiles.txt b/src/main/resources/txt/testfiles.txt new file mode 100644 index 0000000..6c2c2b6 --- /dev/null +++ b/src/main/resources/txt/testfiles.txt @@ -0,0 +1,12 @@ +junk (with or without header) +PCM_SIGNED 8000.0 Hz, 16 bit, mono, 2 bytes/frame, little-endian +-r 8k -t s16 -c 1 -e signed-integer + + +out (without header) +PCM_SIGNED 8000.0 Hz, 16 bit, stereo, 4 bytes/frame, big-endian +-r 128k -t s32 -c 2 -2 signed integer [reasonable] + +out (without header) +PCM_SIGNED 192000.0 Hz, 16 bit, stereo, 4 bytes/frame, little-endian +-r 192k -t s16 -c 2 [-e signed-integer] \ No newline at end of file From ba088d43a6d074cec0badfd612a13d0593c905ec Mon Sep 17 00:00:00 2001 From: Rik Veenboer <rik.veenboer@gmail.com> Date: Sun, 3 Jul 2016 16:30:31 +0100 Subject: [PATCH 2/8] Rewire some dependencies in exec.* projects --- build.gradle | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 8536a8e..83c34c4 100644 --- a/build.gradle +++ b/build.gradle @@ -1,4 +1,6 @@ -dependencies { +dependencies { + compile project(':core.legacy') + compile 'commons-io:commons-io:2.+' compile 'commons-cli:commons-cli:1.+' compile 'commons-pool:commons-pool:1.+' From 85270fdf739db03d9d7aeaf6a0f0934910d42187 Mon Sep 17 00:00:00 2001 From: Rik Veenboer <rik.veenboer@gmail.com> Date: Mon, 11 Jul 2016 23:05:47 +0100 Subject: [PATCH 3/8] Refactor core.legacy to core.worker --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 83c34c4..abf6100 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ dependencies { - compile project(':core.legacy') + compile project(':core.worker') compile 'commons-io:commons-io:2.+' compile 'commons-cli:commons-cli:1.+' From 5181971f0cc085ce03a4592fd17689c16d744247 Mon Sep 17 00:00:00 2001 From: Rik Veenboer <rik.veenboer@gmail.com> Date: Mon, 11 Jul 2016 23:20:38 +0100 Subject: [PATCH 4/8] Add gradle wrappers --- gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 53319 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 164 +++++++++++++++++++++++ gradlew.bat | 90 +++++++++++++ 4 files changed, 260 insertions(+) create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100644 gradlew create mode 100644 gradlew.bat diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..d3b83982b9b1bccad955349d702be9b884c6e049 GIT binary patch literal 53319 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 literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..129a033 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Mon Jul 11 23:15:35 BST 2016 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-2.14-bin.zip diff --git a/gradlew b/gradlew new file mode 100644 index 0000000..27309d9 --- /dev/null +++ b/gradlew @@ -0,0 +1,164 @@ +#!/usr/bin/env bash + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..f6d5974 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega From 717f79bcf6baa8b86d70da8612a54d734488fc9b Mon Sep 17 00:00:00 2001 From: Rik Veenboer <rik.veenboer@gmail.com> Date: Mon, 11 Jul 2016 23:21:06 +0100 Subject: [PATCH 5/8] Add/update license header in source files --- src/main/java/old/Converter.java | 16 ++++++++++++++++ src/main/java/old/List.java | 16 ++++++++++++++++ src/main/java/old/Mp3.java | 16 ++++++++++++++++ src/main/java/old/Transducer.java | 16 ++++++++++++++++ src/main/java/pipe/Client.java | 16 ++++++++++++++++ src/main/java/pipe/Pipe.java | 16 ++++++++++++++++ src/main/java/pipe/TestPipe.java | 16 ++++++++++++++++ src/main/java/sound/Consumer.java | 16 ++++++++++++++++ src/main/java/sound/Format.java | 16 ++++++++++++++++ src/main/java/sound/Producer.java | 16 ++++++++++++++++ src/main/java/sound/Source.java | 16 ++++++++++++++++ src/main/java/sound/consumer/Port.java | 16 ++++++++++++++++ src/main/java/sound/consumer/Shoutcast.java | 16 ++++++++++++++++ src/main/java/sound/data/Data.java | 16 ++++++++++++++++ src/main/java/sound/producer/Stream.java | 16 ++++++++++++++++ src/main/java/sound/producer/Target.java | 16 ++++++++++++++++ .../java/sound/stream/HoardedInputStream.java | 16 ++++++++++++++++ src/main/java/sound/util/Buffer.java | 16 ++++++++++++++++ src/main/java/sound/util/SoxBuilder.java | 16 ++++++++++++++++ src/main/java/sound/util/Tool.java | 16 ++++++++++++++++ src/main/java/sound/util/Utils.java | 16 ++++++++++++++++ src/main/java/test/SoundAudit.java | 16 ++++++++++++++++ src/main/java/test/Test.java | 16 ++++++++++++++++ src/main/java/test/lines/Main.java | 16 ++++++++++++++++ src/main/java/test/lines/SourceLine.java | 16 ++++++++++++++++ src/main/java/test/lines/TargetLine.java | 16 ++++++++++++++++ 26 files changed, 416 insertions(+) diff --git a/src/main/java/old/Converter.java b/src/main/java/old/Converter.java index f1548a0..5cca267 100644 --- a/src/main/java/old/Converter.java +++ b/src/main/java/old/Converter.java @@ -1,3 +1,19 @@ +/** + * Copyright (C) 2016 Rik Veenboer <rik.veenboer@gmail.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ package old; import java.io.BufferedInputStream; diff --git a/src/main/java/old/List.java b/src/main/java/old/List.java index d026fb9..cf681a8 100644 --- a/src/main/java/old/List.java +++ b/src/main/java/old/List.java @@ -1,3 +1,19 @@ +/** + * Copyright (C) 2016 Rik Veenboer <rik.veenboer@gmail.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ package old; import java.io.File; diff --git a/src/main/java/old/Mp3.java b/src/main/java/old/Mp3.java index 445d4d4..ca36d33 100644 --- a/src/main/java/old/Mp3.java +++ b/src/main/java/old/Mp3.java @@ -1,3 +1,19 @@ +/** + * Copyright (C) 2016 Rik Veenboer <rik.veenboer@gmail.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ package old; import java.io.File; diff --git a/src/main/java/old/Transducer.java b/src/main/java/old/Transducer.java index c7618a8..448d489 100644 --- a/src/main/java/old/Transducer.java +++ b/src/main/java/old/Transducer.java @@ -1,3 +1,19 @@ +/** + * Copyright (C) 2016 Rik Veenboer <rik.veenboer@gmail.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ package old; import sound.Consumer; diff --git a/src/main/java/pipe/Client.java b/src/main/java/pipe/Client.java index 1ef5c26..3257f2b 100644 --- a/src/main/java/pipe/Client.java +++ b/src/main/java/pipe/Client.java @@ -1,3 +1,19 @@ +/** + * Copyright (C) 2016 Rik Veenboer <rik.veenboer@gmail.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ package pipe; import java.io.RandomAccessFile; diff --git a/src/main/java/pipe/Pipe.java b/src/main/java/pipe/Pipe.java index 3bb3805..05a3c41 100644 --- a/src/main/java/pipe/Pipe.java +++ b/src/main/java/pipe/Pipe.java @@ -1,3 +1,19 @@ +/** + * Copyright (C) 2016 Rik Veenboer <rik.veenboer@gmail.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ package pipe; /** diff --git a/src/main/java/pipe/TestPipe.java b/src/main/java/pipe/TestPipe.java index 9d1ec66..d6f56ee 100644 --- a/src/main/java/pipe/TestPipe.java +++ b/src/main/java/pipe/TestPipe.java @@ -1,3 +1,19 @@ +/** + * Copyright (C) 2016 Rik Veenboer <rik.veenboer@gmail.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ package pipe; import java.io.File; diff --git a/src/main/java/sound/Consumer.java b/src/main/java/sound/Consumer.java index cc6c28c..3c30949 100644 --- a/src/main/java/sound/Consumer.java +++ b/src/main/java/sound/Consumer.java @@ -1,3 +1,19 @@ +/** + * Copyright (C) 2016 Rik Veenboer <rik.veenboer@gmail.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ package sound; public interface Consumer { diff --git a/src/main/java/sound/Format.java b/src/main/java/sound/Format.java index 4de19dc..6adfe02 100644 --- a/src/main/java/sound/Format.java +++ b/src/main/java/sound/Format.java @@ -1,3 +1,19 @@ +/** + * Copyright (C) 2016 Rik Veenboer <rik.veenboer@gmail.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ package sound; import javax.sound.sampled.AudioFormat; diff --git a/src/main/java/sound/Producer.java b/src/main/java/sound/Producer.java index 0c5ff9f..77573f8 100644 --- a/src/main/java/sound/Producer.java +++ b/src/main/java/sound/Producer.java @@ -1,3 +1,19 @@ +/** + * Copyright (C) 2016 Rik Veenboer <rik.veenboer@gmail.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ package sound; import java.io.InputStream; diff --git a/src/main/java/sound/Source.java b/src/main/java/sound/Source.java index 8d558d1..f4af09c 100644 --- a/src/main/java/sound/Source.java +++ b/src/main/java/sound/Source.java @@ -1,3 +1,19 @@ +/** + * Copyright (C) 2016 Rik Veenboer <rik.veenboer@gmail.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ package sound; import java.io.IOException; diff --git a/src/main/java/sound/consumer/Port.java b/src/main/java/sound/consumer/Port.java index 5e3cf48..8acbe7d 100644 --- a/src/main/java/sound/consumer/Port.java +++ b/src/main/java/sound/consumer/Port.java @@ -1,3 +1,19 @@ +/** + * Copyright (C) 2016 Rik Veenboer <rik.veenboer@gmail.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ package sound.consumer; import java.io.IOException; diff --git a/src/main/java/sound/consumer/Shoutcast.java b/src/main/java/sound/consumer/Shoutcast.java index 3644459..4864c51 100644 --- a/src/main/java/sound/consumer/Shoutcast.java +++ b/src/main/java/sound/consumer/Shoutcast.java @@ -1,3 +1,19 @@ +/** + * Copyright (C) 2016 Rik Veenboer <rik.veenboer@gmail.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ package sound.consumer; import java.io.BufferedReader; diff --git a/src/main/java/sound/data/Data.java b/src/main/java/sound/data/Data.java index 645cccc..3e02d9c 100644 --- a/src/main/java/sound/data/Data.java +++ b/src/main/java/sound/data/Data.java @@ -1,3 +1,19 @@ +/** + * Copyright (C) 2016 Rik Veenboer <rik.veenboer@gmail.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ package sound.data; public class Data { diff --git a/src/main/java/sound/producer/Stream.java b/src/main/java/sound/producer/Stream.java index dbe6f6d..66fd180 100644 --- a/src/main/java/sound/producer/Stream.java +++ b/src/main/java/sound/producer/Stream.java @@ -1,3 +1,19 @@ +/** + * Copyright (C) 2016 Rik Veenboer <rik.veenboer@gmail.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ package sound.producer; import java.io.IOException; diff --git a/src/main/java/sound/producer/Target.java b/src/main/java/sound/producer/Target.java index 35c592b..bdc6d79 100644 --- a/src/main/java/sound/producer/Target.java +++ b/src/main/java/sound/producer/Target.java @@ -1,3 +1,19 @@ +/** + * Copyright (C) 2016 Rik Veenboer <rik.veenboer@gmail.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ package sound.producer; import java.io.IOException; diff --git a/src/main/java/sound/stream/HoardedInputStream.java b/src/main/java/sound/stream/HoardedInputStream.java index fd6924c..4f6825b 100644 --- a/src/main/java/sound/stream/HoardedInputStream.java +++ b/src/main/java/sound/stream/HoardedInputStream.java @@ -1,3 +1,19 @@ +/** + * Copyright (C) 2016 Rik Veenboer <rik.veenboer@gmail.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ package sound.stream; import java.io.BufferedInputStream; diff --git a/src/main/java/sound/util/Buffer.java b/src/main/java/sound/util/Buffer.java index 2beb9fc..5c85b65 100644 --- a/src/main/java/sound/util/Buffer.java +++ b/src/main/java/sound/util/Buffer.java @@ -1,3 +1,19 @@ +/** + * Copyright (C) 2016 Rik Veenboer <rik.veenboer@gmail.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ package sound.util; public class Buffer { diff --git a/src/main/java/sound/util/SoxBuilder.java b/src/main/java/sound/util/SoxBuilder.java index 0ea367d..d1d44bd 100644 --- a/src/main/java/sound/util/SoxBuilder.java +++ b/src/main/java/sound/util/SoxBuilder.java @@ -1,3 +1,19 @@ +/** + * Copyright (C) 2016 Rik Veenboer <rik.veenboer@gmail.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ package sound.util; import java.util.HashMap; diff --git a/src/main/java/sound/util/Tool.java b/src/main/java/sound/util/Tool.java index 5b08471..be85406 100644 --- a/src/main/java/sound/util/Tool.java +++ b/src/main/java/sound/util/Tool.java @@ -1,3 +1,19 @@ +/** + * Copyright (C) 2016 Rik Veenboer <rik.veenboer@gmail.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ package sound.util; import java.util.ArrayList; diff --git a/src/main/java/sound/util/Utils.java b/src/main/java/sound/util/Utils.java index 5c535a0..e25ee34 100644 --- a/src/main/java/sound/util/Utils.java +++ b/src/main/java/sound/util/Utils.java @@ -1,3 +1,19 @@ +/** + * Copyright (C) 2016 Rik Veenboer <rik.veenboer@gmail.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ package sound.util; import java.io.BufferedInputStream; diff --git a/src/main/java/test/SoundAudit.java b/src/main/java/test/SoundAudit.java index 9510034..1d7373a 100644 --- a/src/main/java/test/SoundAudit.java +++ b/src/main/java/test/SoundAudit.java @@ -1,3 +1,19 @@ +/** + * Copyright (C) 2016 Rik Veenboer <rik.veenboer@gmail.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ package test; import javax.sound.sampled.*; diff --git a/src/main/java/test/Test.java b/src/main/java/test/Test.java index 892471c..a6fa8af 100644 --- a/src/main/java/test/Test.java +++ b/src/main/java/test/Test.java @@ -1,3 +1,19 @@ +/** + * Copyright (C) 2016 Rik Veenboer <rik.veenboer@gmail.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ package test; import javax.sound.sampled.AudioFormat; diff --git a/src/main/java/test/lines/Main.java b/src/main/java/test/lines/Main.java index 5209436..6712715 100644 --- a/src/main/java/test/lines/Main.java +++ b/src/main/java/test/lines/Main.java @@ -1,3 +1,19 @@ +/** + * Copyright (C) 2016 Rik Veenboer <rik.veenboer@gmail.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ package test.lines; import javax.sound.sampled.AudioFormat; diff --git a/src/main/java/test/lines/SourceLine.java b/src/main/java/test/lines/SourceLine.java index 56092d5..b2c2727 100644 --- a/src/main/java/test/lines/SourceLine.java +++ b/src/main/java/test/lines/SourceLine.java @@ -1,3 +1,19 @@ +/** + * Copyright (C) 2016 Rik Veenboer <rik.veenboer@gmail.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ package test.lines; import javax.sound.sampled.Mixer; diff --git a/src/main/java/test/lines/TargetLine.java b/src/main/java/test/lines/TargetLine.java index c0c7d1e..b7c74c1 100644 --- a/src/main/java/test/lines/TargetLine.java +++ b/src/main/java/test/lines/TargetLine.java @@ -1,3 +1,19 @@ +/** + * Copyright (C) 2016 Rik Veenboer <rik.veenboer@gmail.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ package test.lines; import javax.sound.sampled.Mixer; From 3040708f80919516e4c7041117dea0f799c37d96 Mon Sep 17 00:00:00 2001 From: Rik Veenboer <rik.veenboer@gmail.com> Date: Thu, 14 Jul 2016 08:53:26 +0100 Subject: [PATCH 6/8] Reorganise test files, test jlibpipe in exec.sound --- build.gradle | 2 ++ src/main/java/pipe/Pipe.java | 4 +++- src/main/java/pipe/TestPipe.java | 4 ++-- src/main/resources/txt/{options => lame} | 0 src/main/resources/txt/short | 1 - src/{main => test}/java/test/SoundAudit.java | 0 src/{main => test}/java/test/Test.java | 0 src/{main => test}/java/test/lines/Main.java | 0 src/{main => test}/java/test/lines/SourceLine.java | 0 src/{main => test}/java/test/lines/TargetLine.java | 0 10 files changed, 7 insertions(+), 4 deletions(-) rename src/main/resources/txt/{options => lame} (100%) delete mode 100644 src/main/resources/txt/short rename src/{main => test}/java/test/SoundAudit.java (100%) rename src/{main => test}/java/test/Test.java (100%) rename src/{main => test}/java/test/lines/Main.java (100%) rename src/{main => test}/java/test/lines/SourceLine.java (100%) rename src/{main => test}/java/test/lines/TargetLine.java (100%) diff --git a/build.gradle b/build.gradle index abf6100..9ff5a28 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,8 @@ dependencies { compile project(':core.worker') + compile 'com.github.boukefalos:jlibpipe:0.1' + compile 'commons-io:commons-io:2.+' compile 'commons-cli:commons-cli:1.+' compile 'commons-pool:commons-pool:1.+' diff --git a/src/main/java/pipe/Pipe.java b/src/main/java/pipe/Pipe.java index 05a3c41..f734658 100644 --- a/src/main/java/pipe/Pipe.java +++ b/src/main/java/pipe/Pipe.java @@ -16,6 +16,8 @@ */ package pipe; +import com.github.boukefalos.jlibloader.Native; + /** * @author Vikram S Khatri vikram.khatri@us.ibm.com */ @@ -26,7 +28,7 @@ public class Pipe { static final int PIPE_WAIT = 0x00000000; static { - System.loadLibrary("pipe"); + Native.load("com.github.boukefalos", "jlibpipe"); } public static final native int CreateNamedPipe( diff --git a/src/main/java/pipe/TestPipe.java b/src/main/java/pipe/TestPipe.java index d6f56ee..f70801a 100644 --- a/src/main/java/pipe/TestPipe.java +++ b/src/main/java/pipe/TestPipe.java @@ -95,8 +95,8 @@ public class TestPipe { public static void main(String[] args) { String pipeName = "\\\\.\\pipe\\detest"; - String fileName = "txt/bla.txt"; - //fileName = "C:\\Users\\Rik\\Music\\Artists\\+44\\When Your Heart Stops Beating\\+44 - 155.mp3"; + String fileName = "txt/mp3"; + fileName = "C:\\Users\\Rik\\Music\\Artists\\+44\\When Your Heart Stops Beating\\+44 - 155.mp3"; TestPipe testPipe = new TestPipe(pipeName, fileName); testPipe.runPipe(); } diff --git a/src/main/resources/txt/options b/src/main/resources/txt/lame similarity index 100% rename from src/main/resources/txt/options rename to src/main/resources/txt/lame diff --git a/src/main/resources/txt/short b/src/main/resources/txt/short deleted file mode 100644 index 538d3ff..0000000 --- a/src/main/resources/txt/short +++ /dev/null @@ -1 +0,0 @@ -medium.mp3 \ No newline at end of file diff --git a/src/main/java/test/SoundAudit.java b/src/test/java/test/SoundAudit.java similarity index 100% rename from src/main/java/test/SoundAudit.java rename to src/test/java/test/SoundAudit.java diff --git a/src/main/java/test/Test.java b/src/test/java/test/Test.java similarity index 100% rename from src/main/java/test/Test.java rename to src/test/java/test/Test.java diff --git a/src/main/java/test/lines/Main.java b/src/test/java/test/lines/Main.java similarity index 100% rename from src/main/java/test/lines/Main.java rename to src/test/java/test/lines/Main.java diff --git a/src/main/java/test/lines/SourceLine.java b/src/test/java/test/lines/SourceLine.java similarity index 100% rename from src/main/java/test/lines/SourceLine.java rename to src/test/java/test/lines/SourceLine.java diff --git a/src/main/java/test/lines/TargetLine.java b/src/test/java/test/lines/TargetLine.java similarity index 100% rename from src/main/java/test/lines/TargetLine.java rename to src/test/java/test/lines/TargetLine.java From e1dab30d388459bbaffee8c425166e221f967389 Mon Sep 17 00:00:00 2001 From: Rik Veenboer <rik.veenboer@gmail.com> Date: Mon, 8 Aug 2016 20:23:22 +0100 Subject: [PATCH 7/8] Update build.gradle --- .gitignore | 2 ++ build.gradle | 21 +++++++++++++++++++-- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index a4bf388..7448e1b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ /bin /.settings /sound +.classpath +.project \ No newline at end of file diff --git a/build.gradle b/build.gradle index 9ff5a28..dcd5a73 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,14 @@ -dependencies { - compile project(':core.worker') +apply plugin: 'java' +apply plugin: 'maven' +apply plugin: 'eclipse' +task wrapper(type: Wrapper) { + gradleVersion = '2.14' +} + +dependencies { compile 'com.github.boukefalos:jlibpipe:0.1' + compile 'com.github.boukefalos:jlibloader:0.2' compile 'commons-io:commons-io:2.+' compile 'commons-cli:commons-cli:1.+' @@ -11,4 +18,14 @@ dependencies { compile 'org.ostermiller:utils:1.+' compile 'com.googlecode.soundlibs:jlayer:1.+' compile 'net.sf.javamusictag:jid3lib:0.+' + + repositories { + maven { + url 'https://github.com/Boukefalos/mimis/raw/mvn-repo/' + } + maven { + url 'https://github.com/Boukefalos/jlibloader/raw/mvn-repo/' + } + mavenCentral() + } } \ No newline at end of file From 4bbbc8b53730d6e7a913b5ef8c0f5c2cb4b506dd Mon Sep 17 00:00:00 2001 From: Rik Veenboer <rik.veenboer@gmail.com> Date: Wed, 10 Aug 2016 13:32:04 +0100 Subject: [PATCH 8/8] Delete non-essential files --- .gitignore | 5 - build.gradle | 31 - gradle/wrapper/gradle-wrapper.jar | Bin 53319 -> 0 bytes gradle/wrapper/gradle-wrapper.properties | 6 - gradlew | 164 -- gradlew.bat | 90 -- src/main/java/old/Converter.java | 203 --- src/main/java/old/List.java | 217 --- src/main/java/old/Mp3.java | 96 -- src/main/java/old/Transducer.java | 32 - src/main/java/sound/Consumer.java | 23 - src/main/java/sound/Format.java | 29 - src/main/java/sound/Producer.java | 26 - src/main/java/sound/Source.java | 177 --- src/main/java/sound/consumer/Port.java | 137 -- src/main/java/sound/consumer/Shoutcast.java | 312 ---- src/main/java/sound/data/Data.java | 39 - src/main/java/sound/producer/Stream.java | 216 --- src/main/java/sound/producer/Target.java | 113 -- .../java/sound/stream/HoardedInputStream.java | 92 -- src/main/java/sound/util/Buffer.java | 57 - src/main/java/sound/util/SoxBuilder.java | 337 ---- src/main/java/sound/util/Tool.java | 156 -- src/main/java/sound/util/Utils.java | 55 - src/main/resources/txt/keuze.txt | 13 - src/main/resources/txt/lame | 182 --- src/main/resources/txt/mp3 | 1357 ----------------- src/main/resources/txt/testfiles.txt | 12 - src/test/java/test/SoundAudit.java | 71 - src/test/java/test/Test.java | 56 - src/test/java/test/lines/Main.java | 50 - src/test/java/test/lines/SourceLine.java | 35 - src/test/java/test/lines/TargetLine.java | 35 - 33 files changed, 4424 deletions(-) delete mode 100644 .gitignore delete mode 100644 build.gradle delete mode 100644 gradle/wrapper/gradle-wrapper.jar delete mode 100644 gradle/wrapper/gradle-wrapper.properties delete mode 100644 gradlew delete mode 100644 gradlew.bat delete mode 100644 src/main/java/old/Converter.java delete mode 100644 src/main/java/old/List.java delete mode 100644 src/main/java/old/Mp3.java delete mode 100644 src/main/java/old/Transducer.java delete mode 100644 src/main/java/sound/Consumer.java delete mode 100644 src/main/java/sound/Format.java delete mode 100644 src/main/java/sound/Producer.java delete mode 100644 src/main/java/sound/Source.java delete mode 100644 src/main/java/sound/consumer/Port.java delete mode 100644 src/main/java/sound/consumer/Shoutcast.java delete mode 100644 src/main/java/sound/data/Data.java delete mode 100644 src/main/java/sound/producer/Stream.java delete mode 100644 src/main/java/sound/producer/Target.java delete mode 100644 src/main/java/sound/stream/HoardedInputStream.java delete mode 100644 src/main/java/sound/util/Buffer.java delete mode 100644 src/main/java/sound/util/SoxBuilder.java delete mode 100644 src/main/java/sound/util/Tool.java delete mode 100644 src/main/java/sound/util/Utils.java delete mode 100644 src/main/resources/txt/keuze.txt delete mode 100644 src/main/resources/txt/lame delete mode 100644 src/main/resources/txt/mp3 delete mode 100644 src/main/resources/txt/testfiles.txt delete mode 100644 src/test/java/test/SoundAudit.java delete mode 100644 src/test/java/test/Test.java delete mode 100644 src/test/java/test/lines/Main.java delete mode 100644 src/test/java/test/lines/SourceLine.java delete mode 100644 src/test/java/test/lines/TargetLine.java diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 7448e1b..0000000 --- a/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -/bin -/.settings -/sound -.classpath -.project \ No newline at end of file diff --git a/build.gradle b/build.gradle deleted file mode 100644 index dcd5a73..0000000 --- a/build.gradle +++ /dev/null @@ -1,31 +0,0 @@ -apply plugin: 'java' -apply plugin: 'maven' -apply plugin: 'eclipse' - -task wrapper(type: Wrapper) { - gradleVersion = '2.14' -} - -dependencies { - compile 'com.github.boukefalos:jlibpipe:0.1' - compile 'com.github.boukefalos:jlibloader:0.2' - - compile 'commons-io:commons-io:2.+' - compile 'commons-cli:commons-cli:1.+' - compile 'commons-pool:commons-pool:1.+' - compile 'org.slf4j:slf4j-api:1.+' - compile 'org.slf4j:slf4j-log4j12:1.7.5' - compile 'org.ostermiller:utils:1.+' - compile 'com.googlecode.soundlibs:jlayer:1.+' - compile 'net.sf.javamusictag:jid3lib:0.+' - - repositories { - maven { - url 'https://github.com/Boukefalos/mimis/raw/mvn-repo/' - } - maven { - url 'https://github.com/Boukefalos/jlibloader/raw/mvn-repo/' - } - mavenCentral() - } -} \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index d3b83982b9b1bccad955349d702be9b884c6e049..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53319 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 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index 129a033..0000000 --- a/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,6 +0,0 @@ -#Mon Jul 11 23:15:35 BST 2016 -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.14-bin.zip diff --git a/gradlew b/gradlew deleted file mode 100644 index 27309d9..0000000 --- a/gradlew +++ /dev/null @@ -1,164 +0,0 @@ -#!/usr/bin/env bash - -############################################################################## -## -## Gradle start up script for UN*X -## -############################################################################## - -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null - -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" - -warn ( ) { - echo "$*" -} - -die ( ) { - echo - echo "$*" - echo - exit 1 -} - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; -esac - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=$((i+1)) - done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac -fi - -# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") -} -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" - -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/gradlew.bat b/gradlew.bat deleted file mode 100644 index f6d5974..0000000 --- a/gradlew.bat +++ /dev/null @@ -1,90 +0,0 @@ -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args -if "%@eval[2+2]" == "4" goto 4NT_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* -goto execute - -:4NT_args -@rem Get arguments from the 4NT Shell from JP Software -set CMD_LINE_ARGS=%$ - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/src/main/java/old/Converter.java b/src/main/java/old/Converter.java deleted file mode 100644 index 5cca267..0000000 --- a/src/main/java/old/Converter.java +++ /dev/null @@ -1,203 +0,0 @@ -/** - * Copyright (C) 2016 Rik Veenboer <rik.veenboer@gmail.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ -package old; - -import java.io.BufferedInputStream; -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; - -import javazoom.jl.decoder.Bitstream; -import javazoom.jl.decoder.BitstreamException; -import sound.util.Utils; -import base.exception.worker.ActivateException; -import base.exception.worker.DeactivateException; -import base.work.Work; - -import com.Ostermiller.util.CircularByteBuffer; - -public class Converter extends Work { - public static final String COMMAND = "lame --mp3input --cbr %s - - --quiet"; - public static final int BYTES = 4096; // bytes - public static final int BUFFER = 30000; // milliseconds - public static final int BUFFERING = 1000; // milliseconds - - protected int targetRate; - protected int rate; - protected int buffer; - protected boolean convert; - - protected Process process; - protected InputStream sourceInputStream, processInputStream, inputStream; - protected OutputStream processOutputStream; - protected CircularByteBuffer circularByteBuffer; - protected BufferWorker bufferWorker; - - public Converter(InputStream inputStream) { - this(inputStream, -1); - } - - public Converter(InputStream inputStream, int targetRate) { - super(); - this.sourceInputStream = inputStream; - this.targetRate = targetRate; - bufferWorker = new BufferWorker(); - convert = false; - } - - public void exit() { - super.exit(); - bufferWorker.exit(); - } - - public synchronized void activate() throws ActivateException { - /* Read bitrate */ - BufferedInputStream bufferedInputStream = new BufferedInputStream(sourceInputStream); - Bitstream bitStream = new Bitstream(bufferedInputStream); - try { - rate = bitStream.readFrame().bitrate() / 1000; - buffer = BUFFER * rate / 8; - } catch (BitstreamException e) { - logger.error("", e); - throw new ActivateException(); - } - - /* Check for need to convert */ - if (targetRate < 0 || rate == targetRate) { - logger.debug("No conversion required"); - inputStream = sourceInputStream; - } else { - logger.debug("Converting from " + rate + "kbps to " + targetRate + "kbps"); - try { - String command = String.format(COMMAND, rate > targetRate ? "-B " + targetRate : "-F -b " + targetRate); - logger.debug("Starting process: " + command); - process = Runtime.getRuntime().exec(command); - processInputStream = process.getInputStream(); - processOutputStream = process.getOutputStream(); - - /* Buffer output */ - circularByteBuffer = new CircularByteBuffer(CircularByteBuffer.INFINITE_SIZE); - inputStream = circularByteBuffer.getInputStream(); - bufferWorker.start(); - convert = true; - } catch (IOException e) { - logger.error("", e); - throw new ActivateException(); - } - } - super.activate(); - notifyAll(); - } - - public void deactivate() throws DeactivateException { - super.deactivate(); - try { - sourceInputStream.close(); - bufferWorker.stop(); - if (convert) { - circularByteBuffer.clear(); - convert = false; - } - inputStream.close(); - } catch (IOException e) { - logger.error("", e); - throw new DeactivateException(); - } - } - - public void work() { - if (!convert) { - try { - synchronized (this) { - wait(); - } - } catch (InterruptedException e) { - logger.error("", e); - } - return; - } - byte[] bytes = new byte[BYTES]; - int read = 0; - try { - logger.debug("Writing input to process"); - // Should be interrupted by stop()/exit() - while ((read = sourceInputStream.read(bytes)) > 0) { - /* Limit buffer size */ - while (inputStream.available() > buffer) { - int progress = (int) ((1 - (inputStream.available() - buffer) / (float) buffer) * 100); - logger.trace("Waiting for buffer to empty: " + progress + "%"); - sleep(BUFFERING); - } - processOutputStream.write(bytes, 0, read); - } - processOutputStream.close(); - logger.debug("Stopped writing input to process"); - process.waitFor(); - logger.debug("Process finished"); - } catch (IOException e) { - } catch (InterruptedException e) { - logger.error("", e); - } - stop(); - } - - public synchronized InputStream getInputStream() { - if (!active()) { - start(); - try { - wait(); - } catch (InterruptedException e) { - logger.error("", e); - } - } - return inputStream; - } - - public synchronized void setInputStream(InputStream inputStream) { - this.inputStream = inputStream; - } - - class BufferWorker extends Work { - public void work() { - byte[] bytes = new byte[BYTES]; - int read = 0; - try { - OutputStream bufferOutputStream = circularByteBuffer.getOutputStream(); - logger.debug("Start buffering process output"); - while ((read = processInputStream.read(bytes, 0, BYTES)) > 0) { - bufferOutputStream.write(bytes, 0, read); - } - logger.debug("Finished buffering process output"); - bufferOutputStream.close(); - } catch (IOException e) {} - stop(); - } - } - - public static void main(String[] args) { - Mp3 mp3 = new Mp3(new File("stream.mp3"), 128); - InputStream inputStream = mp3.getInputStream(); - - /* Play */ - //Utils.play(inputStream); - - /* Write to file */ - Utils.write(inputStream, new File("output.mp3")); - mp3.exit(); - } -} diff --git a/src/main/java/old/List.java b/src/main/java/old/List.java deleted file mode 100644 index cf681a8..0000000 --- a/src/main/java/old/List.java +++ /dev/null @@ -1,217 +0,0 @@ -/** - * Copyright (C) 2016 Rik Veenboer <rik.veenboer@gmail.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ -package old; - -import java.io.File; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.util.ArrayList; -import java.util.Scanner; - -import sound.consumer.Shoutcast; -import base.exception.worker.ActivateException; -import base.work.Work; - -import com.Ostermiller.util.BufferOverflowException; -import com.Ostermiller.util.CircularByteBuffer; -import com.Ostermiller.util.CircularObjectBuffer; - -public class List extends Work { - public static final int STEP = 80; // milliseconds - public static final int RATE = 192; // kbps - public static final int OVERLAP = 20000; // milliseconds - - protected File file; - protected String[] fileArray; - - protected int rate; - protected int chunk; - protected int overlap; - protected byte[] bytes; - protected boolean next; - protected Mp3 mp3, nextMp3; - - protected InputStream mp3InputStream; - protected OutputStream audioOutputStream; - protected CircularByteBuffer circularByteBuffer; - protected CircularObjectBuffer<String> circularStringBuffer; - - public List(File file) { - this(file, RATE); - } - - public List(File file, int rate) { - this.file = file; - this.rate = rate; - chunk = STEP * rate / 8; - overlap = OVERLAP * RATE / 8; - bytes = new byte[chunk]; - next = true; - } - - public void exit() { - super.exit(); - if (mp3 != null) { - mp3.exit(); - } - if (nextMp3 != null) { - nextMp3.exit(); - } - } - - public synchronized void activate() throws ActivateException { - try { - Scanner scanner = new Scanner(file); - ArrayList<String> fileList = new ArrayList<String>(); - while (scanner.hasNextLine()) { - fileList.add(scanner.nextLine()); - } - scanner.close(); - if (fileList.size() > 0) { - fileArray = fileList.toArray(new String[0]); - - circularByteBuffer = new CircularByteBuffer(CircularByteBuffer.INFINITE_SIZE); - audioOutputStream = circularByteBuffer.getOutputStream(); - - circularStringBuffer = new CircularObjectBuffer<String>(CircularByteBuffer.INFINITE_SIZE); - setNext(); - super.activate(); - notifyAll(); - return; - } - } catch (FileNotFoundException e) { - logger.error("", e); - } - throw new ActivateException(); - } - - public synchronized void work() { - try { - int left = chunk; - while (left > 0) { - /* Check for need to load next mp3 */ - int available = mp3InputStream == null ? -1 : mp3InputStream.available(); - boolean expect = mp3 == null ? false : mp3.active(); - - /* Act when no more data is expected */ - if (!expect) { - if (available < overlap) { - setNext(); - next = false; - nextMp3.start(); - } - if (available < 1) { - swap(); - } - } - - /* Transfer data */ - int read = mp3InputStream.read(bytes, 0, left); - left -= read; - audioOutputStream.write(bytes, 0, read); - } - } catch (IOException e) { - /* Swap to next if stream has stopped */ - setNext(); - swap(); - } catch (IllegalStateException e) { - logger.error("", e); - } - sleep(STEP); - } - - protected File getRandomFile() { - return new File(fileArray[(int) (Math.random() * fileArray.length)]); - } - - public synchronized void setNext() { - if (nextMp3 == null) { - logger.debug("Initialize next mp3"); - nextMp3 = new Mp3(getRandomFile(), rate); - } else if (next) { - logger.debug("Load next mp3"); - nextMp3.setFile(getRandomFile()); - } - } - - public synchronized void next() { - logger.debug("Stop current mp3"); - mp3.stop(); - } - - public void swap() { - logger.debug("Swap to next mp3"); - Mp3 swapMp3 = mp3; - mp3 = nextMp3; - nextMp3 = swapMp3; - next = true; - - /* Swap stream and announce title */ - mp3InputStream = mp3.getInputStream(); - try { - circularStringBuffer.write(mp3.getTitle()); - } catch (BufferOverflowException e) { - logger.error("", e); - } catch (IllegalStateException e) { - logger.error("", e); - } catch (InterruptedException e) { - logger.error("", e); - } - } - - public synchronized InputStream getInputStream() { - if (circularByteBuffer == null) { - start(); - try { - wait(); - } catch (InterruptedException e) { - logger.error("", e); - } - } - return circularByteBuffer.getInputStream(); - } - - public synchronized CircularObjectBuffer<String> getMetaBuffer() { - if (circularStringBuffer == null) { - start(); - try { - wait(); - } catch (InterruptedException e) { - logger.error("", e); - } - } - return circularStringBuffer; - } - - public static void main(String[] args) throws Exception { - int rate = 192; - List list = new List(new File(List.class.getClassLoader().getResource("txt/mp3").toURI()), rate); - Shoutcast shoutcast = new Shoutcast(rate, 9876); - - shoutcast.setInputStream(list.getInputStream()); - shoutcast.setMetaBuffer(list.getMetaBuffer()); - shoutcast.start(); - while (true) { - try { - Thread.sleep(15000); - list.next(); - } catch (InterruptedException e) {} - } - } -} diff --git a/src/main/java/old/Mp3.java b/src/main/java/old/Mp3.java deleted file mode 100644 index ca36d33..0000000 --- a/src/main/java/old/Mp3.java +++ /dev/null @@ -1,96 +0,0 @@ -/** - * Copyright (C) 2016 Rik Veenboer <rik.veenboer@gmail.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ -package old; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; - -import org.farng.mp3.MP3File; -import org.farng.mp3.TagException; - -import sound.util.Utils; -import base.exception.worker.ActivateException; - -public class Mp3 extends Converter { - protected File file; - protected String title; - - public Mp3(File file) { - this(file, -1); - } - - public Mp3(File file, int targetRate) { - super(null, targetRate); - setFile(file); - title = ""; - } - - public synchronized void activate() throws ActivateException { - /* Open file */ - try { - sourceInputStream = new FileInputStream(file); - } catch (FileNotFoundException e) { - logger.error("", e); - throw new ActivateException(); - } - - /* Read ID3V2 tags */ - try { - MP3File mp3File = new MP3File(file); - String album = clean(mp3File.getID3v2Tag().getAlbumTitle()); - String artist = clean(mp3File.getID3v2Tag().getLeadArtist()); - String track = clean(mp3File.getID3v2Tag().getSongTitle()); - if (album.isEmpty()) { - title = String.format("%s - %s", artist, track, album); - } else { - title = String.format("%s - %s {%s}", artist, track, album); - } - logger.debug("Title: " + title); - } catch (IOException e) { - logger.error("", e); - } catch (TagException e) { - logger.error("", e); - } - try { - sourceInputStream.skip(100000); - } catch (IOException e) {} - super.activate(); - } - - protected String clean(String input) { - String output = input.replace("\0", ""); - return output.replace("ÿþ", ""); - } - - public String getTitle() { - return title; - } - - public void setFile(File file) { - this.file = file; - } - - public static void main(String[] args) { - final Mp3 mp3 = new Mp3(new File("input.mp3"), 128); - Utils.write(mp3.getInputStream(), new File("one.mp3")); - mp3.setFile(new File("stream.mp3")); - Utils.write(mp3.getInputStream(), new File("two.mp3")); - mp3.exit(); - } -} diff --git a/src/main/java/old/Transducer.java b/src/main/java/old/Transducer.java deleted file mode 100644 index 448d489..0000000 --- a/src/main/java/old/Transducer.java +++ /dev/null @@ -1,32 +0,0 @@ -/** - * Copyright (C) 2016 Rik Veenboer <rik.veenboer@gmail.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ -package old; - -import sound.Consumer; -import sound.Producer; - -public abstract class Transducer implements Consumer, Producer { - public int rate; - - public Transducer(Producer producer) { - //setProducer(producer); - } - - public int getRate() { - return rate; - } -} diff --git a/src/main/java/sound/Consumer.java b/src/main/java/sound/Consumer.java deleted file mode 100644 index 3c30949..0000000 --- a/src/main/java/sound/Consumer.java +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Copyright (C) 2016 Rik Veenboer <rik.veenboer@gmail.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ -package sound; - -public interface Consumer { - public void start(Producer producer); - public void stop(); - public void exit(); -} diff --git a/src/main/java/sound/Format.java b/src/main/java/sound/Format.java deleted file mode 100644 index 6adfe02..0000000 --- a/src/main/java/sound/Format.java +++ /dev/null @@ -1,29 +0,0 @@ -/** - * Copyright (C) 2016 Rik Veenboer <rik.veenboer@gmail.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ -package sound; - -import javax.sound.sampled.AudioFormat; - -public interface Format extends Cloneable { - public interface Standard extends Format { - public AudioFormat getAudioFormat(); - } - - public interface Mp3 extends Format { - public int getRate(); - } -} \ No newline at end of file diff --git a/src/main/java/sound/Producer.java b/src/main/java/sound/Producer.java deleted file mode 100644 index 77573f8..0000000 --- a/src/main/java/sound/Producer.java +++ /dev/null @@ -1,26 +0,0 @@ -/** - * Copyright (C) 2016 Rik Veenboer <rik.veenboer@gmail.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ -package sound; - -import java.io.InputStream; - -public interface Producer extends Format { - public InputStream getInputStream(); - public void start(); - public void stop(); - public void exit(); -} \ No newline at end of file diff --git a/src/main/java/sound/Source.java b/src/main/java/sound/Source.java deleted file mode 100644 index f4af09c..0000000 --- a/src/main/java/sound/Source.java +++ /dev/null @@ -1,177 +0,0 @@ -/** - * Copyright (C) 2016 Rik Veenboer <rik.veenboer@gmail.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ -package sound; - -import java.io.IOException; -import java.io.InputStream; - -import javax.sound.sampled.AudioFormat; -import javax.sound.sampled.LineUnavailableException; -import javax.sound.sampled.SourceDataLine; - -import javazoom.jl.decoder.JavaLayerException; -import javazoom.jl.player.Player; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import sound.util.Tool; -import base.exception.worker.ActivateException; -import base.exception.worker.DeactivateException; -import base.work.Work; - -public class Source implements Consumer { - protected Logger logger = LoggerFactory.getLogger(getClass()); - - protected static final int BUFFER_SIZE = 1024 * 4; // in bytes - protected static final int FRAMES = 10; // count - - protected String name; - protected Producer producer; - protected InputStream producerInputStream; - protected Work work; - - public Source(String name) throws LineUnavailableException { - this.name = name; - } - - public void start() { - if (work != null) { - work.start(); - } - } - - public void start(Producer producer) { - this.producer = producer; - producerInputStream = producer.getInputStream(); - if (work != null) { - work.exit(); - } - if (producer instanceof Format.Standard) { - logger.debug("Format.Standard"); - work = new DefaultWorker((Format.Standard) producer); - } else if (producer instanceof Format.Mp3) { - logger.debug("Format.Mp3"); - work = new Mp3Worker((Format.Mp3) producer); - } - start(); - } - - public void stop() { - if (work != null) { - work.stop(); - } - } - - public void exit() { - if (work != null) { - work.exit(); - } - } - - protected class DefaultWorker extends Work { - protected Format.Standard format; - protected SourceDataLine line; - - public DefaultWorker(Format.Standard format) { - this.format = format; - } - - public void activate() throws ActivateException { - AudioFormat audioFormat = format.getAudioFormat(); - try { - if (line == null) { - line = Tool.getSourceDataLine(name, audioFormat); - } - if (!line.isOpen()) { - line.open(); - } - } catch (LineUnavailableException e) { - logger.error("", e); - throw new ActivateException(); - } - if (!line.isRunning()) { - line.start(); - } - super.activate(); - } - - public void deactivate() throws DeactivateException { - super.deactivate(); - line.flush(); - } - - public void exit() { - super.exit(); - line.close(); - } - - public void work() { - try { - byte[] buffer = new byte[BUFFER_SIZE]; - int read = producerInputStream.read(buffer, 0, buffer.length); - if (read > 0) { - line.write(buffer, 0, read); - } else { - exit(); - } - } catch (IOException e) { - logger.error("", e); - exit(); - } - } - } - - protected class Mp3Worker extends Work { - protected Format.Mp3 format; - protected Player player; - - public Mp3Worker(Format.Mp3 format) { - this.format = format; - } - - public void activate() throws ActivateException { - producer.start(); - super.activate(); - } - - public void deactivate() throws DeactivateException { - super.deactivate(); - producer.stop(); - } - - public void exit() { - super.exit(); - player.close(); - } - - public void work() { - try { - if (player == null) { - player = new Player(producerInputStream); - sleep(100); - } - player.play(FRAMES); - } catch (JavaLayerException e) { - logger.error("", e); - } - if (player.isComplete()) { - stop(); - } - } - } -} diff --git a/src/main/java/sound/consumer/Port.java b/src/main/java/sound/consumer/Port.java deleted file mode 100644 index 8acbe7d..0000000 --- a/src/main/java/sound/consumer/Port.java +++ /dev/null @@ -1,137 +0,0 @@ -/** - * Copyright (C) 2016 Rik Veenboer <rik.veenboer@gmail.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ -package sound.consumer; - -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; - -import javax.sound.sampled.AudioFormat; - -import sound.Consumer; -import sound.Format; -import sound.Format.Standard; -import sound.Producer; -import sound.util.SoxBuilder; -import sound.util.SoxBuilder.File; -import sound.util.SoxBuilder.File.Type; -import sound.util.SoxBuilder.Option; -import base.exception.worker.ActivateException; -import base.exception.worker.DeactivateException; -import base.work.Work; - -public class Port extends Work implements Consumer { - protected static final int BUFFER_SIZE = 1024 * 4; // in bytes - - protected String device; - protected Producer producer; - protected Process process; - protected InputStream producerInputStream; - protected OutputStream processOutputStream; - protected ProcessBuilder processBuilder; - - public Port() { - this("0"); - } - - public Port(String device) { - this.device = device; - } - - public void start(Producer producer) { - start(producer); - } - - @SuppressWarnings("static-access") - public void start(Producer producer, boolean thread) { - this.producer = producer; - producerInputStream = producer.getInputStream(); - - String command = ""; - if (producer instanceof Standard) { - AudioFormat audioFormat = ((Standard) producer).getAudioFormat(); - SoxBuilder.addFile(File.setType(Type.STANDARD).setOptions(audioFormat)); - } else if (producer instanceof Format.Mp3) { - SoxBuilder.addFile(File.setType(Type.STANDARD).setOption(File.Format.MP3)); - } - command = SoxBuilder - .setOption(Option.QUIET) - .addFile(File.setType(Type.DEVICE)) - .build(); - - logger.debug(String.format("Build process (\"%s\")", command)); - processBuilder = new ProcessBuilder(command.split(" ")); - processBuilder.environment().put("AUDIODEV", device); - - start(); - } - - public void activate() throws ActivateException { - producer.start(); - if (process == null) { - try { - process = processBuilder.start(); - } catch (IOException e) { - logger.error("", e); - throw new ActivateException(); - } - processOutputStream = process.getOutputStream(); - } - super.activate(); - } - - public void deactivate() throws DeactivateException { - super.deactivate(); - try { - processOutputStream.flush(); - } catch (IOException e) { - logger.error("", e); - throw new DeactivateException(); - } - } - - public void exit() { - try { - logger.debug("close process output stream"); - processOutputStream.close(); - - logger.debug("wait for process to terminate"); - process.waitFor(); - } catch (IOException e) { - logger.error("", e); - } catch (InterruptedException e) { - logger.error("", e); - } finally { - process = null; - } - } - - public void work() { - try { - byte[] buffer = new byte[BUFFER_SIZE]; - int read = producerInputStream.read(buffer, 0, buffer.length); - if (read > 0) { - processOutputStream.write(buffer, 0, read); - } else { - exit(); - } - } catch (IOException e) { - logger.error("", e); - exit(); - } - } -} diff --git a/src/main/java/sound/consumer/Shoutcast.java b/src/main/java/sound/consumer/Shoutcast.java deleted file mode 100644 index 4864c51..0000000 --- a/src/main/java/sound/consumer/Shoutcast.java +++ /dev/null @@ -1,312 +0,0 @@ -/** - * Copyright (C) 2016 Rik Veenboer <rik.veenboer@gmail.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ -package sound.consumer; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.OutputStream; -import java.io.OutputStreamWriter; -import java.net.ServerSocket; -import java.net.Socket; -import java.net.SocketException; -import java.util.HashMap; -import java.util.Map.Entry; -import java.util.concurrent.ConcurrentLinkedQueue; - -import sound.Consumer; -import sound.Producer; -import sound.data.Data; -import sound.util.Buffer; -import base.exception.worker.ActivateException; -import base.exception.worker.DeactivateException; -import base.work.Listen; -import base.work.Work; - -import com.Ostermiller.util.CircularObjectBuffer; - -public class Shoutcast extends Work implements Consumer { - public static final int PORT = 9876; - public static final int RATE = 192; // in kbps - public static final int META = 8192; // in bytes - public static final int STEP = 80; // in milliseconds - public static final int BUFFER = 2000; // in bytes - public static final int BUFFERING = 500; // in milliseconds - public static final String DATA = "StreamTitle='%s';StreamUrl='%s';"; - protected int rate; - protected int port; - protected Server server; - protected HashMap<String, String> headerMap; - protected ConcurrentLinkedQueue<Client> clientList; - protected InputStream producerInputStream; - protected int chunk; - protected Buffer buffer; - protected byte[] bytes; - protected Data data; - protected String metaData; - private CircularObjectBuffer<String> circularStringBuffer; - - public Shoutcast() { - this(RATE, PORT); - } - - public Shoutcast(int rate) { - this(rate, PORT); - } - - public Shoutcast(int rate, int port) { - this.rate = rate; - this.port = port; - clientList = new ConcurrentLinkedQueue<Client>(); - metaData = ""; - - chunk = STEP * rate / 8; - bytes = new byte[chunk]; - buffer = new Buffer(BUFFER * rate / 8); - - headerMap = new HashMap<String, String>(); - headerMap.put("icy-notice1", "This stream requires <a href=\"http://www.winamp.com/\">Winamp</a>"); - headerMap.put("icy-notice2", "Java SHOUTcast Server"); - headerMap.put("icy-name", "Java Radio"); - headerMap.put("icy-genre", "Java"); - headerMap.put("icy-url", "http://localhost"); - headerMap.put("content-type:", "audio/mpeg"); - headerMap.put("icy-pub", "0"); - headerMap.put("icy-metaint", String.valueOf(META)); - headerMap.put("icy-br", String.valueOf(rate)); - } - - public void activate() throws ActivateException { - logger.trace("Activate Server"); - server = new Server(port); - server.start(); - super.activate(); - } - - public boolean active() { - return server.active(); - } - - public void deactivate() throws DeactivateException { - super.deactivate(); - server.stop(); - } - - public void work() { - int progress; - try { - int read = 0; - if (producerInputStream != null) { - while (producerInputStream.available() < buffer.capacity) { - progress = (int) (producerInputStream.available() / (buffer.capacity / 100.0F)); - logger.debug("Filling buffer: " + progress + "%"); - sleep(BUFFERING); - } - read = producerInputStream.read(bytes); - } - data = new Data(bytes, read); - buffer.write(bytes, 0, read); - } catch (IOException e) { - logger.error(e.getMessage()); - } - - for (Client client : clientList) { - if (client.active) { - client.add(data); - } - } - sleep(STEP); - } - - public void setMetaBuffer(CircularObjectBuffer<String> circularStringBuffer) { - logger.debug("Set meta input stream"); - this.circularStringBuffer = circularStringBuffer; - } - - public void setMeta(String meta) { - logger.debug("Set meta string: " + meta); - metaData = meta; - } - - protected class Client extends Listen<Data> { - protected Socket socket; - protected InputStream inputStream; - protected OutputStream outputStream; - protected boolean writeMeta; - protected int untilMeta; - protected boolean active; - - public Client(Socket socket) throws IOException { - this.socket = socket; - inputStream = socket.getInputStream(); - outputStream = socket.getOutputStream(); - active = false; - clientList.add(this); - } - - public void activate() throws ActivateException { - BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); - try { - String line; - while ((line = bufferedReader.readLine()) != null) { - if (line.startsWith("Icy-MetaData")) { - writeMeta = Integer.valueOf(line.substring(line.indexOf(":") + 1).trim()).intValue() == 1; - untilMeta = META; - } else if (line.equals("")) { - break; - } - } - logger.debug(String.format("Client accept meta: %s", Boolean.valueOf(writeMeta))); - - OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream); - outputStreamWriter.write("ICY 200 OK\r\n"); - for (Entry<String, String> header : headerMap.entrySet()) { - outputStreamWriter.write(String.format("%s: %s\r\n", header.getKey(), header.getValue())); - } - outputStreamWriter.write("\r\n"); - outputStreamWriter.flush(); - - add(new Data(buffer.get())); - active = true; - } catch (IOException e) { - logger.error(e.getMessage()); - throw new ActivateException(); - } - super.activate(); - } - - public void exit() { - logger.debug("Client exit"); - super.exit(); - clientList.remove(this); - try { - inputStream.close(); - outputStream.close(); - socket.close(); - } catch (IOException e) { - logger.error(e.getMessage()); - } - } - - public void input(Data data) { - try { - byte[] bytes = data.get(); - if (writeMeta) { - int offset = 0; - while (data.length() - offset >= untilMeta) { - outputStream.write(bytes, offset, untilMeta); - writeMeta(); - offset += untilMeta; - untilMeta = META; - } - int length = data.length() - offset; - outputStream.write(bytes, offset, length); - untilMeta -= length; - } else { - outputStream.write(bytes); - } - } catch (SocketException e) { - exit(); - } catch (IOException e) { - exit(); - } - } - - protected void writeMeta() throws IOException { - if ((circularStringBuffer != null) - && (circularStringBuffer.getAvailable() > 0)) { - try { - String newMetaData = circularStringBuffer.read(); - if (!newMetaData.isEmpty() && !newMetaData.equals(metaData)) { - metaData = newMetaData; - } - } catch (InterruptedException e) { - logger.error(e.getMessage()); - } - } - - String meta = String.format("StreamTitle='%s';StreamUrl='%s';", metaData, "???"); - byte[] metaBytes = meta.getBytes(); - - int length = (int) Math.ceil(metaBytes.length / 16.0F); - outputStream.write(length); - outputStream.write(metaBytes); - - int padding = 16 * length - metaBytes.length; - outputStream.write(new byte[padding], 0, padding); - } - } - - protected class Server extends Work { - protected int port; - protected ServerSocket serverSocket; - - public Server(int port) { - this.port = port; - } - - public boolean active() { - return serverSocket.isClosed() ? false : true; - } - - public void activate() throws ActivateException { - try { - serverSocket = new ServerSocket(port); - logger.debug("Server listening at port " + port); - } catch (IOException e) { - logger.error("", e); - throw new ActivateException(); - } - super.activate(); - } - - public void work() { - try { - Socket socket = serverSocket.accept(); - logger.trace("Client connected: " + socket.getInetAddress().toString()); - Shoutcast.Client client = new Shoutcast.Client(socket); - client.start(); - } catch (IOException e) { - logger.error(e.getMessage()); - } - } - - public void deactivate() throws DeactivateException { - logger.debug("Server deactivate"); - super.deactivate(); - try { - serverSocket.close(); - } catch (IOException e) { - logger.error(e.getMessage()); - } - for (Shoutcast.Client client : clientList) { - client.stop(); - } - } - } - - public void start(Producer producer) { - producerInputStream = producer.getInputStream(); - producer.start(); - super.start(); - } - - public void setInputStream(InputStream inputStream) { - producerInputStream = inputStream; - } -} diff --git a/src/main/java/sound/data/Data.java b/src/main/java/sound/data/Data.java deleted file mode 100644 index 3e02d9c..0000000 --- a/src/main/java/sound/data/Data.java +++ /dev/null @@ -1,39 +0,0 @@ -/** - * Copyright (C) 2016 Rik Veenboer <rik.veenboer@gmail.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ -package sound.data; - -public class Data { - protected byte[] bytes; - protected int length; - - public Data(byte[] bytes) { - this(bytes, bytes.length); - } - - public Data(byte[] bytes, int length) { - this.bytes = bytes; - this.length = length; - } - - public byte[] get() { - return this.bytes; - } - - public int length() { - return this.length; - } -} \ No newline at end of file diff --git a/src/main/java/sound/producer/Stream.java b/src/main/java/sound/producer/Stream.java deleted file mode 100644 index 66fd180..0000000 --- a/src/main/java/sound/producer/Stream.java +++ /dev/null @@ -1,216 +0,0 @@ -/** - * Copyright (C) 2016 Rik Veenboer <rik.veenboer@gmail.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ -package sound.producer; - -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.OutputStreamWriter; -import java.net.Socket; -import java.net.URL; - -import sound.Format; -import sound.Producer; -import sound.stream.HoardedInputStream; -import base.exception.worker.ActivateException; -import base.exception.worker.DeactivateException; -import base.work.Work; - -import com.Ostermiller.util.CircularByteBuffer; -import com.Ostermiller.util.CircularObjectBuffer; - -public class Stream extends Work implements Producer, Format.Mp3 { - public static final int STEP = 80; // in milliseconds - - protected String http; - protected Socket socket; - protected InputStream socketInputStream; - protected OutputStreamWriter socketOutputStreamWriter; - protected HoardedInputStream hoardedInputStream; - protected int meta; - protected int rate; - protected int chunk; - protected int untilMeta; - protected CircularByteBuffer audioCircularByteBuffer; - protected CircularObjectBuffer<String> metaCircularObjectBuffer; - protected String metaData; - - public Stream(String http) { - super(); - this.http = http; - meta = -1; - rate = -1; - audioCircularByteBuffer = new CircularByteBuffer(CircularByteBuffer.INFINITE_SIZE); - metaCircularObjectBuffer = new CircularObjectBuffer<String>(); - } - - protected void connect(URL url) { - try { - /* Open socket communication */ - socket = new Socket(url.getHost(), url.getPort()); - socketInputStream = socket.getInputStream(); - socketOutputStreamWriter = new OutputStreamWriter(socket.getOutputStream()); - - /* Write stream request */ - if (url.getFile().equals("")) { - socketOutputStreamWriter.write("GET / HTTP/1.1\r\n"); - } else { - socketOutputStreamWriter.write("GET " + url.getFile() + " HTTP/1.1\r\n"); - } - socketOutputStreamWriter.write("Host: " + url.getHost() + "\r\n"); - //socketOutputStreamWriter.write("Icy-MetaData: 1\r\n"); - socketOutputStreamWriter.write("Connection: close\r\n"); - socketOutputStreamWriter.write("\r\n"); - socketOutputStreamWriter.flush(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - public void activate() throws ActivateException { - try { - /* Initialize connection */ - URL url = new URL(http); - - /* Parse headers */ - connect(url); - InputStreamReader inputStreamReader = new InputStreamReader(socketInputStream); - StringBuffer stringBuffer = new StringBuffer(); - char character; - int skip = 0; - while ((character = (char) inputStreamReader.read()) > 0) { - ++skip; - if (character == '\n') { - /* Fetch relevant headers */ - String line = stringBuffer.toString().trim(); - if (line.startsWith("icy-metaint")) { - meta = Integer.valueOf(line.substring(line.indexOf(":") + 1).trim()); - } else if (line.startsWith("icy-br")) { - rate = Integer.valueOf(line.substring(line.indexOf(":") + 1).trim()); - } else if (line.equals("")) { - break; - } - stringBuffer = new StringBuffer(); - } else { - stringBuffer.append(character); - } - } - inputStreamReader.close(); - - /* Reconnect to bypass pre-buffering problems */ - connect(url); - socketInputStream = socket.getInputStream(); - socketInputStream.skip(skip); - } catch (IOException e) { - e.printStackTrace(); - } catch (NumberFormatException e) { - e.printStackTrace(); - } - - /* Calculate streaming parameters */ - //untilMeta = meta; - chunk = STEP * rate / 8; - super.activate(); - } - - public void deactivate() throws DeactivateException { - super.deactivate(); - audioCircularByteBuffer.clear(); - metaCircularObjectBuffer.clear(); - try { - hoardedInputStream.clear(); - } catch (IOException e) { - logger.error("", e); - throw new DeactivateException(); - } - } - - public void work() { - int left = chunk; - - /* Handle media at appropriate times * - while (meta > 0 && left >= untilMeta) { - stream(untilMeta); - left -= untilMeta; - meta(); - untilMeta = meta; - }*/ - - /* Stream at fixed rate */ - stream(left); - //untilMeta -= left; - sleep(STEP); - } - - protected void stream(int length) { - try { - byte[] bytes = new byte[length]; - int read = 0; - while (length > 0 && (read = socketInputStream.read(bytes)) > 0) { - length -= read; - audioCircularByteBuffer.getOutputStream().write(bytes); - } - } catch (IOException e) { - logger.error(e.getMessage()); - stop(); - } - } - - protected void meta() { - try { - /* Retrieve data length */ - byte[] data = new byte[1]; - socketInputStream.read(data); - - int length = 16 * data[0]; - data = new byte[length]; - socketInputStream.read(data); - - /* Check for new data */ - String newMetaData = new String(data); - if (!newMetaData.isEmpty() && !newMetaData.equals(metaData)) { - metaData = newMetaData; - metaCircularObjectBuffer.write(new String(data)); - logger.debug("data: " + metaData); - } - return; - } catch (IOException e) { - logger.error("", e); - } catch (IllegalStateException e) { - logger.error("", e); - } catch (InterruptedException e) { - logger.error("", e); - } - stop(); - return; - } - - public InputStream getInputStream() { - if (hoardedInputStream == null) { - hoardedInputStream = new HoardedInputStream(audioCircularByteBuffer.getInputStream()); - } - return hoardedInputStream; - } - - public CircularObjectBuffer<String> getMetaBufferStream() { - return metaCircularObjectBuffer; - } - - public int getRate() { - return rate; - } -} diff --git a/src/main/java/sound/producer/Target.java b/src/main/java/sound/producer/Target.java deleted file mode 100644 index bdc6d79..0000000 --- a/src/main/java/sound/producer/Target.java +++ /dev/null @@ -1,113 +0,0 @@ -/** - * Copyright (C) 2016 Rik Veenboer <rik.veenboer@gmail.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ -package sound.producer; - -import java.io.IOException; -import java.io.InputStream; - -import javax.sound.sampled.AudioFormat; -import javax.sound.sampled.LineUnavailableException; -import javax.sound.sampled.TargetDataLine; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import sound.Format; -import sound.Producer; -import sound.stream.HoardedInputStream; -import sound.util.Tool; - -public class Target implements Producer, Format.Standard { - protected Logger logger = LoggerFactory.getLogger(getClass()); - - protected Standard format; - - protected TargetDataLine line; - protected InputStream targetInputStream; - protected HoardedInputStream hoardedInputStream; - - protected AudioFormat audioFormat; - - public Target(String name) throws LineUnavailableException { - logger.debug(String.format("Target \"%s\" without format", name)); - line = Tool.getTargetDataLine(name); - audioFormat = line.getFormat(); - targetInputStream = new TargetInputStream(); - } - - public Target(String name, AudioFormat audioFormat) throws LineUnavailableException { - logger.debug(String.format("Target \"%s\" with format: %s", name, audioFormat)); - this.audioFormat = audioFormat; - line = Tool.getTargetDataLine(name, audioFormat); - targetInputStream = new TargetInputStream(); - } - - public AudioFormat getAudioFormat() { - return audioFormat; - } - - public InputStream getInputStream() { - return targetInputStream; - } - - public class TargetInputStream extends InputStream { - protected boolean open; - - public TargetInputStream() { - open = false; - } - - public int read() throws IOException { - start(); - byte[] buffer = new byte[1]; - line.read(buffer, 0, 1); - return (int) buffer[0]; - } - - public int read(byte[] buffer, int offset, int length) { - start(); - line.read(buffer, offset, length); - return length; - } - - public int available() { - start(); - return line.available(); - } - } - - public void start() { - if (!line.isOpen()) { - try { - line.open(); - } catch (LineUnavailableException e) { - logger.error("", e); - } - } - if (!line.isRunning()) { - line.start(); - } - } - - public void stop() { - line.flush(); - } - - public void exit() { - line.close(); - } -} diff --git a/src/main/java/sound/stream/HoardedInputStream.java b/src/main/java/sound/stream/HoardedInputStream.java deleted file mode 100644 index 4f6825b..0000000 --- a/src/main/java/sound/stream/HoardedInputStream.java +++ /dev/null @@ -1,92 +0,0 @@ -/** - * Copyright (C) 2016 Rik Veenboer <rik.veenboer@gmail.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ -package sound.stream; - -import java.io.BufferedInputStream; -import java.io.IOException; -import java.io.InputStream; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class HoardedInputStream extends BufferedInputStream { - protected Logger logger = LoggerFactory.getLogger(getClass()); - - protected static final int SLEEP = 500; // in milliseconds - protected static final int BUFFER_SIZE = 30000; // in bytes - protected static final int MINIMUM_SIZE = 1000; // in bytes - - protected int bufferSize; - protected int minimumSize; - protected boolean hoard; - - public HoardedInputStream(InputStream inputStream) { - this(inputStream, BUFFER_SIZE, MINIMUM_SIZE); - } - - public HoardedInputStream(InputStream inputStream, int bufferSize) { - super(inputStream, bufferSize); - this.bufferSize = bufferSize; - hoard = true; - } - - public HoardedInputStream(InputStream inputStream, int bufferSize, int minimumSize) { - this(inputStream, bufferSize); - this.minimumSize = minimumSize; - } - - public int read() throws IOException { - hoard(); - byte[] buffer = new byte[1]; - in.read(buffer, 0, 1); - return (int) buffer[0]; - } - - public int read(byte[] buffer, int offset, int length) throws IOException { - hoard(); - in.read(buffer, offset, length); - return length; - } - - public void hoard() throws IOException { - int available = available(); - if (hoard && available < MINIMUM_SIZE) { - long time = System.currentTimeMillis(); - do { - try { - Thread.sleep(SLEEP); - } catch (InterruptedException e) { - logger.warn("", e); - } - } while (available() < BUFFER_SIZE); - logger.debug(String.format("Buffered %d bytes in %s milliseconds", BUFFER_SIZE - available, System.currentTimeMillis() - time)); - } - } - - public void clear() throws IOException { - this.buf = new byte[buf.length]; - reset(); - } - - public void drain() { - drain(true); - } - - public void drain(boolean drain) { - hoard = !drain; - } -} diff --git a/src/main/java/sound/util/Buffer.java b/src/main/java/sound/util/Buffer.java deleted file mode 100644 index 5c85b65..0000000 --- a/src/main/java/sound/util/Buffer.java +++ /dev/null @@ -1,57 +0,0 @@ -/** - * Copyright (C) 2016 Rik Veenboer <rik.veenboer@gmail.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ -package sound.util; - -public class Buffer { - protected byte[] elements; - public int capacity; - protected int index; - protected int size; - - public Buffer(int capacity) { - elements = new byte[capacity]; - this.capacity = capacity; - index = 0; - size = 0; - } - - public synchronized void add(byte[] elements) { - for (byte element : elements) { - elements[index++ % capacity] = element; - if (size < capacity) { - ++size; - } - } - } - - public synchronized void write(byte[] elements, int offset, int length) { - for (int i = offset; i < length; ++i) { - this.elements[(index++ % capacity)] = elements[i]; - if (size < capacity) { - ++size; - } - } - } - - public synchronized byte[] get() { - byte[] elements = new byte[size]; - for (int i = 0; i < size; i++) { - elements[i] = elements[((index + i) % size)]; - } - return elements; - } -} \ No newline at end of file diff --git a/src/main/java/sound/util/SoxBuilder.java b/src/main/java/sound/util/SoxBuilder.java deleted file mode 100644 index d1d44bd..0000000 --- a/src/main/java/sound/util/SoxBuilder.java +++ /dev/null @@ -1,337 +0,0 @@ -/** - * Copyright (C) 2016 Rik Veenboer <rik.veenboer@gmail.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ -package sound.util; - -import java.util.HashMap; -import java.util.Map.Entry; - -import javax.sound.sampled.AudioFormat; - -import sound.util.SoxBuilder.Option.Combine; -import sound.util.SoxBuilder.Option.Replay; - -public final class SoxBuilder { - protected static SoxBuilder instance; - protected static HashMap<String, String> optionMap; - protected static String files; - protected static String effects; - - static { - instance = new SoxBuilder(); - reset(); - } - - public static void reset() { - optionMap = new HashMap<String, String>(); - files = ""; - effects = ""; - } - - public static SoxBuilder setOption(Option option, String value) { - optionMap.put(option.getCode(), value); - return instance; - } - - public static SoxBuilder setOption(Option option) { - return SoxBuilder.setOption(option, ""); - } - - public static SoxBuilder setOption(Option option, int value) { - return SoxBuilder.setOption(option, String.valueOf(value)); - } - - public static SoxBuilder setOption(Option option, Combine combine) { - return SoxBuilder.setOption(option, combine.getCode()); - } - - public static SoxBuilder setOption(Combine combine) { - return SoxBuilder.setOption(Option.COMBINE, combine); - } - - public static SoxBuilder setOption(Option option, Replay replay) { - return SoxBuilder.setOption(option, replay.toString().toLowerCase()); - } - - public static SoxBuilder setOption(Replay replay) { - return SoxBuilder.setOption(Option.REPLAY, replay); - } - - public static SoxBuilder addFile(File file) { - files = String.format("%s %s", files, file.build()); - return instance; - } - - public static SoxBuilder addEffect(Effect effect) { - effects = String.format("%s %s", effects, effect.build()); - return instance; - } - - public String build() { - String build = "sox"; - for (Entry<String, String> entry : optionMap.entrySet()) { - String value = entry.getValue(); - if (value.equals("")) { - build = String.format("%s %s", build, entry.getKey()); - } else { - String option = String.format("%s %s", entry.getKey(), value); - build = String.format("%s %s", build, option); - } - } - build = String.format("%s%s%s", build, files, effects); - reset(); - return build; - } - - public enum Environment { - AUDIODRIVER, AUDIODEV - } - - public enum Option { - BUFFER ("--buffer"), // default=8192 - INPUT_BUFFER ("--input-buffer"), - CLOBBER ("--clobber"), - COMBINE ("--combine"), // |Combine| - NO_DITHER ("--no-dither"), // (-D) - EFFECTS_FILE ("--efects-file"), - GUARD ("--guard"), // (-G) - MIX ("-m"), // (--combine mix) - MERGE ("-M"), // (--combine merge) - MAGIC ("--magic"), - MULTI_THREADED ("--multi-threaded"), - SINGLE_THREADED ("--single-threaded"), - NORM ("--norm"), // [=dB-level] - PLAY_RATE_ARG ("--play-rate-arg"), - QUIET ("--no-show-progress"), // (-q) - REPEATABLE ("-R"), - REPLAY ("--replay-gain"), // |Replay| - MULTIPLY ("-T"), // (--combine multiply) - TEMP ("--temp"); - - protected String code; - - private Option(String code) { - this.code = code; - } - - public String getCode() { - return code; - } - - public enum Combine { - CONCATENATE ("concatenate"), - MERGE ("merge"), // (-M) - MIX ("mix"), // (-m) - MIX_POWER ("mix-power"), - MULTIPLY ("multiply"), // (-T) - SEQUENCE ("sequence"); - - protected String code; - - private Combine(String code) { - this.code = code; - } - - public String getCode() { - return code; - } - } - - public enum Replay { - TRACK, ALBUM, OFF - } - } - - public static class File { - protected static File instance; - - protected static HashMap<String, String> optionMap; - protected static Type type; - - static { - instance = new File(); - reset(); - } - - public static void reset() { - optionMap = new HashMap<String, String>(); - type = Type.PIPE; - } - - public static File setOption(Option option, String value) { - optionMap.put(option.getCode(), value); - return instance; - } - - public static File setOption(Option option) { - return File.setOption(option, ""); - } - - public static File setOption(Option option, int value) { - return File.setOption(option, String.valueOf(value)); - } - - public static File setOption(Option option, Encoding encoding) { - return File.setOption(option, encoding.getCode()); - } - - public static File setOption(Encoding encoding) { - return File.setOption(Option.ENCODING, encoding); - } - - public static File setOption(Option option, Format format) { - return File.setOption(option, format.toString().toLowerCase()); - } - - public static File setOption( Format format) { - return File.setOption(Option.FORMAT, format); - } - - public static File setOption(Option option, Endian endian) { - return File.setOption(option, endian.toString().toLowerCase()); - } - - public static File setOption(Endian endian) { - return File.setOption(Option.ENDIAN, endian); - } - - public File setOptions(AudioFormat audioFormat) { - setOption(Option.CHANNELS, audioFormat.getChannels()); - setOption(Option.RATE, String.format("%sk", String.valueOf(audioFormat.getSampleRate() / 1000f))); - AudioFormat.Encoding encoding = audioFormat.getEncoding(); - int bits = audioFormat.getSampleSizeInBits(); - if (encoding.equals(AudioFormat.Encoding.ALAW)) { - setOption(Format.AL); - setOption(Encoding.A_LAW); - } else if (encoding.equals(AudioFormat.Encoding.ULAW)) { - setOption(Format.UL); - setOption(Encoding.U_LAW); - } else if (encoding.equals(AudioFormat.Encoding.PCM_SIGNED)) { - setOption(Format.valueOf(String.format("S%d", bits))); - setOption(Encoding.SIGNED_INTEGER); - } else if (encoding.equals(AudioFormat.Encoding.PCM_UNSIGNED)) { - setOption(Format.valueOf(String.format("U%d", bits))); - setOption(Encoding.UNSIGNED_INTEGER); - } - setOption(audioFormat.isBigEndian() ? Endian.BIG : Endian.LITTLE); - return instance; - } - - public static File setType(Type type) { - File.type = type; - return instance; - } - - public String build() { - String build = type.getCode(); - for (Entry<String, String> entry : optionMap.entrySet()) { - String value = entry.getValue(); - if (value.equals("")) { - build = String.format("%s %s", entry.getKey(), build); - } else { - String option = String.format("%s %s", entry.getKey(), value); - build = String.format("%s %s", option, build); - } - } - reset(); - return build; - } - - public enum Option { - BITS ("--bits"), // (-b) - CHANNELS ("--channels"), // (-c) - ENCODING ("--encoding"), // (-e), |Encoding| - NO_GLOB ("--no-glob"), - RATE ("--rate"), // (-r) - FORMAT ("--type"), // (-t), |Format| - ENDIAN ("--endian"), // (-L, -B, -x), |Endian| - REVERSE_NIBBLES ("--reverse-nibbles"), // (-N) - REVERSE_BITS ("--reverse-bits"), // (-X) - /* Input only */ - IGNORE_LENGTH ("--ignore-length"), - VOLUME ("--volume"), // (-v) - /* Output only */ - ADD_COMMENT ("--add-comment"), - COMMENT ("--comment"), - COMMENT_FILE ("--comment-file"), - COMPRESSION ("--compression"); // -C - - protected String code; - - private Option(String code) { - this.code = code; - } - - public String getCode() { - return code; - } - } - - public enum Encoding { - SIGNED_INTEGER ("signed-integer"), // PCM data stored as signed integers - UNSIGNED_INTEGER ("unsigned-integer"), // PCM data stored as unsigned integers - FLOATING_POINT ("floating-point"), // PCM data stored as single precision (32-bit) or double precision (64-bit) floating-point numbers - A_LAW ("a-lawW"), // International telephony standard for logarithmic encoding to 8 bits per sample (~13-bit PCM) - U_LAW ("u-law"), // North American telephony standard for logarithmic encoding to 8 bits per sample (~14-bit PCM) - MU_LAW ("mu-law"), // alias for u-law (~14-bit PCM) - OKI_ADPCM ("oki-adpcm"), // OKI (VOX, Dialogic or Intel) 4-bit ADPCM (~12-bit PCM) - IMA_ADPCM ("ima-adpcm"), // IMA (DVI) 4-bit ADPCM (~13-bit PCM) - MS_ADPCM ("ms-adpcm"), // Microsoft 4-bit ADPCM (~14-bit PCM) - GSM_FULL_RATE ("gsm-full-rate"); // Several audio formats used for digital wireless telephone calls - - protected String code; - - private Encoding(String code) { - this.code = code; - } - - public String getCode() { - return code; - } - } - - public enum Format { - AIF, AIFC, AIFF, AIFFC, AL, AMB, AMR, ANY, ARL, AU, AVR, BIN, CAF, CDDA, CDR, CVS, CVSD, CVU, DAT, DVMS, EDU, F32, F64, FAP, FLAC, FSSD, GSM, GSRT, HCOM, HTK, IMA, IRCAM, LA, LPC, LPC10, LU, M3U, M4A, MAT, MAT4, MAT5, MAUD, MP2, MP3, MP4, NIST, OGG, PAF, PLS, PRC, PVF, RAW, S16, S24, S32, S8, SD2, SDS, SF, SLN, SMP, SND, SNDR, SNDT, SOU, SOX, SPH, TXW, U16, U24, U32, U8, UL, VMS, VOC, VORBIS, VOX, W64, WAV, WAVPCM, WV, WVE, XA, XI; - } - - public enum Endian { - LITTLE, BIG, SWAP; - } - - public enum Type { - STANDARD ("-"), // -t must be given - PIPE ("-p"), // (--sox-pipe) - DEVICE ("-d"), // (--default-device) - NULL ("-n"); // (--null) - - protected String code; - - private Type(String code) { - this.code = code; - } - - public String getCode() { - return code; - } - } - } - - public class Effect { - public String build() { - return null; - } - } -} diff --git a/src/main/java/sound/util/Tool.java b/src/main/java/sound/util/Tool.java deleted file mode 100644 index be85406..0000000 --- a/src/main/java/sound/util/Tool.java +++ /dev/null @@ -1,156 +0,0 @@ -/** - * Copyright (C) 2016 Rik Veenboer <rik.veenboer@gmail.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ -package sound.util; - -import java.util.ArrayList; -import java.util.HashMap; - -import javax.sound.sampled.AudioFormat; -import javax.sound.sampled.AudioSystem; -import javax.sound.sampled.DataLine; -import javax.sound.sampled.Line; -import javax.sound.sampled.LineUnavailableException; -import javax.sound.sampled.Mixer; -import javax.sound.sampled.Port; -import javax.sound.sampled.Port.Info; -import javax.sound.sampled.SourceDataLine; -import javax.sound.sampled.TargetDataLine; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class Tool { - protected static Logger logger = LoggerFactory.getLogger(Tool.class); - - protected static HashMap<String, Device<TargetDataLine>> targetMap; - protected static HashMap<String, Device<SourceDataLine>> sourceMap; - protected static ArrayList<String> portList; - - protected static ArrayList<String> targetList; - protected static ArrayList<String> sourceList; - - static { - Tool tool = new Tool(); - - targetMap = new HashMap<String, Device<TargetDataLine>>(); - sourceMap = new HashMap<String, Device<SourceDataLine>>(); - targetList = new ArrayList<String>(); - sourceList = new ArrayList<String>(); - portList = new ArrayList<String>(); - - for (Mixer.Info mixerInfo : AudioSystem.getMixerInfo()) { - String name = mixerInfo.getName(); - Mixer mixer = AudioSystem.getMixer(mixerInfo); - - for (Line.Info lineInfo : mixer.getSourceLineInfo()) { - String lineClassName = lineInfo.getLineClass().getName(); - if (lineClassName.equals("javax.sound.sampled.SourceDataLine")) { - if (mixer.isLineSupported(lineInfo)) { - logger.debug("<Source> " + name); - sourceMap.put(name, tool.new Device<SourceDataLine>(mixer, lineInfo)); - } - } - } - for (Line.Info lineInfo : mixer.getTargetLineInfo()) { - String lineClassName = lineInfo.getLineClass().getName(); - if (lineClassName.equals("javax.sound.sampled.TargetDataLine")) { - if (mixer.isLineSupported(lineInfo)) { - logger.debug("<Target> " + name); - targetMap.put(name, tool.new Device<TargetDataLine>(mixer, lineInfo)); - } - } else if (lineClassName.equals("javax.sound.sampled.Port")) { - name = name.substring(5); - try { - Port port = (Port) mixer.getLine(lineInfo); - Port.Info portInfo = (Info) port.getLineInfo(); - if (!targetMap.containsKey(name) || portInfo.equals(Port.Info.LINE_OUT) || portInfo.equals(Port.Info.SPEAKER)) { - logger.debug("<Port> " + name); - portList.add(name); - } - } catch (LineUnavailableException e) { - logger.error("", e); - } - } - } - } - } - - public static String[] getTargets() { - return targetMap.keySet().toArray(new String[0]); - } - - public static String[] getSources() { - return sourceMap.keySet().toArray(new String[0]); - } - - public static String[] getPorts() { - return portList.toArray(new String[0]); - } - - public static TargetDataLine getTargetDataLine(String name) throws LineUnavailableException { - if (targetMap.containsKey(name)) { - return targetMap.get(name).getLine(); - } else { - throw new LineUnavailableException(); - } - } - - public static TargetDataLine getTargetDataLine(String name, AudioFormat audioFormat) throws LineUnavailableException { - if (targetMap.containsKey(name)) { - return targetMap.get(name).getLine(audioFormat); - } else { - throw new LineUnavailableException(); - } - } - - public static SourceDataLine getSourceDataLine(String name) throws LineUnavailableException { - if (sourceMap.containsKey(name)) { - return sourceMap.get(name).getLine(); - } else { - throw new LineUnavailableException(); - } - } - - public static SourceDataLine getSourceDataLine(String name, AudioFormat audioFormat) throws LineUnavailableException { - if (sourceMap.containsKey(name)) { - return sourceMap.get(name).getLine(audioFormat); - } else { - throw new LineUnavailableException(); - } - } - - public class Device<T> { - protected Mixer mixer; - protected Line.Info lineInfo; - - public Device(Mixer mixer, Line.Info lineInfo) { - this.mixer = mixer; - this.lineInfo = lineInfo; - } - - @SuppressWarnings("unchecked") - public T getLine() throws LineUnavailableException { - return (T) mixer.getLine(lineInfo); - } - - @SuppressWarnings("unchecked") - public T getLine(AudioFormat audioFormat) throws LineUnavailableException { - DataLine.Info dataLineInfo = new DataLine.Info(lineInfo.getLineClass(), audioFormat); - return (T) mixer.getLine(dataLineInfo); - } - } -} diff --git a/src/main/java/sound/util/Utils.java b/src/main/java/sound/util/Utils.java deleted file mode 100644 index e25ee34..0000000 --- a/src/main/java/sound/util/Utils.java +++ /dev/null @@ -1,55 +0,0 @@ -/** - * Copyright (C) 2016 Rik Veenboer <rik.veenboer@gmail.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ -package sound.util; - -import java.io.BufferedInputStream; -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; - -import javazoom.jl.decoder.JavaLayerException; -import javazoom.jl.player.Player; - -public class Utils { - public static final int BUFFER = 2048; // bytes - - public static void play(InputStream inputStream) { - try { - new Player(new BufferedInputStream(inputStream)).play(); - } catch (JavaLayerException e) { - e.printStackTrace(); - } - } - - public static void write(InputStream inputStream, File file) { - byte[] bytes = new byte[BUFFER]; - int read = 0; - try { - FileOutputStream fileOutputStream = new FileOutputStream(file); - while ((read = inputStream.read(bytes)) > 0) { - fileOutputStream.write(bytes, 0, read); - } - fileOutputStream.close(); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - } -} diff --git a/src/main/resources/txt/keuze.txt b/src/main/resources/txt/keuze.txt deleted file mode 100644 index 7e9581d..0000000 --- a/src/main/resources/txt/keuze.txt +++ /dev/null @@ -1,13 +0,0 @@ -from pcm: - --r -s <freq in khz> [--unsigned] [--big-endian] - -to mp3: ---cbr -b <bitrate> - - -mp3 to pcm: ---decode - -always: - - - --quiet \ No newline at end of file diff --git a/src/main/resources/txt/lame b/src/main/resources/txt/lame deleted file mode 100644 index 4d95aae..0000000 --- a/src/main/resources/txt/lame +++ /dev/null @@ -1,182 +0,0 @@ -LAME 32bits version 3.98.4 (http://www.mp3dev.org/) - -usage: lame [options] <infile> [outfile] - - <infile> and/or <outfile> can be "-", which means stdin/stdout. - -RECOMMENDED: - lame -V2 input.wav output.mp3 - -OPTIONS: - Input options: - --scale <arg> scale input (multiply PCM data) by <arg> - --scale-l <arg> scale channel 0 (left) input (multiply PCM data) by <arg> - --scale-r <arg> scale channel 1 (right) input (multiply PCM data) by <arg> - --mp1input input file is a MPEG Layer I file - --mp2input input file is a MPEG Layer II file - --mp3input input file is a MPEG Layer III file - --nogap <file1> <file2> <...> - gapless encoding for a set of contiguous files - --nogapout <dir> - output dir for gapless encoding (must precede --nogap) - --nogaptags allow the use of VBR tags in gapless encoding - - Input options for RAW PCM: - -r input is raw pcm - -x force byte-swapping of input - -s sfreq sampling frequency of input file (kHz) - default 44.1 kHz - --bitwidth w input bit width is w (default 16) - --signed input is signed (default) - --unsigned input is unsigned - --little-endian input is little-endian (default) - --big-endian input is big-endian - - - Operational options: - -a downmix from stereo to mono file for mono encoding - -m <mode> (j)oint, (s)imple, (f)orce, (d)dual-mono, (m)ono - default is (j) or (s) depending on bitrate - joint = joins the best possible of MS and LR stereo - simple = force LR stereo on all frames - force = force MS stereo on all frames. - --preset type type must be "medium", "standard", "extreme", "insane", - or a value for an average desired bitrate and depending - on the value specified, appropriate quality settings will - be used. - "--preset help" gives more info on these - --comp <arg> choose bitrate to achive a compression ratio of <arg> - --replaygain-fast compute RG fast but slightly inaccurately (default) - --replaygain-accurate compute RG more accurately and find the peak sample - --noreplaygain disable ReplayGain analysis - --clipdetect enable --replaygain-accurate and print a message whether - clipping occurs and how far the waveform is from full scale - --flush flush output stream as soon as possible - --freeformat produce a free format bitstream - --decode input=mp3 file, output=wav - -t disable writing wav header when using --decode - - - Verbosity: - --disptime <arg>print progress report every arg seconds - -S don't print progress report, VBR histograms - --nohist disable VBR histogram display - --silent don't print anything on screen - --quiet don't print anything on screen - --brief print more useful information - --verbose print a lot of useful information - - Noise shaping & psycho acoustic algorithms: - -q <arg> <arg> = 0...9. Default -q 5 - -q 0: Highest quality, very slow - -q 9: Poor quality, but fast - -h Same as -q 2. Recommended. - -f Same as -q 7. Fast, ok quality - - - CBR (constant bitrate, the default) options: - -b <bitrate> set the bitrate in kbps, default 128 kbps - --cbr enforce use of constant bitrate - - ABR options: - --abr <bitrate> specify average bitrate desired (instead of quality) - - VBR options: - -V n quality setting for VBR. default n=4 - 0=high quality,bigger files. 9=smaller files - -v the same as -V 4 - --vbr-old use old variable bitrate (VBR) routine - --vbr-new use new variable bitrate (VBR) routine (default) - -b <bitrate> specify minimum allowed bitrate, default 32 kbps - -B <bitrate> specify maximum allowed bitrate, default 320 kbps - -F strictly enforce the -b option, for use with players that - do not support low bitrate mp3 - -t disable writing LAME Tag - -T enable and force writing LAME Tag - - - PSY related: - --temporal-masking x x=0 disables, x=1 enables temporal masking effect - --nssafejoint M/S switching criterion - --nsmsfix <arg> M/S switching tuning [effective 0-3.5] - --interch x adjust inter-channel masking ratio - --ns-bass x adjust masking for sfbs 0 - 6 (long) 0 - 5 (short) - --ns-alto x adjust masking for sfbs 7 - 13 (long) 6 - 10 (short) - --ns-treble x adjust masking for sfbs 14 - 21 (long) 11 - 12 (short) - --ns-sfb21 x change ns-treble by x dB for sfb21 - - - experimental switches: - -Y lets LAME ignore noise in sfb21, like in CBR - - - MP3 header/stream options: - -e <emp> de-emphasis n/5/c (obsolete) - -c mark as copyright - -o mark as non-original - -p error protection. adds 16 bit checksum to every frame - (the checksum is computed correctly) - --nores disable the bit reservoir - --strictly-enforce-ISO comply as much as possible to ISO MPEG spec - - Filter options: - --lowpass <freq> frequency(kHz), lowpass filter cutoff above freq - --lowpass-width <freq> frequency(kHz) - default 15% of lowpass freq - --highpass <freq> frequency(kHz), highpass filter cutoff below freq - --highpass-width <freq> frequency(kHz) - default 15% of highpass freq - --resample <sfreq> sampling frequency of output file(kHz)- default=automatic - - - ID3 tag options: - --tt <title> audio/song title (max 30 chars for version 1 tag) - --ta <artist> audio/song artist (max 30 chars for version 1 tag) - --tl <album> audio/song album (max 30 chars for version 1 tag) - --ty <year> audio/song year of issue (1 to 9999) - --tc <comment> user-defined text (max 30 chars for v1 tag, 28 for v1.1) - --tn <track[/total]> audio/song track number and (optionally) the total - number of tracks on the original recording. (track - and total each 1 to 255. just the track number - creates v1.1 tag, providing a total forces v2.0). - --tg <genre> audio/song genre (name or number in list) - --ti <file> audio/song albumArt (jpeg/png/gif file, 128KB max, v2.3) - --tv <id=value> user-defined frame specified by id and value (v2.3 tag) - --add-id3v2 force addition of version 2 tag - --id3v1-only add only a version 1 tag - --id3v2-only add only a version 2 tag - --space-id3v1 pad version 1 tag with spaces instead of nulls - --pad-id3v2 same as '--pad-id3v2-size 128' - --pad-id3v2-size <value> adds version 2 tag, pad with extra <value> bytes - --genre-list print alphabetically sorted ID3 genre list and exit - --ignore-tag-errors ignore errors in values passed for tags - - Note: A version 2 tag will NOT be added unless one of the input fields - won't fit in a version 1 tag (e.g. the title string is longer than 30 - characters), or the '--add-id3v2' or '--id3v2-only' options are used, - or output is redirected to stdout. - - -MS-Windows-specific options: - --priority <type> sets the process priority: - 0,1 = Low priority (IDLE_PRIORITY_CLASS) - 2 = normal priority (NORMAL_PRIORITY_CLASS, default) - 3,4 = High priority (HIGH_PRIORITY_CLASS)) - Note: Calling '--priority' without a parameter will select priority 0. - -Misc: - --license print License information - - - - Platform specific: - --noasm <instructions> disable assembly optimizations for mmx/3dnow/sse - - - -MPEG-1 layer III sample frequencies (kHz): 32 48 44.1 -bitrates (kbps): 32 40 48 56 64 80 96 112 128 160 192 224 256 320 - -MPEG-2 layer III sample frequencies (kHz): 16 24 22.05 -bitrates (kbps): 8 16 24 32 40 48 56 64 80 96 112 128 144 160 - -MPEG-2.5 layer III sample frequencies (kHz): 8 12 11.025 -bitrates (kbps): 8 16 24 32 40 48 56 64 - diff --git a/src/main/resources/txt/mp3 b/src/main/resources/txt/mp3 deleted file mode 100644 index daf87ab..0000000 --- a/src/main/resources/txt/mp3 +++ /dev/null @@ -1,1357 +0,0 @@ -C:/Users/Rik/Music/Artists/+44/When Your Heart Stops Beating/+44 - 155.mp3 -C:/Users/Rik/Music/Artists/+44/When Your Heart Stops Beating/+44 - Baby Come On.mp3 -C:/Users/Rik/Music/Artists/+44/When Your Heart Stops Beating/+44 - Chapter 13.mp3 -C:/Users/Rik/Music/Artists/+44/When Your Heart Stops Beating/+44 - Cliff Diving.mp3 -C:/Users/Rik/Music/Artists/+44/When Your Heart Stops Beating/+44 - Interlude.mp3 -C:/Users/Rik/Music/Artists/+44/When Your Heart Stops Beating/+44 - Lillian.mp3 -C:/Users/Rik/Music/Artists/+44/When Your Heart Stops Beating/+44 - Little Death.mp3 -C:/Users/Rik/Music/Artists/+44/When Your Heart Stops Beating/+44 - Lycanthrope.mp3 -C:/Users/Rik/Music/Artists/+44/When Your Heart Stops Beating/+44 - Make You Smile.mp3 -C:/Users/Rik/Music/Artists/+44/When Your Heart Stops Beating/+44 - No, It Isn't.mp3 -C:/Users/Rik/Music/Artists/+44/When Your Heart Stops Beating/+44 - Weatherman.mp3 -C:/Users/Rik/Music/Artists/+44/When Your Heart Stops Beating/+44 - When Your Heart Stops Beating.mp3 -C:/Users/Rik/Music/Artists/10 Years Feeding/Feeding the Wolves/10 Years - Chasing the Rapture.mp3 -C:/Users/Rik/Music/Artists/10 Years Feeding/Feeding the Wolves/10 Years - Dead In the Water.mp3 -C:/Users/Rik/Music/Artists/10 Years Feeding/Feeding the Wolves/10 Years - Fade Into the Dream.mp3 -C:/Users/Rik/Music/Artists/10 Years Feeding/Feeding the Wolves/10 Years - Fix Me.mp3 -C:/Users/Rik/Music/Artists/10 Years Feeding/Feeding the Wolves/10 Years - Now Is the Time.mp3 -C:/Users/Rik/Music/Artists/10 Years Feeding/Feeding the Wolves/10 Years - One More Day.mp3 -C:/Users/Rik/Music/Artists/10 Years Feeding/Feeding the Wolves/10 Years - The Wicked Ones.mp3 -C:/Users/Rik/Music/Artists/10 Years Feeding/Feeding the Wolves/10 Years - Waking Up the Ghost.mp3 -C:/Users/Rik/Music/Artists/30 Seconds To Mars/A Beautiful Lie/30 Seconds to Mars - A Beautiful Lie.mp3 -C:/Users/Rik/Music/Artists/30 Seconds To Mars/A Beautiful Lie/30 Seconds to Mars - Attack.mp3 -C:/Users/Rik/Music/Artists/30 Seconds To Mars/A Beautiful Lie/30 Seconds to Mars - Battle of One.mp3 -C:/Users/Rik/Music/Artists/30 Seconds To Mars/A Beautiful Lie/30 Seconds to Mars - From Yesterday.mp3 -C:/Users/Rik/Music/Artists/30 Seconds To Mars/A Beautiful Lie/30 Seconds to Mars - R-Evolve.mp3 -C:/Users/Rik/Music/Artists/30 Seconds To Mars/A Beautiful Lie/30 Seconds to Mars - Savior.mp3 -C:/Users/Rik/Music/Artists/30 Seconds To Mars/A Beautiful Lie/30 Seconds to Mars - The Fantasy.mp3 -C:/Users/Rik/Music/Artists/30 Seconds To Mars/A Beautiful Lie/30 Seconds to Mars - Was It a Dream.mp3 -C:/Users/Rik/Music/Artists/30 Seconds To Mars/This Is War/30 Seconds to Mars - A Call to Arms.mp3 -C:/Users/Rik/Music/Artists/30 Seconds To Mars/This Is War/30 Seconds to Mars - Closer to the Edge.mp3 -C:/Users/Rik/Music/Artists/30 Seconds To Mars/This Is War/30 Seconds to Mars - Equinox.mp3 -C:/Users/Rik/Music/Artists/30 Seconds To Mars/This Is War/30 Seconds to Mars - Escape.mp3 -C:/Users/Rik/Music/Artists/30 Seconds To Mars/This Is War/30 Seconds to Mars - Hurricane.mp3 -C:/Users/Rik/Music/Artists/30 Seconds To Mars/This Is War/30 Seconds to Mars - Kings and Queens.mp3 -C:/Users/Rik/Music/Artists/30 Seconds To Mars/This Is War/30 Seconds to Mars - Night of the Hunter (Flood Remix).mp3 -C:/Users/Rik/Music/Artists/30 Seconds To Mars/This Is War/30 Seconds to Mars - Night of the Hunter.mp3 -C:/Users/Rik/Music/Artists/30 Seconds To Mars/This Is War/30 Seconds to Mars - Search & Destroy.mp3 -C:/Users/Rik/Music/Artists/30 Seconds To Mars/This Is War/30 Seconds to Mars - This Is War.mp3 -C:/Users/Rik/Music/Artists/All Time Low/Nothing Personal/All Time Low - A Party Song (The Walk of Shame).mp3 -C:/Users/Rik/Music/Artists/All Time Low/Nothing Personal/All Time Low - Break Your Little Heart.mp3 -C:/Users/Rik/Music/Artists/All Time Low/Nothing Personal/All Time Low - Damned If I Do Ya (Damned If I Don't).mp3 -C:/Users/Rik/Music/Artists/All Time Low/Nothing Personal/All Time Low - Hello Brooklyn.mp3 -C:/Users/Rik/Music/Artists/All Time Low/Nothing Personal/All Time Low - Keep the Change, You Filthy Animal.mp3 -C:/Users/Rik/Music/Artists/All Time Low/Nothing Personal/All Time Low - Lost In Stereo.mp3 -C:/Users/Rik/Music/Artists/All Time Low/Nothing Personal/All Time Low - Sick Little Games.mp3 -C:/Users/Rik/Music/Artists/All Time Low/Nothing Personal/All Time Low - Stella.mp3 -C:/Users/Rik/Music/Artists/All Time Low/Nothing Personal/All Time Low - Therapy.mp3 -C:/Users/Rik/Music/Artists/All Time Low/Nothing Personal/All Time Low - Too Much.mp3 -C:/Users/Rik/Music/Artists/All Time Low/Nothing Personal/All Time Low - Walls.mp3 -C:/Users/Rik/Music/Artists/All Time Low/Nothing Personal/All Time Low - Weightless.mp3 -C:/Users/Rik/Music/Artists/Anberlin/Dark Is The Way, Light Is A Place/Anberlin - Art of War.mp3 -C:/Users/Rik/Music/Artists/Anberlin/Dark Is The Way, Light Is A Place/Anberlin - Closer.mp3 -C:/Users/Rik/Music/Artists/Anberlin/Dark Is The Way, Light Is A Place/Anberlin - Depraved.mp3 -C:/Users/Rik/Music/Artists/Anberlin/Dark Is The Way, Light Is A Place/Anberlin - Down.mp3 -C:/Users/Rik/Music/Artists/Anberlin/Dark Is The Way, Light Is A Place/Anberlin - Impossible.mp3 -C:/Users/Rik/Music/Artists/Anberlin/Dark Is The Way, Light Is A Place/Anberlin - Pray Tell.mp3 -C:/Users/Rik/Music/Artists/Anberlin/Dark Is The Way, Light Is A Place/Anberlin - Take Me (As You Found Me).mp3 -C:/Users/Rik/Music/Artists/Anberlin/Dark Is The Way, Light Is A Place/Anberlin - To the Wolves.mp3 -C:/Users/Rik/Music/Artists/Anberlin/Dark Is The Way, Light Is A Place/Anberlin - We Owe This to Ourselves.mp3 -C:/Users/Rik/Music/Artists/Anberlin/Dark Is The Way, Light Is A Place/Anberlin - You Belong Here.mp3 -C:/Users/Rik/Music/Artists/Angels & Airwaves/Love/Angels & Airwaves - Clever Love.mp3 -C:/Users/Rik/Music/Artists/Angels & Airwaves/Love/Angels & Airwaves - Epic Holiday.mp3 -C:/Users/Rik/Music/Artists/Angels & Airwaves/Love/Angels & Airwaves - Et Ducit Mundum Per Luce.mp3 -C:/Users/Rik/Music/Artists/Angels & Airwaves/Love/Angels & Airwaves - Hallucinations.mp3 -C:/Users/Rik/Music/Artists/Angels & Airwaves/Love/Angels & Airwaves - Letters to God, Part Ii.mp3 -C:/Users/Rik/Music/Artists/Angels & Airwaves/Love/Angels & Airwaves - Shove.mp3 -C:/Users/Rik/Music/Artists/Angels & Airwaves/Love/Angels & Airwaves - Some Origins of Fire.mp3 -C:/Users/Rik/Music/Artists/Angels & Airwaves/Love/Angels & Airwaves - Soul Survivor (...2012).mp3 -C:/Users/Rik/Music/Artists/Angels & Airwaves/Love/Angels & Airwaves - The Flight of Apollo.mp3 -C:/Users/Rik/Music/Artists/Angels & Airwaves/Love/Angels & Airwaves - The Moon-Atomic (...Fragments and Fictions).mp3 -C:/Users/Rik/Music/Artists/Angels & Airwaves/Love/Angels & Airwaves - Young London.mp3 -C:/Users/Rik/Music/Artists/Arcade Fire/The Suburbs/Arcade Fire - City With No Children.mp3 -C:/Users/Rik/Music/Artists/Arcade Fire/The Suburbs/Arcade Fire - Empty Room.mp3 -C:/Users/Rik/Music/Artists/Arcade Fire/The Suburbs/Arcade Fire - Half Light Ii (No Celebration).mp3 -C:/Users/Rik/Music/Artists/Arcade Fire/The Suburbs/Arcade Fire - Modern Man.mp3 -C:/Users/Rik/Music/Artists/Arcade Fire/The Suburbs/Arcade Fire - Month of May.mp3 -C:/Users/Rik/Music/Artists/Arcade Fire/The Suburbs/Arcade Fire - Suburban War.mp3 -C:/Users/Rik/Music/Artists/Blink-182/Greatest Hits/Blink-182 - Adam's Song.mp3 -C:/Users/Rik/Music/Artists/Blink-182/Greatest Hits/Blink-182 - All the Small Things.mp3 -C:/Users/Rik/Music/Artists/Blink-182/Greatest Hits/Blink-182 - Always.mp3 -C:/Users/Rik/Music/Artists/Blink-182/Greatest Hits/Blink-182 - Another Girl Another Planet.mp3 -C:/Users/Rik/Music/Artists/Blink-182/Greatest Hits/Blink-182 - Carousel.mp3 -C:/Users/Rik/Music/Artists/Blink-182/Greatest Hits/Blink-182 - Dammit.mp3 -C:/Users/Rik/Music/Artists/Blink-182/Greatest Hits/Blink-182 - Down.mp3 -C:/Users/Rik/Music/Artists/Blink-182/Greatest Hits/Blink-182 - Feelin' This.mp3 -C:/Users/Rik/Music/Artists/Blink-182/Greatest Hits/Blink-182 - First Date.mp3 -C:/Users/Rik/Music/Artists/Blink-182/Greatest Hits/Blink-182 - Josie.mp3 -C:/Users/Rik/Music/Artists/Blink-182/Greatest Hits/Blink-182 - M&m's.mp3 -C:/Users/Rik/Music/Artists/Blink-182/Greatest Hits/Blink-182 - Man Overboard (Live).mp3 -C:/Users/Rik/Music/Artists/Blink-182/Greatest Hits/Blink-182 - Miss You.mp3 -C:/Users/Rik/Music/Artists/Blink-182/Greatest Hits/Blink-182 - Not Now.mp3 -C:/Users/Rik/Music/Artists/Blink-182/Greatest Hits/Blink-182 - Rock Show.mp3 -C:/Users/Rik/Music/Artists/Blink-182/Greatest Hits/Blink-182 - Stay Together For the Kids.mp3 -C:/Users/Rik/Music/Artists/Blink-182/Greatest Hits/Blink-182 - What's My Age Again.mp3 -C:/Users/Rik/Music/Artists/Coldplay/Coldplay - Clocks.mp3 -C:/Users/Rik/Music/Artists/Coldplay/Coldplay - In My Place.mp3 -C:/Users/Rik/Music/Artists/Coldplay/Coldplay - Life In Technicolor Ii.mp3 -C:/Users/Rik/Music/Artists/Coldplay/Coldplay - Speed of Sound.mp3 -C:/Users/Rik/Music/Artists/Coldplay/Coldplay - Talk.mp3 -C:/Users/Rik/Music/Artists/Coldplay/Viva la Vida or Death and All His Friends/Coldplay - Life In Technicolor.mp3 -C:/Users/Rik/Music/Artists/Coldplay/Viva la Vida or Death and All His Friends/Coldplay - Lost!.mp3 -C:/Users/Rik/Music/Artists/Coldplay/Viva la Vida or Death and All His Friends/Coldplay - Lovers In Japan Reign of Love.mp3 -C:/Users/Rik/Music/Artists/Coldplay/Viva la Vida or Death and All His Friends/Coldplay - Viva La Vida.mp3 -C:/Users/Rik/Music/Artists/Counting Crows/Counting Crows - Accidentally In Love.mp3 -C:/Users/Rik/Music/Artists/Counting Crows/Films About Ghosts - The Best Of/Counting Crows - American Girls.mp3 -C:/Users/Rik/Music/Artists/Counting Crows/Films About Ghosts - The Best Of/Counting Crows - Angels of the Silences.mp3 -C:/Users/Rik/Music/Artists/Counting Crows/Films About Ghosts - The Best Of/Counting Crows - Big Yellow Taxi.mp3 -C:/Users/Rik/Music/Artists/Counting Crows/Films About Ghosts - The Best Of/Counting Crows - Einstein On the Beach (For An Eggman).mp3 -C:/Users/Rik/Music/Artists/Counting Crows/Films About Ghosts - The Best Of/Counting Crows - Friend of the Devil.mp3 -C:/Users/Rik/Music/Artists/Counting Crows/Films About Ghosts - The Best Of/Counting Crows - Hanginaround.mp3 -C:/Users/Rik/Music/Artists/Counting Crows/Films About Ghosts - The Best Of/Counting Crows - Mr. Jones.mp3 -C:/Users/Rik/Music/Artists/Counting Crows/Films About Ghosts - The Best Of/Counting Crows - Mrs. Potter's Lullaby.mp3 -C:/Users/Rik/Music/Artists/Counting Crows/Films About Ghosts - The Best Of/Counting Crows - Omaha.mp3 -C:/Users/Rik/Music/Artists/Counting Crows/Films About Ghosts - The Best Of/Counting Crows - Rain King.mp3 -C:/Users/Rik/Music/Artists/Counting Crows/Films About Ghosts - The Best Of/Counting Crows - Recovering the Satellites.mp3 -C:/Users/Rik/Music/Artists/Counting Crows/Films About Ghosts - The Best Of/Counting Crows - She Don't Want Nobody Near.mp3 -C:/Users/Rik/Music/Artists/Destine/Lightspeed/Destine - Am I So Blind.mp3 -C:/Users/Rik/Music/Artists/Destine/Lightspeed/Destine - Burn.mp3 -C:/Users/Rik/Music/Artists/Destine/Lightspeed/Destine - California Summer.mp3 -C:/Users/Rik/Music/Artists/Destine/Lightspeed/Destine - Everything In Me.mp3 -C:/Users/Rik/Music/Artists/Destine/Lightspeed/Destine - Forget About Me.mp3 -C:/Users/Rik/Music/Artists/Destine/Lightspeed/Destine - In the End.mp3 -C:/Users/Rik/Music/Artists/Destine/Lightspeed/Destine - In Your Arms.mp3 -C:/Users/Rik/Music/Artists/Destine/Lightspeed/Destine - Sinking Sand.mp3 -C:/Users/Rik/Music/Artists/Destine/Lightspeed/Destine - Spiders.mp3 -C:/Users/Rik/Music/Artists/Destine/Lightspeed/Destine - Stars.mp3 -C:/Users/Rik/Music/Artists/Destine/Lightspeed/Destine - Wake Me.mp3 -C:/Users/Rik/Music/Artists/Destine/Lightspeed/Destine - Where Are You Now.mp3 -C:/Users/Rik/Music/Artists/Di-Rect/Di-Rect - Hungry For Love.mp3 -C:/Users/Rik/Music/Artists/Di-Rect/Di-Rect - She.mp3 -C:/Users/Rik/Music/Artists/Di-Rect/Di-Rect/Di-Rect - A Good Thing.mp3 -C:/Users/Rik/Music/Artists/Di-Rect/Di-Rect/Di-Rect - A Whole New Era.mp3 -C:/Users/Rik/Music/Artists/Di-Rect/Di-Rect/Di-Rect - Break Us In Two.mp3 -C:/Users/Rik/Music/Artists/Di-Rect/Di-Rect/Di-Rect - Bring Down Tomorrow.mp3 -C:/Users/Rik/Music/Artists/Di-Rect/Di-Rect/Di-Rect - Don't Look Back.mp3 -C:/Users/Rik/Music/Artists/Di-Rect/Di-Rect/Di-Rect - I Juct Can't Stand.mp3 -C:/Users/Rik/Music/Artists/Di-Rect/Di-Rect/Di-Rect - It Feels.mp3 -C:/Users/Rik/Music/Artists/Di-Rect/Di-Rect/Di-Rect - Johny.mp3 -C:/Users/Rik/Music/Artists/Di-Rect/Di-Rect/Di-Rect - Lucky.mp3 -C:/Users/Rik/Music/Artists/Di-Rect/Di-Rect/Di-Rect - One Step Closer.mp3 -C:/Users/Rik/Music/Artists/Di-Rect/Di-Rect/Di-Rect - Over and Over.mp3 -C:/Users/Rik/Music/Artists/Di-Rect/Di-Rect/Di-Rect - Someday.mp3 -C:/Users/Rik/Music/Artists/Dropout Year/Best Friends For Never/Dropout Year - A Coming of Age Story.mp3 -C:/Users/Rik/Music/Artists/Dropout Year/Best Friends For Never/Dropout Year - As You Wish.mp3 -C:/Users/Rik/Music/Artists/Dropout Year/Best Friends For Never/Dropout Year - Best Friends For Never.mp3 -C:/Users/Rik/Music/Artists/Dropout Year/Best Friends For Never/Dropout Year - Biggest Fan.mp3 -C:/Users/Rik/Music/Artists/Dropout Year/Best Friends For Never/Dropout Year - Confetti.mp3 -C:/Users/Rik/Music/Artists/Dropout Year/Best Friends For Never/Dropout Year - From Across the Room.mp3 -C:/Users/Rik/Music/Artists/Dropout Year/Best Friends For Never/Dropout Year - It Wasn't Over, It Still Isn't Over.mp3 -C:/Users/Rik/Music/Artists/Fall Out Boy/Folie A Deux/Fall Out Boy - (Coffee's For Closers).mp3 -C:/Users/Rik/Music/Artists/Fall Out Boy/Folie A Deux/Fall Out Boy - 20 Dollar Nose Bleed.mp3 -C:/Users/Rik/Music/Artists/Fall Out Boy/Folie A Deux/Fall Out Boy - 27.mp3 -C:/Users/Rik/Music/Artists/Fall Out Boy/Folie A Deux/Fall Out Boy - America's Suitehearts.mp3 -C:/Users/Rik/Music/Artists/Fall Out Boy/Folie A Deux/Fall Out Boy - Disloyal Order of Water Buffaloes.mp3 -C:/Users/Rik/Music/Artists/Fall Out Boy/Folie A Deux/Fall Out Boy - Headfirst Slide Into Coopestown On a Bad Bet.mp3 -C:/Users/Rik/Music/Artists/Fall Out Boy/Folie A Deux/Fall Out Boy - I Don't Care.mp3 -C:/Users/Rik/Music/Artists/Fall Out Boy/Folie A Deux/Fall Out Boy - She's My Winona.mp3 -C:/Users/Rik/Music/Artists/Fall Out Boy/Folie A Deux/Fall Out Boy - Tiffany Blews.mp3 -C:/Users/Rik/Music/Artists/Fall Out Boy/Folie A Deux/Fall Out Boy - West Coast Smoker.mp3 -C:/Users/Rik/Music/Artists/Fall Out Boy/Folie A Deux/Fall Out Boy - What a Catch, Donnie.mp3 -C:/Users/Rik/Music/Artists/Foo Fighters/Greatest Hits/Foo Fighters - All My Life.mp3 -C:/Users/Rik/Music/Artists/Foo Fighters/Greatest Hits/Foo Fighters - Best of You.mp3 -C:/Users/Rik/Music/Artists/Foo Fighters/Greatest Hits/Foo Fighters - Big Me.mp3 -C:/Users/Rik/Music/Artists/Foo Fighters/Greatest Hits/Foo Fighters - Breakout.mp3 -C:/Users/Rik/Music/Artists/Foo Fighters/Greatest Hits/Foo Fighters - Everlong.mp3 -C:/Users/Rik/Music/Artists/Foo Fighters/Greatest Hits/Foo Fighters - Learn to Fly.mp3 -C:/Users/Rik/Music/Artists/Foo Fighters/Greatest Hits/Foo Fighters - Long Road to Ruin.mp3 -C:/Users/Rik/Music/Artists/Foo Fighters/Greatest Hits/Foo Fighters - Monkey Wrench.mp3 -C:/Users/Rik/Music/Artists/Foo Fighters/Greatest Hits/Foo Fighters - My Hero.mp3 -C:/Users/Rik/Music/Artists/Foo Fighters/Greatest Hits/Foo Fighters - The Pretender.mp3 -C:/Users/Rik/Music/Artists/Foo Fighters/Greatest Hits/Foo Fighters - This Is a Call.mp3 -C:/Users/Rik/Music/Artists/Foo Fighters/Greatest Hits/Foo Fighters - Times Like These.mp3 -C:/Users/Rik/Music/Artists/Foo Fighters/Greatest Hits/Foo Fighters - Wheels.mp3 -C:/Users/Rik/Music/Artists/Foo Fighters/Greatest Hits/Foo Fighters - Word Forward.mp3 -C:/Users/Rik/Music/Artists/Foo Fighters/Wasting Light/Foo Fighters - A Matter of Time.mp3 -C:/Users/Rik/Music/Artists/Foo Fighters/Wasting Light/Foo Fighters - Arlandria.mp3 -C:/Users/Rik/Music/Artists/Foo Fighters/Wasting Light/Foo Fighters - Back & Forth.mp3 -C:/Users/Rik/Music/Artists/Foo Fighters/Wasting Light/Foo Fighters - Bridge Burning.mp3 -C:/Users/Rik/Music/Artists/Foo Fighters/Wasting Light/Foo Fighters - Dear Rosemary.mp3 -C:/Users/Rik/Music/Artists/Foo Fighters/Wasting Light/Foo Fighters - Miss the Misery.mp3 -C:/Users/Rik/Music/Artists/Foo Fighters/Wasting Light/Foo Fighters - Rope.mp3 -C:/Users/Rik/Music/Artists/Foo Fighters/Wasting Light/Foo Fighters - These Days.mp3 -C:/Users/Rik/Music/Artists/Foo Fighters/Wasting Light/Foo Fighters - Walk.mp3 -C:/Users/Rik/Music/Artists/Go Back To The Zoo/Benny Blisto/Go Back to the Zoo - Beam Me Up.mp3 -C:/Users/Rik/Music/Artists/Go Back To The Zoo/Benny Blisto/Go Back to the Zoo - Electric.mp3 -C:/Users/Rik/Music/Artists/Go Back To The Zoo/Benny Blisto/Go Back to the Zoo - Fuck You.mp3 -C:/Users/Rik/Music/Artists/Go Back To The Zoo/Benny Blisto/Go Back to the Zoo - Hey Dj.mp3 -C:/Users/Rik/Music/Artists/Go Back To The Zoo/Benny Blisto/Go Back to the Zoo - I Lov It.mp3 -C:/Users/Rik/Music/Artists/Go Back To The Zoo/Benny Blisto/Go Back to the Zoo - I'm the Night (See You Later).mp3 -C:/Users/Rik/Music/Artists/Go Back To The Zoo/Benny Blisto/Go Back to the Zoo - Nicer.mp3 -C:/Users/Rik/Music/Artists/Go Back To The Zoo/Benny Blisto/Go Back to the Zoo - Oh No (We Stayed).mp3 -C:/Users/Rik/Music/Artists/Go Back To The Zoo/Benny Blisto/Go Back to the Zoo - Sweet World.mp3 -C:/Users/Rik/Music/Artists/Good Charlotte/Cardiology/Good Charlotte - 1979.mp3 -C:/Users/Rik/Music/Artists/Good Charlotte/Cardiology/Good Charlotte - Alive.mp3 -C:/Users/Rik/Music/Artists/Good Charlotte/Cardiology/Good Charlotte - Cardiology.mp3 -C:/Users/Rik/Music/Artists/Good Charlotte/Cardiology/Good Charlotte - Counting the Days.mp3 -C:/Users/Rik/Music/Artists/Good Charlotte/Cardiology/Good Charlotte - Harlow's Song (Can't Dream Without You).mp3 -C:/Users/Rik/Music/Artists/Good Charlotte/Cardiology/Good Charlotte - Interlude (The Fifth Chamber).mp3 -C:/Users/Rik/Music/Artists/Good Charlotte/Cardiology/Good Charlotte - Introduction to Cardiology.mp3 -C:/Users/Rik/Music/Artists/Good Charlotte/Cardiology/Good Charlotte - Last Night.mp3 -C:/Users/Rik/Music/Artists/Good Charlotte/Cardiology/Good Charlotte - Let the Music Play.mp3 -C:/Users/Rik/Music/Artists/Good Charlotte/Cardiology/Good Charlotte - Like It's Her Birthday.mp3 -C:/Users/Rik/Music/Artists/Good Charlotte/Cardiology/Good Charlotte - Right Where I Belong.mp3 -C:/Users/Rik/Music/Artists/Good Charlotte/Cardiology/Good Charlotte - Sex On the Radio.mp3 -C:/Users/Rik/Music/Artists/Good Charlotte/Cardiology/Good Charlotte - Silver Screen Romance.mp3 -C:/Users/Rik/Music/Artists/Good Charlotte/Cardiology/Good Charlotte - Standing Ovation.mp3 -C:/Users/Rik/Music/Artists/Good Charlotte/Cardiology/Good Charlotte - There She Goes.mp3 -C:/Users/Rik/Music/Artists/Green Day/21st Century Breakdown/Green Day - 21 Guns.mp3 -C:/Users/Rik/Music/Artists/Green Day/21st Century Breakdown/Green Day - 21st Century Breakdown.mp3 -C:/Users/Rik/Music/Artists/Green Day/21st Century Breakdown/Green Day - American Eulogy.mp3 -C:/Users/Rik/Music/Artists/Green Day/21st Century Breakdown/Green Day - Before the Lobotomy.mp3 -C:/Users/Rik/Music/Artists/Green Day/21st Century Breakdown/Green Day - Christian's Inferno.mp3 -C:/Users/Rik/Music/Artists/Green Day/21st Century Breakdown/Green Day - East Jesus Nowhere.mp3 -C:/Users/Rik/Music/Artists/Green Day/21st Century Breakdown/Green Day - Horseshoes and Handgrenades.mp3 -C:/Users/Rik/Music/Artists/Green Day/21st Century Breakdown/Green Day - Know Your Enemy.mp3 -C:/Users/Rik/Music/Artists/Green Day/21st Century Breakdown/Green Day - Last Night On Earth.mp3 -C:/Users/Rik/Music/Artists/Green Day/21st Century Breakdown/Green Day - Last of the American Girls.mp3 -C:/Users/Rik/Music/Artists/Green Day/21st Century Breakdown/Green Day - Murder City.mp3 -C:/Users/Rik/Music/Artists/Green Day/21st Century Breakdown/Green Day - Peacemaker.mp3 -C:/Users/Rik/Music/Artists/Green Day/21st Century Breakdown/Green Day - Restless Heart Syndrome.mp3 -C:/Users/Rik/Music/Artists/Green Day/21st Century Breakdown/Green Day - See the Light.mp3 -C:/Users/Rik/Music/Artists/Green Day/21st Century Breakdown/Green Day - The Static Age.mp3 -C:/Users/Rik/Music/Artists/Green Day/21st Century Breakdown/Green Day - Viva La Gloria (Little Girl).mp3 -C:/Users/Rik/Music/Artists/Green Day/American Idiot/Green Day - American Idiot.mp3 -C:/Users/Rik/Music/Artists/Green Day/American Idiot/Green Day - Are We the Waiting.mp3 -C:/Users/Rik/Music/Artists/Green Day/American Idiot/Green Day - Boulevard of Broken Dreams.mp3 -C:/Users/Rik/Music/Artists/Green Day/American Idiot/Green Day - Extraordinary Girl.mp3 -C:/Users/Rik/Music/Artists/Green Day/American Idiot/Green Day - Give Me Novacaine.mp3 -C:/Users/Rik/Music/Artists/Green Day/American Idiot/Green Day - Holiday.mp3 -C:/Users/Rik/Music/Artists/Green Day/American Idiot/Green Day - Homecoming.mp3 -C:/Users/Rik/Music/Artists/Green Day/American Idiot/Green Day - Jesus of Suburbia.mp3 -C:/Users/Rik/Music/Artists/Green Day/American Idiot/Green Day - Letterbomb.mp3 -C:/Users/Rik/Music/Artists/Green Day/American Idiot/Green Day - She's a Rebel.mp3 -C:/Users/Rik/Music/Artists/Green Day/American Idiot/Green Day - St. Jimmy.mp3 -C:/Users/Rik/Music/Artists/Green Day/American Idiot/Green Day - Wake Me Up When September Ends.mp3 -C:/Users/Rik/Music/Artists/Green Day/American Idiot/Green Day - Whatsername.mp3 -C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - All the Time.mp3 -C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - Armatage Shanks.mp3 -C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - Bascet Case.mp3 -C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - Brat.mp3 -C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - Burnout.mp3 -C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - Chump.mp3 -C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - Church On Sunday.mp3 -C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - Coming Clean.mp3 -C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - Desensitized.mp3 -C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - Emenius Sleepus.mp3 -C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - Fashion Victim.mp3 -C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - Geek Stink Breath.mp3 -C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - Good Riddance (Time of Your Life).mp3 -C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - In the End.mp3 -C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - J.A.R. (Jason Andrew Relva).mp3 -C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - Jaded.mp3 -C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - Maria.mp3 -C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - Nice Guys Finish Last.mp3 -C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - Poprocks & Coke.mp3 -C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - Redundant.mp3 -C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - Scumbag.mp3 -C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - She.mp3 -C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - Stuck With Me.mp3 -C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - Suffocate.mp3 -C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - The Grouch.mp3 -C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - The Saints Are Coming.mp3 -C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - Waiting.mp3 -C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - Walking Alone.mp3 -C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - Walking Contradiction.mp3 -C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - Warning.mp3 -C:/Users/Rik/Music/Artists/Green Day/Greatest Hits/Green Day - Welcome to Paradise.mp3 -C:/Users/Rik/Music/Artists/Kaiser Chiefs/Off With Their Heads/Kaiser Chiefs - Addicted to Drugs.mp3 -C:/Users/Rik/Music/Artists/Kaiser Chiefs/Off With Their Heads/Kaiser Chiefs - Always Happens Like That.mp3 -C:/Users/Rik/Music/Artists/Kaiser Chiefs/Off With Their Heads/Kaiser Chiefs - Can't Say What I Mean.mp3 -C:/Users/Rik/Music/Artists/Kaiser Chiefs/Off With Their Heads/Kaiser Chiefs - Good Days Bad Days.mp3 -C:/Users/Rik/Music/Artists/Kaiser Chiefs/Off With Their Heads/Kaiser Chiefs - Half the Truth.mp3 -C:/Users/Rik/Music/Artists/Kaiser Chiefs/Off With Their Heads/Kaiser Chiefs - Like It Too Much.mp3 -C:/Users/Rik/Music/Artists/Kaiser Chiefs/Off With Their Heads/Kaiser Chiefs - Never Miss a Beat.mp3 -C:/Users/Rik/Music/Artists/Kaiser Chiefs/Off With Their Heads/Kaiser Chiefs - Spanish Metal.mp3 -C:/Users/Rik/Music/Artists/Kaiser Chiefs/Off With Their Heads/Kaiser Chiefs - Tomato In the Rain.mp3 -C:/Users/Rik/Music/Artists/Kaiser Chiefs/Off With Their Heads/Kaiser Chiefs - You Want History.mp3 -C:/Users/Rik/Music/Artists/Kaiser Chiefs/Yours Truly, Angry Mob/Kaiser Chiefs - Boxing Champ.mp3 -C:/Users/Rik/Music/Artists/Kaiser Chiefs/Yours Truly, Angry Mob/Kaiser Chiefs - Everything Is Average Nowadays.mp3 -C:/Users/Rik/Music/Artists/Kaiser Chiefs/Yours Truly, Angry Mob/Kaiser Chiefs - Heat Dies Down.mp3 -C:/Users/Rik/Music/Artists/Kaiser Chiefs/Yours Truly, Angry Mob/Kaiser Chiefs - Highroyds.mp3 -C:/Users/Rik/Music/Artists/Kaiser Chiefs/Yours Truly, Angry Mob/Kaiser Chiefs - I Can Do Without You.mp3 -C:/Users/Rik/Music/Artists/Kaiser Chiefs/Yours Truly, Angry Mob/Kaiser Chiefs - Learnt My Lesson Well.mp3 -C:/Users/Rik/Music/Artists/Kaiser Chiefs/Yours Truly, Angry Mob/Kaiser Chiefs - Love's Not a Competition (But I'm Winning).mp3 -C:/Users/Rik/Music/Artists/Kaiser Chiefs/Yours Truly, Angry Mob/Kaiser Chiefs - My Kind of Guy.mp3 -C:/Users/Rik/Music/Artists/Kaiser Chiefs/Yours Truly, Angry Mob/Kaiser Chiefs - Retirement.mp3 -C:/Users/Rik/Music/Artists/Kaiser Chiefs/Yours Truly, Angry Mob/Kaiser Chiefs - Ruby.mp3 -C:/Users/Rik/Music/Artists/Kaiser Chiefs/Yours Truly, Angry Mob/Kaiser Chiefs - Thank You Very Much.mp3 -C:/Users/Rik/Music/Artists/Kaiser Chiefs/Yours Truly, Angry Mob/Kaiser Chiefs - The Angry Mob.mp3 -C:/Users/Rik/Music/Artists/Kaiser Chiefs/Yours Truly, Angry Mob/Kaiser Chiefs - Try Your Best.mp3 -C:/Users/Rik/Music/Artists/Keane/Keane - Everybody's Changing.mp3 -C:/Users/Rik/Music/Artists/Keane/Keane - Is It Any Wonder.mp3 -C:/Users/Rik/Music/Artists/Keane/Keane - Somewhere Only We Know.mp3 -C:/Users/Rik/Music/Artists/Keane/Keane - This Is the Last Time.mp3 -C:/Users/Rik/Music/Artists/Keane/Perfect Symmetry/Keane - Again & Again.mp3 -C:/Users/Rik/Music/Artists/Keane/Perfect Symmetry/Keane - Better Than This.mp3 -C:/Users/Rik/Music/Artists/Keane/Perfect Symmetry/Keane - Black Burning Heart.mp3 -C:/Users/Rik/Music/Artists/Keane/Perfect Symmetry/Keane - Lovers Are Losing.mp3 -C:/Users/Rik/Music/Artists/Keane/Perfect Symmetry/Keane - Perfect Symmetry.mp3 -C:/Users/Rik/Music/Artists/Keane/Perfect Symmetry/Keane - Playing Along.mp3 -C:/Users/Rik/Music/Artists/Keane/Perfect Symmetry/Keane - Pretend That You're Alone.mp3 -C:/Users/Rik/Music/Artists/Keane/Perfect Symmetry/Keane - Spiralling.mp3 -C:/Users/Rik/Music/Artists/Keane/Perfect Symmetry/Keane - You Don't See Me.mp3 -C:/Users/Rik/Music/Artists/Kensington/Borders/Kensington - All That I Know.mp3 -C:/Users/Rik/Music/Artists/Kensington/Borders/Kensington - Franklin Exits.mp3 -C:/Users/Rik/Music/Artists/Kensington/Borders/Kensington - I Was Too Scared.mp3 -C:/Users/Rik/Music/Artists/Kensington/Borders/Kensington - Not As Bright.mp3 -C:/Users/Rik/Music/Artists/Kensington/Borders/Kensington - So Am I.mp3 -C:/Users/Rik/Music/Artists/Kensington/Borders/Kensington - The Heart of It.mp3 -C:/Users/Rik/Music/Artists/Kensington/Borders/Kensington - Thieves and Murderers.mp3 -C:/Users/Rik/Music/Artists/Kensington/Borders/Kensington - Waiting For a Sign.mp3 -C:/Users/Rik/Music/Artists/Kensington/Borders/Kensington - What's Gotten Into Us.mp3 -C:/Users/Rik/Music/Artists/Kensington/Borders/Kensington - When It All Falls Down.mp3 -C:/Users/Rik/Music/Artists/Kensington/Borders/Kensington - Youth.mp3 -C:/Users/Rik/Music/Artists/Kings of Leon/Come Around Sundown/Kings of Leon - Back Down South.mp3 -C:/Users/Rik/Music/Artists/Kings of Leon/Come Around Sundown/Kings of Leon - Beach Side.mp3 -C:/Users/Rik/Music/Artists/Kings of Leon/Come Around Sundown/Kings of Leon - Birthday.mp3 -C:/Users/Rik/Music/Artists/Kings of Leon/Come Around Sundown/Kings of Leon - Mary.mp3 -C:/Users/Rik/Music/Artists/Kings of Leon/Come Around Sundown/Kings of Leon - Mi Amigo.mp3 -C:/Users/Rik/Music/Artists/Kings of Leon/Come Around Sundown/Kings of Leon - No Money.mp3 -C:/Users/Rik/Music/Artists/Kings of Leon/Come Around Sundown/Kings of Leon - Pickup Truck.mp3 -C:/Users/Rik/Music/Artists/Kings of Leon/Come Around Sundown/Kings of Leon - Pony Up.mp3 -C:/Users/Rik/Music/Artists/Kings of Leon/Come Around Sundown/Kings of Leon - Pyro.mp3 -C:/Users/Rik/Music/Artists/Kings of Leon/Come Around Sundown/Kings of Leon - Radioactive.mp3 -C:/Users/Rik/Music/Artists/Kings of Leon/Come Around Sundown/Kings of Leon - The End.mp3 -C:/Users/Rik/Music/Artists/Kings of Leon/Come Around Sundown/Kings of Leon - The Face.mp3 -C:/Users/Rik/Music/Artists/Kings of Leon/Come Around Sundown/Kings of Leon - The Immortals.mp3 -C:/Users/Rik/Music/Artists/Kings of Leon/Only By The Night/Kings of Leon - Be Somebody.mp3 -C:/Users/Rik/Music/Artists/Kings of Leon/Only By The Night/Kings of Leon - Closer.mp3 -C:/Users/Rik/Music/Artists/Kings of Leon/Only By The Night/Kings of Leon - Crawl.mp3 -C:/Users/Rik/Music/Artists/Kings of Leon/Only By The Night/Kings of Leon - I Want You.mp3 -C:/Users/Rik/Music/Artists/Kings of Leon/Only By The Night/Kings of Leon - Manhattan.mp3 -C:/Users/Rik/Music/Artists/Kings of Leon/Only By The Night/Kings of Leon - Notion.mp3 -C:/Users/Rik/Music/Artists/Kings of Leon/Only By The Night/Kings of Leon - Sex On Fire.mp3 -C:/Users/Rik/Music/Artists/Kings of Leon/Only By The Night/Kings of Leon - Use Somebody.mp3 -C:/Users/Rik/Music/Artists/Lifehouse/Smoke & Mirrors/Lifehouse - All In.mp3 -C:/Users/Rik/Music/Artists/Lifehouse/Smoke & Mirrors/Lifehouse - All That I'm Asking For.mp3 -C:/Users/Rik/Music/Artists/Lifehouse/Smoke & Mirrors/Lifehouse - By Your Side.mp3 -C:/Users/Rik/Music/Artists/Lifehouse/Smoke & Mirrors/Lifehouse - Crash and Burn.mp3 -C:/Users/Rik/Music/Artists/Lifehouse/Smoke & Mirrors/Lifehouse - Falling In.mp3 -C:/Users/Rik/Music/Artists/Lifehouse/Smoke & Mirrors/Lifehouse - From Where You Are.mp3 -C:/Users/Rik/Music/Artists/Lifehouse/Smoke & Mirrors/Lifehouse - Had Enough.mp3 -C:/Users/Rik/Music/Artists/Lifehouse/Smoke & Mirrors/Lifehouse - Halfway Gone.mp3 -C:/Users/Rik/Music/Artists/Lifehouse/Smoke & Mirrors/Lifehouse - In Your Skin.mp3 -C:/Users/Rik/Music/Artists/Lifehouse/Smoke & Mirrors/Lifehouse - It Is What It Is.mp3 -C:/Users/Rik/Music/Artists/Lifehouse/Smoke & Mirrors/Lifehouse - Smoke & Mirrors.mp3 -C:/Users/Rik/Music/Artists/Lifehouse/Smoke & Mirrors/Lifehouse - Wrecking Ball.mp3 -C:/Users/Rik/Music/Artists/Lifehouse/Who We Are/Lifehouse - Bridges.mp3 -C:/Users/Rik/Music/Artists/Lifehouse/Who We Are/Lifehouse - Disarray.mp3 -C:/Users/Rik/Music/Artists/Lifehouse/Who We Are/Lifehouse - Easier to Be.mp3 -C:/Users/Rik/Music/Artists/Lifehouse/Who We Are/Lifehouse - First Time.mp3 -C:/Users/Rik/Music/Artists/Lifehouse/Who We Are/Lifehouse - Learn You Inside Out.mp3 -C:/Users/Rik/Music/Artists/Lifehouse/Who We Are/Lifehouse - Make Me Over.mp3 -C:/Users/Rik/Music/Artists/Lifehouse/Who We Are/Lifehouse - Mesmerized.mp3 -C:/Users/Rik/Music/Artists/Lifehouse/Who We Are/Lifehouse - Storm.mp3 -C:/Users/Rik/Music/Artists/Lifehouse/Who We Are/Lifehouse - Whatever It Takes.mp3 -C:/Users/Rik/Music/Artists/Lifehouse/Who We Are/Lifehouse - Who We Are.mp3 -C:/Users/Rik/Music/Artists/Linking Park/Hybrid Theory/Linkin Park - A Place For My Head.mp3 -C:/Users/Rik/Music/Artists/Linking Park/Hybrid Theory/Linkin Park - Crawling.mp3 -C:/Users/Rik/Music/Artists/Linking Park/Hybrid Theory/Linkin Park - Forgotten.mp3 -C:/Users/Rik/Music/Artists/Linking Park/Hybrid Theory/Linkin Park - In the End.mp3 -C:/Users/Rik/Music/Artists/Linking Park/Hybrid Theory/Linkin Park - One Step Closer.mp3 -C:/Users/Rik/Music/Artists/Linking Park/Hybrid Theory/Linkin Park - Papercut.mp3 -C:/Users/Rik/Music/Artists/Linking Park/Hybrid Theory/Linkin Park - Points of Authority.mp3 -C:/Users/Rik/Music/Artists/Linking Park/Hybrid Theory/Linkin Park - Pushing Me Away.mp3 -C:/Users/Rik/Music/Artists/Linking Park/Hybrid Theory/Linkin Park - Runaway.mp3 -C:/Users/Rik/Music/Artists/Linking Park/Hybrid Theory/Linkin Park - With You.mp3 -C:/Users/Rik/Music/Artists/Lostprophets/Liberation Transmission/Lostprophets - 4am Forever.mp3 -C:/Users/Rik/Music/Artists/Lostprophets/Liberation Transmission/Lostprophets - A Town Called Hypocrisy.mp3 -C:/Users/Rik/Music/Artists/Lostprophets/Liberation Transmission/Lostprophets - Always All Ways (Apologies, Glances and Messed Up Chances).mp3 -C:/Users/Rik/Music/Artists/Lostprophets/Liberation Transmission/Lostprophets - Broken Hearts, Torn Up Letters and the Story of a Lonely Girl.mp3 -C:/Users/Rik/Music/Artists/Lostprophets/Liberation Transmission/Lostprophets - Can't Catch Tomorrow (Good Shoes Won't Save You This Time).mp3 -C:/Users/Rik/Music/Artists/Lostprophets/Liberation Transmission/Lostprophets - Can't Stop, Gotta Date With Hate.mp3 -C:/Users/Rik/Music/Artists/Lostprophets/Liberation Transmission/Lostprophets - Everybody's Screaming !!!.mp3 -C:/Users/Rik/Music/Artists/Lostprophets/Liberation Transmission/Lostprophets - Everyday Combat.mp3 -C:/Users/Rik/Music/Artists/Lostprophets/Liberation Transmission/Lostprophets - For All These Times Son, For All These Times.mp3 -C:/Users/Rik/Music/Artists/Lostprophets/Liberation Transmission/Lostprophets - Heaven For the Weather, Hell For the Company.mp3 -C:/Users/Rik/Music/Artists/Lostprophets/Liberation Transmission/Lostprophets - Rooftops (A Liberation Broadcast).mp3 -C:/Users/Rik/Music/Artists/Lostprophets/Liberation Transmission/Lostprophets - The New Transmission.mp3 -C:/Users/Rik/Music/Artists/Matchbook Romance/Voices/Matchbook Romance - Goody, Like Two Shoes.mp3 -C:/Users/Rik/Music/Artists/Matchbook Romance/Voices/Matchbook Romance - Monsters.mp3 -C:/Users/Rik/Music/Artists/Matchbook Romance/Voices/Matchbook Romance - My Mannequin Can Dance.mp3 -C:/Users/Rik/Music/Artists/Matchbook Romance/Voices/Matchbook Romance - Portrait.mp3 -C:/Users/Rik/Music/Artists/Matchbook Romance/Voices/Matchbook Romance - Singing Bridges (We All Fall).mp3 -C:/Users/Rik/Music/Artists/Matchbook Romance/Voices/Matchbook Romance - Surrender.mp3 -C:/Users/Rik/Music/Artists/Matchbook Romance/Voices/Matchbook Romance - What a Sight.mp3 -C:/Users/Rik/Music/Artists/Neon Trees/Habits/Neon Trees - 1983.mp3 -C:/Users/Rik/Music/Artists/Neon Trees/Habits/Neon Trees - Animal.mp3 -C:/Users/Rik/Music/Artists/Neon Trees/Habits/Neon Trees - In the Next Room.mp3 -C:/Users/Rik/Music/Artists/Neon Trees/Habits/Neon Trees - Sins of My Youth.mp3 -C:/Users/Rik/Music/Artists/Neon Trees/Habits/Neon Trees - Your Surrender.mp3 -C:/Users/Rik/Music/Artists/Nickelback/Dark Horse/Nickelback - Gotta Be Somebody.mp3 -C:/Users/Rik/Music/Artists/Nickelback/Dark Horse/Nickelback - I'd Come For You.mp3 -C:/Users/Rik/Music/Artists/Nickelback/Dark Horse/Nickelback - If Today Was Your Last Day.mp3 -C:/Users/Rik/Music/Artists/Nickelback/Dark Horse/Nickelback - Just to Get High.mp3 -C:/Users/Rik/Music/Artists/Nickelback/Dark Horse/Nickelback - Never Gonna Be Alone.mp3 -C:/Users/Rik/Music/Artists/Nickelback/Dark Horse/Nickelback - This Afternoon.mp3 -C:/Users/Rik/Music/Artists/Nickelback/Nickelback - How You Remind Me.mp3 -C:/Users/Rik/Music/Artists/Nickelback/Nickelback - Photograph.mp3 -C:/Users/Rik/Music/Artists/OneRepublic/Waking Up/Onerepublic - All the Right Moves.mp3 -C:/Users/Rik/Music/Artists/OneRepublic/Waking Up/Onerepublic - Fear.mp3 -C:/Users/Rik/Music/Artists/OneRepublic/Waking Up/Onerepublic - Good Life.mp3 -C:/Users/Rik/Music/Artists/OneRepublic/Waking Up/Onerepublic - Secrets.mp3 -C:/Users/Rik/Music/Artists/Plain White T's/All That We Needed/Plain White T's - All That We Needed.mp3 -C:/Users/Rik/Music/Artists/Plain White T's/All That We Needed/Plain White T's - Anything.mp3 -C:/Users/Rik/Music/Artists/Plain White T's/All That We Needed/Plain White T's - Breakdown.mp3 -C:/Users/Rik/Music/Artists/Plain White T's/All That We Needed/Plain White T's - Faster.mp3 -C:/Users/Rik/Music/Artists/Plain White T's/All That We Needed/Plain White T's - Last Call.mp3 -C:/Users/Rik/Music/Artists/Plain White T's/All That We Needed/Plain White T's - Lazy Day Afternoon.mp3 -C:/Users/Rik/Music/Artists/Plain White T's/All That We Needed/Plain White T's - My Only One.mp3 -C:/Users/Rik/Music/Artists/Plain White T's/All That We Needed/Plain White T's - Revenge.mp3 -C:/Users/Rik/Music/Artists/Plain White T's/All That We Needed/Plain White T's - Sad Story.mp3 -C:/Users/Rik/Music/Artists/Plain White T's/All That We Needed/Plain White T's - Sing My Best.mp3 -C:/Users/Rik/Music/Artists/Plain White T's/All That We Needed/Plain White T's - Take Me Away.mp3 -C:/Users/Rik/Music/Artists/Plain White T's/All That We Needed/Plain White T's - What More Do You Want.mp3 -C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Greatest Hits/Red Hot Chili Peppers - Breaking the Girl.mp3 -C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Greatest Hits/Red Hot Chili Peppers - By the Way.mp3 -C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Greatest Hits/Red Hot Chili Peppers - Californication.mp3 -C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Greatest Hits/Red Hot Chili Peppers - Fortune Faded.mp3 -C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Greatest Hits/Red Hot Chili Peppers - Give It Away.mp3 -C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Greatest Hits/Red Hot Chili Peppers - Higher Ground.mp3 -C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Greatest Hits/Red Hot Chili Peppers - My Friends.mp3 -C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Greatest Hits/Red Hot Chili Peppers - Otherside.mp3 -C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Greatest Hits/Red Hot Chili Peppers - Parallel Universe.mp3 -C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Greatest Hits/Red Hot Chili Peppers - Save the Population.mp3 -C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Greatest Hits/Red Hot Chili Peppers - Scar Tissue.mp3 -C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Greatest Hits/Red Hot Chili Peppers - Soul to Squeeze.mp3 -C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Greatest Hits/Red Hot Chili Peppers - Under the Bridge.mp3 -C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Greatest Hits/Red Hot Chili Peppers - Universally Speaking.mp3 -C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Stadium Arcadium/Red Hot Chili Peppers - Animal Bar.mp3 -C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Stadium Arcadium/Red Hot Chili Peppers - Charlie.mp3 -C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Stadium Arcadium/Red Hot Chili Peppers - C'mon Girl.mp3 -C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Stadium Arcadium/Red Hot Chili Peppers - Dani California.mp3 -C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Stadium Arcadium/Red Hot Chili Peppers - Death of a Martian.mp3 -C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Stadium Arcadium/Red Hot Chili Peppers - Desecration Smile.mp3 -C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Stadium Arcadium/Red Hot Chili Peppers - Especially In Michigan.mp3 -C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Stadium Arcadium/Red Hot Chili Peppers - Hard to Concentrate.mp3 -C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Stadium Arcadium/Red Hot Chili Peppers - Hey.mp3 -C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Stadium Arcadium/Red Hot Chili Peppers - If.mp3 -C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Stadium Arcadium/Red Hot Chili Peppers - Make You Feel Better.mp3 -C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Stadium Arcadium/Red Hot Chili Peppers - She Looks to Me.mp3 -C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Stadium Arcadium/Red Hot Chili Peppers - She's Only 18.mp3 -C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Stadium Arcadium/Red Hot Chili Peppers - Slow Cheetah.mp3 -C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Stadium Arcadium/Red Hot Chili Peppers - Snow (Hey Oh).mp3 -C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Stadium Arcadium/Red Hot Chili Peppers - So Much I.mp3 -C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Stadium Arcadium/Red Hot Chili Peppers - Stadium Arcadium.mp3 -C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Stadium Arcadium/Red Hot Chili Peppers - Storm In a Teacup.mp3 -C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Stadium Arcadium/Red Hot Chili Peppers - Strip My Mind.mp3 -C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Stadium Arcadium/Red Hot Chili Peppers - Tell Me Baby.mp3 -C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Stadium Arcadium/Red Hot Chili Peppers - Torture Me.mp3 -C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Stadium Arcadium/Red Hot Chili Peppers - Turn It Again.mp3 -C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Stadium Arcadium/Red Hot Chili Peppers - Warlocks.mp3 -C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Stadium Arcadium/Red Hot Chili Peppers - We Believe.mp3 -C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/Stadium Arcadium/Red Hot Chili Peppers - Wet Sand.mp3 -C:/Users/Rik/Music/Artists/Rooney/Calling The World/Rooney - All In Your Head.mp3 -C:/Users/Rik/Music/Artists/Rooney/Calling The World/Rooney - Are You Afraid.mp3 -C:/Users/Rik/Music/Artists/Rooney/Calling The World/Rooney - Believe In Me.mp3 -C:/Users/Rik/Music/Artists/Rooney/Calling The World/Rooney - Calling the World.mp3 -C:/Users/Rik/Music/Artists/Rooney/Calling The World/Rooney - Don't Come Around Again.mp3 -C:/Users/Rik/Music/Artists/Rooney/Calling The World/Rooney - I Should've Been After You.mp3 -C:/Users/Rik/Music/Artists/Rooney/Calling The World/Rooney - Love Me Or Leave Me.mp3 -C:/Users/Rik/Music/Artists/Rooney/Calling The World/Rooney - Paralyzed.mp3 -C:/Users/Rik/Music/Artists/Rooney/Calling The World/Rooney - What For.mp3 -C:/Users/Rik/Music/Artists/Savage Garden/Savage Garden/Savage Garden - A Thousand Words.mp3 -C:/Users/Rik/Music/Artists/Savage Garden/Savage Garden/Savage Garden - Break Me Shake Me.mp3 -C:/Users/Rik/Music/Artists/Savage Garden/Savage Garden/Savage Garden - Carry On Dancing.mp3 -C:/Users/Rik/Music/Artists/Savage Garden/Savage Garden/Savage Garden - I Want You.mp3 -C:/Users/Rik/Music/Artists/Savage Garden/Savage Garden/Savage Garden - To the Moon and Back.mp3 -C:/Users/Rik/Music/Artists/Savage Garden/Savage Garden/Savage Garden - Truly Madly Deeply.mp3 -C:/Users/Rik/Music/Artists/Savage Garden/Savage Garden/Savage Garden - Violet.mp3 -C:/Users/Rik/Music/Artists/Simple Plan/Simple Plan/Simple Plan - Generation.mp3 -C:/Users/Rik/Music/Artists/Simple Plan/Simple Plan/Simple Plan - I Can Wait Forever.mp3 -C:/Users/Rik/Music/Artists/Simple Plan/Simple Plan/Simple Plan - No Love.mp3 -C:/Users/Rik/Music/Artists/Simple Plan/Simple Plan/Simple Plan - Running Out of Time.mp3 -C:/Users/Rik/Music/Artists/Simple Plan/Simple Plan/Simple Plan - Save You.mp3 -C:/Users/Rik/Music/Artists/Simple Plan/Simple Plan/Simple Plan - Take My Hand.mp3 -C:/Users/Rik/Music/Artists/Simple Plan/Simple Plan/Simple Plan - The End.mp3 -C:/Users/Rik/Music/Artists/Simple Plan/Simple Plan/Simple Plan - Time to Say Goodbye.mp3 -C:/Users/Rik/Music/Artists/Simple Plan/Simple Plan/Simple Plan - What If.mp3 -C:/Users/Rik/Music/Artists/Simple Plan/Simple Plan/Simple Plan - When I'm Gone (Acoustic).mp3 -C:/Users/Rik/Music/Artists/Simple Plan/Simple Plan/Simple Plan - When I'm Gone.mp3 -C:/Users/Rik/Music/Artists/Simple Plan/Simple Plan/Simple Plan - Your Love Is a Lie.mp3 -C:/Users/Rik/Music/Artists/Snow Patrol/A Hundred Million Suns/Snow Patrol - Crack the Shutters.mp3 -C:/Users/Rik/Music/Artists/Snow Patrol/A Hundred Million Suns/Snow Patrol - Disaster Button.mp3 -C:/Users/Rik/Music/Artists/Snow Patrol/A Hundred Million Suns/Snow Patrol - Engines.mp3 -C:/Users/Rik/Music/Artists/Snow Patrol/A Hundred Million Suns/Snow Patrol - If There's a Rocket Tie Me to It.mp3 -C:/Users/Rik/Music/Artists/Snow Patrol/A Hundred Million Suns/Snow Patrol - Please Just Take These Photos From My Hands.mp3 -C:/Users/Rik/Music/Artists/Snow Patrol/A Hundred Million Suns/Snow Patrol - Take Back the City.mp3 -C:/Users/Rik/Music/Artists/Snow Patrol/Eyes Open/Snow Patrol - Chasing Cars.mp3 -C:/Users/Rik/Music/Artists/Snow Patrol/Eyes Open/Snow Patrol - Hands Open .mp3 -C:/Users/Rik/Music/Artists/Snow Patrol/Eyes Open/Snow Patrol - Headlights On Dark Roads.mp3 -C:/Users/Rik/Music/Artists/Snow Patrol/Eyes Open/Snow Patrol - In My Arms.mp3 -C:/Users/Rik/Music/Artists/Snow Patrol/Eyes Open/Snow Patrol - It's Beginning to Get to Me.mp3 -C:/Users/Rik/Music/Artists/Snow Patrol/Eyes Open/Snow Patrol - Open Your Eyes .mp3 -C:/Users/Rik/Music/Artists/Snow Patrol/Eyes Open/Snow Patrol - Shut Your Eyes .mp3 -C:/Users/Rik/Music/Artists/Snow Patrol/Eyes Open/Snow Patrol - Warmer Climate.mp3 -C:/Users/Rik/Music/Artists/Snow Patrol/Eyes Open/Snow Patrol - You're All I Have.mp3 -C:/Users/Rik/Music/Artists/Snow Patrol/Snow Patrol - Chocolate.mp3 -C:/Users/Rik/Music/Artists/Snow Patrol/Snow Patrol - Just Say Yes.mp3 -C:/Users/Rik/Music/Artists/Snow Patrol/Snow Patrol - Run.mp3 -C:/Users/Rik/Music/Artists/So They Say/Antidote for Irony/So They Say - Anxiety Is Setting In.mp3 -C:/Users/Rik/Music/Artists/So They Say/Antidote for Irony/So They Say - Good-Bye.mp3 -C:/Users/Rik/Music/Artists/So They Say/Antidote for Irony/So They Say - In Essence We Are Falling.mp3 -C:/Users/Rik/Music/Artists/So They Say/Antidote for Irony/So They Say - In Loving Memory Of....mp3 -C:/Users/Rik/Music/Artists/So They Say/Antidote for Irony/So They Say - Over Exposed Photo.mp3 -C:/Users/Rik/Music/Artists/So They Say/Antidote for Irony/So They Say - Talking In Circles.mp3 -C:/Users/Rik/Music/Artists/So They Say/Antidote for Irony/So They Say - The Burden.mp3 -C:/Users/Rik/Music/Artists/So They Say/Antidote for Irony/So They Say - You Asked, Where Are You Now.mp3 -C:/Users/Rik/Music/Artists/Stone Sour/Audio Secrecy/Stone Sour - Anna.mp3 -C:/Users/Rik/Music/Artists/Stone Sour/Audio Secrecy/Stone Sour - Dying.mp3 -C:/Users/Rik/Music/Artists/Stone Sour/Audio Secrecy/Stone Sour - Hate Not Gone.mp3 -C:/Users/Rik/Music/Artists/Stone Sour/Audio Secrecy/Stone Sour - Hesitate.mp3 -C:/Users/Rik/Music/Artists/Stone Sour/Audio Secrecy/Stone Sour - Home Again.mp3 -C:/Users/Rik/Music/Artists/Stone Sour/Audio Secrecy/Stone Sour - Imperfect.mp3 -C:/Users/Rik/Music/Artists/Stone Sour/Audio Secrecy/Stone Sour - Let's Be Honest.mp3 -C:/Users/Rik/Music/Artists/Stone Sour/Audio Secrecy/Stone Sour - Miracles.mp3 -C:/Users/Rik/Music/Artists/Stone Sour/Audio Secrecy/Stone Sour - Mission Statement.mp3 -C:/Users/Rik/Music/Artists/Stone Sour/Audio Secrecy/Stone Sour - Nylon 66.mp3 -C:/Users/Rik/Music/Artists/Stone Sour/Audio Secrecy/Stone Sour - Pieces.mp3 -C:/Users/Rik/Music/Artists/Stone Sour/Audio Secrecy/Stone Sour - Say You'll Haunt Me.mp3 -C:/Users/Rik/Music/Artists/Stone Sour/Audio Secrecy/Stone Sour - The Bitter End.mp3 -C:/Users/Rik/Music/Artists/Stone Sour/Audio Secrecy/Stone Sour - Threadbare.mp3 -C:/Users/Rik/Music/Artists/Stone Sour/Audio Secrecy/Stone Sour - Unfinished.mp3 -C:/Users/Rik/Music/Artists/Sum 41/Screaming Bloody Murder/Sum 41 - Baby You Don't Wanna Know.mp3 -C:/Users/Rik/Music/Artists/Sum 41/Screaming Bloody Murder/Sum 41 - Back Where I Belong.mp3 -C:/Users/Rik/Music/Artists/Sum 41/Screaming Bloody Murder/Sum 41 - Blood In My Eyes.mp3 -C:/Users/Rik/Music/Artists/Sum 41/Screaming Bloody Murder/Sum 41 - Crash.mp3 -C:/Users/Rik/Music/Artists/Sum 41/Screaming Bloody Murder/Sum 41 - Exit Song.mp3 -C:/Users/Rik/Music/Artists/Sum 41/Screaming Bloody Murder/Sum 41 - Happiness Machine.mp3 -C:/Users/Rik/Music/Artists/Sum 41/Screaming Bloody Murder/Sum 41 - Holy Image of Lies.mp3 -C:/Users/Rik/Music/Artists/Sum 41/Screaming Bloody Murder/Sum 41 - Jessica Kill.mp3 -C:/Users/Rik/Music/Artists/Sum 41/Screaming Bloody Murder/Sum 41 - Reason to Believe (Acoustic).mp3 -C:/Users/Rik/Music/Artists/Sum 41/Screaming Bloody Murder/Sum 41 - Reason to Believe.mp3 -C:/Users/Rik/Music/Artists/Sum 41/Screaming Bloody Murder/Sum 41 - Screaming Bloody Murder.mp3 -C:/Users/Rik/Music/Artists/Sum 41/Screaming Bloody Murder/Sum 41 - Sick of Everyone.mp3 -C:/Users/Rik/Music/Artists/Sum 41/Screaming Bloody Murder/Sum 41 - Skumfuk.mp3 -C:/Users/Rik/Music/Artists/Sum 41/Screaming Bloody Murder/Sum 41 - Time For You to Go.mp3 -C:/Users/Rik/Music/Artists/Sum 41/Screaming Bloody Murder/Sum 41 - What Am I to Say.mp3 -C:/Users/Rik/Music/Artists/Sum 41/Underclass Hero/Sum 41 - Best of Me.mp3 -C:/Users/Rik/Music/Artists/Sum 41/Underclass Hero/Sum 41 - Confusion and Frustration In Modern Times.mp3 -C:/Users/Rik/Music/Artists/Sum 41/Underclass Hero/Sum 41 - Count Your Last Blessings.mp3 -C:/Users/Rik/Music/Artists/Sum 41/Underclass Hero/Sum 41 - Dear Father.mp3 -C:/Users/Rik/Music/Artists/Sum 41/Underclass Hero/Sum 41 - King of Contradiction.mp3 -C:/Users/Rik/Music/Artists/Sum 41/Underclass Hero/Sum 41 - March of the Dogs.mp3 -C:/Users/Rik/Music/Artists/Sum 41/Underclass Hero/Sum 41 - Pull the Curtain.mp3 -C:/Users/Rik/Music/Artists/Sum 41/Underclass Hero/Sum 41 - So Long Goodbye.mp3 -C:/Users/Rik/Music/Artists/Sum 41/Underclass Hero/Sum 41 - Speak of the Devil.mp3 -C:/Users/Rik/Music/Artists/Sum 41/Underclass Hero/Sum 41 - The Jester.mp3 -C:/Users/Rik/Music/Artists/Sum 41/Underclass Hero/Sum 41 - Underclass Hero.mp3 -C:/Users/Rik/Music/Artists/Sum 41/Underclass Hero/Sum 41 - Walking Disaster.mp3 -C:/Users/Rik/Music/Artists/Sum 41/Underclass Hero/Sum 41 - With Me.mp3 -C:/Users/Rik/Music/Artists/The Academy Is/Almost Here/The Academy Is... - Almost Here.mp3 -C:/Users/Rik/Music/Artists/The Academy Is/Almost Here/The Academy Is... - Attention.mp3 -C:/Users/Rik/Music/Artists/The Academy Is/Almost Here/The Academy Is... - Black Mamba.mp3 -C:/Users/Rik/Music/Artists/The Academy Is/Almost Here/The Academy Is... - Checkmarks.mp3 -C:/Users/Rik/Music/Artists/The Academy Is/Almost Here/The Academy Is... - Classifieds.mp3 -C:/Users/Rik/Music/Artists/The Academy Is/Almost Here/The Academy Is... - Down and Out.mp3 -C:/Users/Rik/Music/Artists/The Academy Is/Almost Here/The Academy Is... - Season.mp3 -C:/Users/Rik/Music/Artists/The Academy Is/Almost Here/The Academy Is... - Skeptics and True Believers.mp3 -C:/Users/Rik/Music/Artists/The Academy Is/Almost Here/The Academy Is... - The Phrase That Pays.mp3 -C:/Users/Rik/Music/Artists/The All-American Rejects/Move Along/The All-American Rejects - 11.11 P.M.mp3 -C:/Users/Rik/Music/Artists/The All-American Rejects/Move Along/The All-American Rejects - Change Your Mind.mp3 -C:/Users/Rik/Music/Artists/The All-American Rejects/Move Along/The All-American Rejects - Dance Inside.mp3 -C:/Users/Rik/Music/Artists/The All-American Rejects/Move Along/The All-American Rejects - Dirty Little Secret.mp3 -C:/Users/Rik/Music/Artists/The All-American Rejects/Move Along/The All-American Rejects - I'm Waiting.mp3 -C:/Users/Rik/Music/Artists/The All-American Rejects/Move Along/The All-American Rejects - Move Along.mp3 -C:/Users/Rik/Music/Artists/The All-American Rejects/Move Along/The All-American Rejects - Stab My Back.mp3 -C:/Users/Rik/Music/Artists/The All-American Rejects/Move Along/The All-American Rejects - Top of the World.mp3 -C:/Users/Rik/Music/Artists/The All-American Rejects/When The World Comes Down/The All-American Rejects - Another Heart Calls.mp3 -C:/Users/Rik/Music/Artists/The All-American Rejects/When The World Comes Down/The All-American Rejects - Back to Me.mp3 -C:/Users/Rik/Music/Artists/The All-American Rejects/When The World Comes Down/The All-American Rejects - Believe.mp3 -C:/Users/Rik/Music/Artists/The All-American Rejects/When The World Comes Down/The All-American Rejects - Breakin'.mp3 -C:/Users/Rik/Music/Artists/The All-American Rejects/When The World Comes Down/The All-American Rejects - Damn Girl.mp3 -C:/Users/Rik/Music/Artists/The All-American Rejects/When The World Comes Down/The All-American Rejects - Fallin' Apart.mp3 -C:/Users/Rik/Music/Artists/The All-American Rejects/When The World Comes Down/The All-American Rejects - Gives You Hell.mp3 -C:/Users/Rik/Music/Artists/The All-American Rejects/When The World Comes Down/The All-American Rejects - I Wanna.mp3 -C:/Users/Rik/Music/Artists/The All-American Rejects/When The World Comes Down/The All-American Rejects - Mona Lisa.mp3 -C:/Users/Rik/Music/Artists/The All-American Rejects/When The World Comes Down/The All-American Rejects - Real World.mp3 -C:/Users/Rik/Music/Artists/The All-American Rejects/When The World Comes Down/The All-American Rejects - Sunshine.mp3 -C:/Users/Rik/Music/Artists/The All-American Rejects/When The World Comes Down/The All-American Rejects - The Wind Blows.mp3 -C:/Users/Rik/Music/Artists/The Fray/How To Save A Life/The Fray - All At Once.mp3 -C:/Users/Rik/Music/Artists/The Fray/How To Save A Life/The Fray - Dead Wrong.mp3 -C:/Users/Rik/Music/Artists/The Fray/How To Save A Life/The Fray - Fall Away.mp3 -C:/Users/Rik/Music/Artists/The Fray/How To Save A Life/The Fray - Heaven Forbid.mp3 -C:/Users/Rik/Music/Artists/The Fray/How To Save A Life/The Fray - How to Save a Life.mp3 -C:/Users/Rik/Music/Artists/The Fray/How To Save A Life/The Fray - Hundred.mp3 -C:/Users/Rik/Music/Artists/The Fray/How To Save A Life/The Fray - Little House.mp3 -C:/Users/Rik/Music/Artists/The Fray/How To Save A Life/The Fray - Look After You.mp3 -C:/Users/Rik/Music/Artists/The Fray/How To Save A Life/The Fray - Over My Head (Cable Car).mp3 -C:/Users/Rik/Music/Artists/The Fray/How To Save A Life/The Fray - She Is.mp3 -C:/Users/Rik/Music/Artists/The Fray/How To Save A Life/The Fray - Trust Me.mp3 -C:/Users/Rik/Music/Artists/The Hoosiers/The Illusion Of Safety/The Hoosiers - Bumpy Ride.mp3 -C:/Users/Rik/Music/Artists/The Hoosiers/The Illusion Of Safety/The Hoosiers - Choices.mp3 -C:/Users/Rik/Music/Artists/The Hoosiers/The Illusion Of Safety/The Hoosiers - Giddy Up.mp3 -C:/Users/Rik/Music/Artists/The Hoosiers/The Illusion Of Safety/The Hoosiers - Glorious.mp3 -C:/Users/Rik/Music/Artists/The Hoosiers/The Illusion Of Safety/The Hoosiers - Live By the Ocean.mp3 -C:/Users/Rik/Music/Artists/The Hoosiers/The Illusion Of Safety/The Hoosiers - Made to Measure.mp3 -C:/Users/Rik/Music/Artists/The Hoosiers/The Illusion Of Safety/The Hoosiers - Sarajevo.mp3 -C:/Users/Rik/Music/Artists/The Hoosiers/The Illusion Of Safety/The Hoosiers - Unlikely Hero.mp3 -C:/Users/Rik/Music/Artists/The Hoosiers/The Illusion Of Safety/The Hoosiers - Who Said Anything (About Falling In Love).mp3 -C:/Users/Rik/Music/Artists/The Killers/Day & Age/The Killers - A Crippling Blow.mp3 -C:/Users/Rik/Music/Artists/The Killers/Day & Age/The Killers - A Dustland Fairytale.mp3 -C:/Users/Rik/Music/Artists/The Killers/Day & Age/The Killers - Human.mp3 -C:/Users/Rik/Music/Artists/The Killers/Day & Age/The Killers - I Can't Stay.mp3 -C:/Users/Rik/Music/Artists/The Killers/Day & Age/The Killers - Joy Ride.mp3 -C:/Users/Rik/Music/Artists/The Killers/Day & Age/The Killers - Losing Touch.mp3 -C:/Users/Rik/Music/Artists/The Killers/Day & Age/The Killers - Neon Tiger.mp3 -C:/Users/Rik/Music/Artists/The Killers/Day & Age/The Killers - Spaceman.mp3 -C:/Users/Rik/Music/Artists/The Killers/Day & Age/The Killers - The World We Live In.mp3 -C:/Users/Rik/Music/Artists/The Killers/Day & Age/The Killers - This Is Your Life.mp3 -C:/Users/Rik/Music/Artists/The Killers/Hot Fuss/The Killers - All These Things That I've Done.mp3 -C:/Users/Rik/Music/Artists/The Killers/Hot Fuss/The Killers - Andy, You're a Star.mp3 -C:/Users/Rik/Music/Artists/The Killers/Hot Fuss/The Killers - Believe Me Natalie.mp3 -C:/Users/Rik/Music/Artists/The Killers/Hot Fuss/The Killers - Everything Will Be Alright.mp3 -C:/Users/Rik/Music/Artists/The Killers/Hot Fuss/The Killers - Glamorous Indie Rock & Roll.mp3 -C:/Users/Rik/Music/Artists/The Killers/Hot Fuss/The Killers - Indie Rock & Roll.mp3 -C:/Users/Rik/Music/Artists/The Killers/Hot Fuss/The Killers - Jenny Was a Friend of Mine.mp3 -C:/Users/Rik/Music/Artists/The Killers/Hot Fuss/The Killers - Midnight Show.mp3 -C:/Users/Rik/Music/Artists/The Killers/Hot Fuss/The Killers - Mr Brightside.mp3 -C:/Users/Rik/Music/Artists/The Killers/Hot Fuss/The Killers - Mr. Brightside.mp3 -C:/Users/Rik/Music/Artists/The Killers/Hot Fuss/The Killers - On Top.mp3 -C:/Users/Rik/Music/Artists/The Killers/Hot Fuss/The Killers - Smile Like You Mean It.mp3 -C:/Users/Rik/Music/Artists/The Killers/Hot Fuss/The Killers - The Ballad of Michael Valentine (Bonus).mp3 -C:/Users/Rik/Music/Artists/The Killers/Hot Fuss/The Killers - Under the Gun (Bonus).mp3 -C:/Users/Rik/Music/Artists/The Killers/Hot Fuss/The Killers - Who Let You Go (Bonus).mp3 -C:/Users/Rik/Music/Artists/The Offspring/Greatest Hits/The Offspring - (Can't Get My) Head Around You.mp3 -C:/Users/Rik/Music/Artists/The Offspring/Greatest Hits/The Offspring - All I Want.mp3 -C:/Users/Rik/Music/Artists/The Offspring/Greatest Hits/The Offspring - Can't Repeat.mp3 -C:/Users/Rik/Music/Artists/The Offspring/Greatest Hits/The Offspring - Come Out and Play (Keep 'em Separated).mp3 -C:/Users/Rik/Music/Artists/The Offspring/Greatest Hits/The Offspring - Defy You.mp3 -C:/Users/Rik/Music/Artists/The Offspring/Greatest Hits/The Offspring - Gone Away.mp3 -C:/Users/Rik/Music/Artists/The Offspring/Greatest Hits/The Offspring - Gotta Get Away.mp3 -C:/Users/Rik/Music/Artists/The Offspring/Greatest Hits/The Offspring - Hit That.mp3 -C:/Users/Rik/Music/Artists/The Offspring/Greatest Hits/The Offspring - Original Prankster.mp3 -C:/Users/Rik/Music/Artists/The Offspring/Greatest Hits/The Offspring - Pretty Fly (For a White Guy).mp3 -C:/Users/Rik/Music/Artists/The Offspring/Greatest Hits/The Offspring - Self Esteem.mp3 -C:/Users/Rik/Music/Artists/The Offspring/Greatest Hits/The Offspring - The Kids Aren't Alright.mp3 -C:/Users/Rik/Music/Artists/The Offspring/Greatest Hits/The Offspring - Want You Bad.mp3 -C:/Users/Rik/Music/Artists/The Offspring/Greatest Hits/The Offspring - Why Don't You Get a Job.mp3 -C:/Users/Rik/Music/Artists/The Script/Science & Faith/The Script - Dead Man Walking.mp3 -C:/Users/Rik/Music/Artists/The Script/Science & Faith/The Script - Exit Wounds.mp3 -C:/Users/Rik/Music/Artists/The Script/Science & Faith/The Script - For the First Time.mp3 -C:/Users/Rik/Music/Artists/The Script/Science & Faith/The Script - If You Ever Come Back.mp3 -C:/Users/Rik/Music/Artists/The Script/Science & Faith/The Script - Long Gone and Moved On.mp3 -C:/Users/Rik/Music/Artists/The Script/Science & Faith/The Script - Nothing.mp3 -C:/Users/Rik/Music/Artists/The Script/Science & Faith/The Script - Science & Faith.mp3 -C:/Users/Rik/Music/Artists/The Script/Science & Faith/The Script - This = Love.mp3 -C:/Users/Rik/Music/Artists/The Script/Science & Faith/The Script - You Won't Feel a Thing.mp3 -C:/Users/Rik/Music/Artists/The Script/The Script/The Script - Before the Worst.mp3 -C:/Users/Rik/Music/Artists/The Script/The Script/The Script - Breakeven.mp3 -C:/Users/Rik/Music/Artists/The Script/The Script/The Script - Fall For Anything.mp3 -C:/Users/Rik/Music/Artists/The Script/The Script/The Script - Rusty Halo.mp3 -C:/Users/Rik/Music/Artists/The Script/The Script/The Script - Talk You Down.mp3 -C:/Users/Rik/Music/Artists/The Script/The Script/The Script - The End Is Where I Begin.mp3 -C:/Users/Rik/Music/Artists/The Script/The Script/The Script - The Man Who Can't Be Moved.mp3 -C:/Users/Rik/Music/Artists/Three Days Grace/Life Starts Now/Three Days Grace - Bitter Taste.mp3 -C:/Users/Rik/Music/Artists/Three Days Grace/Life Starts Now/Three Days Grace - Break.mp3 -C:/Users/Rik/Music/Artists/Three Days Grace/Life Starts Now/Three Days Grace - Goin' Down.mp3 -C:/Users/Rik/Music/Artists/Three Days Grace/Life Starts Now/Three Days Grace - Last to Know.mp3 -C:/Users/Rik/Music/Artists/Three Days Grace/Life Starts Now/Three Days Grace - Life Starts Now.mp3 -C:/Users/Rik/Music/Artists/Three Days Grace/Life Starts Now/Three Days Grace - Lost In You.mp3 -C:/Users/Rik/Music/Artists/Three Days Grace/Life Starts Now/Three Days Grace - No More.mp3 -C:/Users/Rik/Music/Artists/Three Days Grace/Life Starts Now/Three Days Grace - Someone Who Cares.mp3 -C:/Users/Rik/Music/Artists/Three Days Grace/Life Starts Now/Three Days Grace - The Good Life.mp3 -C:/Users/Rik/Music/Artists/Three Days Grace/Life Starts Now/Three Days Grace - Without You.mp3 -C:/Users/Rik/Music/Artists/U2/No Line On The Horizon/U2 - Breathe.mp3 -C:/Users/Rik/Music/Artists/U2/No Line On The Horizon/U2 - Get On Your Boots.mp3 -C:/Users/Rik/Music/Artists/U2/No Line On The Horizon/U2 - I'll Go Crazy If I Don't Go Crazy Tonight.mp3 -C:/Users/Rik/Music/Artists/U2/No Line On The Horizon/U2 - Magnificent.mp3 -C:/Users/Rik/Music/Artists/U2/No Line On The Horizon/U2 - No Line On the Horizon.mp3 -C:/Users/Rik/Music/Artists/U2/No Line On The Horizon/U2 - Stand Up Comedy.mp3 -C:/Users/Rik/Music/Artists/U2/No Line On The Horizon/U2 - Unknown Caller.mp3 -C:/Users/Rik/Music/Artists/U2/No Line On The Horizon/U2 - White As Snow.mp3 -C:/Users/Rik/Music/Artists/U2/U2 - Beautiful Day.mp3 -C:/Users/Rik/Music/Artists/U2/U2 - Elevation.mp3 -C:/Users/Rik/Music/Artists/U2/U2 - I Still Haven't Found What I'm Looking For.mp3 -C:/Users/Rik/Music/Artists/U2/U2 - New Year's Day.mp3 -C:/Users/Rik/Music/Artists/U2/U2 - One.mp3 -C:/Users/Rik/Music/Artists/U2/U2 - Stuck In a Moment You Can't Get Out of.mp3 -C:/Users/Rik/Music/Artists/U2/U2 - Sunday Bloody Sunday .mp3 -C:/Users/Rik/Music/Artists/U2/U2 - Sweetest Thing.mp3 -C:/Users/Rik/Music/Artists/U2/U2 - The City of Blinding Lights.mp3 -C:/Users/Rik/Music/Artists/U2/U2 - Vertigo.mp3 -C:/Users/Rik/Music/Artists/U2/U2 - Where the Streets Have No Name.mp3 -C:/Users/Rik/Music/Artists/U2/U2 - With Or Without You.mp3 -C:/Users/Rik/Music/Artists/Weezer/Hurley/Weezer - All My Friends Are Insects (Bonus Track).mp3 -C:/Users/Rik/Music/Artists/Weezer/Hurley/Weezer - Brave New World.mp3 -C:/Users/Rik/Music/Artists/Weezer/Hurley/Weezer - Hang On.mp3 -C:/Users/Rik/Music/Artists/Weezer/Hurley/Weezer - I Want to Be Something (Bonus Track).mp3 -C:/Users/Rik/Music/Artists/Weezer/Hurley/Weezer - Memories.mp3 -C:/Users/Rik/Music/Artists/Weezer/Hurley/Weezer - Represent (Rocked Out Mix) %5Bbonus Track%5D.mp3 -C:/Users/Rik/Music/Artists/Weezer/Hurley/Weezer - Ruling Me.mp3 -C:/Users/Rik/Music/Artists/Weezer/Hurley/Weezer - Run Away.mp3 -C:/Users/Rik/Music/Artists/Weezer/Hurley/Weezer - Smart Girls.mp3 -C:/Users/Rik/Music/Artists/Weezer/Hurley/Weezer - Time Flies.mp3 -C:/Users/Rik/Music/Artists/Weezer/Hurley/Weezer - Trainwrecks.mp3 -C:/Users/Rik/Music/Artists/Weezer/Hurley/Weezer - Unspoken.mp3 -C:/Users/Rik/Music/Artists/Weezer/Hurley/Weezer - Viva La Vida (Bonus Track).mp3 -C:/Users/Rik/Music/Artists/Weezer/Hurley/Weezer - Where's My Sex.mp3 -C:/Users/Rik/Music/Artists/Yellowcard/Paper Walls/Yellowcard - Afraid.mp3 -C:/Users/Rik/Music/Artists/Yellowcard/Paper Walls/Yellowcard - Cut Me, Mick.mp3 -C:/Users/Rik/Music/Artists/Yellowcard/Paper Walls/Yellowcard - Date Line (I Am Gone).mp3 -C:/Users/Rik/Music/Artists/Yellowcard/Paper Walls/Yellowcard - Dear Bobbie.mp3 -C:/Users/Rik/Music/Artists/Yellowcard/Paper Walls/Yellowcard - Fighting.mp3 -C:/Users/Rik/Music/Artists/Yellowcard/Paper Walls/Yellowcard - Five Become Four.mp3 -C:/Users/Rik/Music/Artists/Yellowcard/Paper Walls/Yellowcard - Keeper.mp3 -C:/Users/Rik/Music/Artists/Yellowcard/Paper Walls/Yellowcard - Light Up the Sky.mp3 -C:/Users/Rik/Music/Artists/Yellowcard/Paper Walls/Yellowcard - Paper Walls.mp3 -C:/Users/Rik/Music/Artists/Yellowcard/Paper Walls/Yellowcard - Shadows and Regrets.mp3 -C:/Users/Rik/Music/Artists/Yellowcard/Paper Walls/Yellowcard - Shrink the World.mp3 -C:/Users/Rik/Music/Artists/Yellowcard/Paper Walls/Yellowcard - The Takedown.mp3 -C:/Users/Rik/Music/Artists/Yellowcard/Paper Walls/Yellowcard - You and Me and One Spotlight.mp3 -C:/Users/Rik/Music/Artists/Yellowcard/Yellowcard - October Nights.mp3 -C:/Users/Rik/Music/Artists/You Me At Six/Hold Me Down/You Me At Six - Contagious Chemistry.mp3 -C:/Users/Rik/Music/Artists/You Me At Six/Hold Me Down/You Me At Six - Fireworks.mp3 -C:/Users/Rik/Music/Artists/You Me At Six/Hold Me Down/You Me At Six - Hard to Swallow.mp3 -C:/Users/Rik/Music/Artists/You Me At Six/Hold Me Down/You Me At Six - Liquid Confidence.mp3 -C:/Users/Rik/Music/Artists/You Me At Six/Hold Me Down/You Me At Six - Playing the Blame Game.mp3 -C:/Users/Rik/Music/Artists/You Me At Six/Hold Me Down/You Me At Six - Safer to Hate Her.mp3 -C:/Users/Rik/Music/Artists/You Me At Six/Hold Me Down/You Me At Six - Stay With Me.mp3 -C:/Users/Rik/Music/Artists/You Me At Six/Hold Me Down/You Me At Six - Take Your Breath Away.mp3 -C:/Users/Rik/Music/Artists/You Me At Six/Hold Me Down/You Me At Six - There's No Such Thing As Accident.mp3 -C:/Users/Rik/Music/Artists/You Me At Six/Hold Me Down/You Me At Six - Trophy Eyes.mp3 -C:/Users/Rik/Music/Artists/You Me At Six/Hold Me Down/You Me At Six - Underdog.mp3 -C:/Users/Rik/Music/Old/Bad English - Time Stood Still.mp3 -C:/Users/Rik/Music/Old/Bon Jovi/Bon Jovi - In These Arms.mp3 -C:/Users/Rik/Music/Old/Bon Jovi/Bon Jovi - Livin' On a Prayer.mp3 -C:/Users/Rik/Music/Old/Don Henley - The Boys of Summer.mp3 -C:/Users/Rik/Music/Old/Duran Duran/Duran Duran - Ordinary World.mp3 -C:/Users/Rik/Music/Old/Duran Duran/Duran Duran - The Reflex.mp3 -C:/Users/Rik/Music/Old/Europe - The Final Countdown.mp3 -C:/Users/Rik/Music/Old/Genesis/Genesis - Land of Confusion.mp3 -C:/Users/Rik/Music/Old/Midnight Oil - Beds Are Burning.mp3 -C:/Users/Rik/Music/Old/No Doubt/No Doubt - It's My Life.mp3 -C:/Users/Rik/Music/Old/Survivor - Eye of the Tiger.mp3 -C:/Users/Rik/Music/Various/3 Doors Down/3 Doors Down - Here Without You.mp3 -C:/Users/Rik/Music/Various/3 Doors Down/3 Doors Down - Kryptonite.mp3 -C:/Users/Rik/Music/Various/A Silent Express - Will I Be Around.mp3 -C:/Users/Rik/Music/Various/Adam Lambert - Whataya Want From Me.mp3 -C:/Users/Rik/Music/Various/Alphabeat - The Spell.mp3 -C:/Users/Rik/Music/Various/Anouk/Anouk - Girl.mp3 -C:/Users/Rik/Music/Various/Anouk/Anouk - Nobody's Wife.mp3 -C:/Users/Rik/Music/Various/Anouk/Anouk - R U Kiddin' Me.mp3 -C:/Users/Rik/Music/Various/Avril Lavigne/Avril Lavigne - What the Hell.mp3 -C:/Users/Rik/Music/Various/Biffy Clyro - Many of Horror.mp3 -C:/Users/Rik/Music/Various/Brandon Flowers - Crossfire.mp3 -C:/Users/Rik/Music/Various/Carolina Liar - Show Me What Im Looking For.mp3 -C:/Users/Rik/Music/Various/Chumbawamba - Tubthumping.mp3 -C:/Users/Rik/Music/Various/Eagle Eye Cherry - Save Tonight.mp3 -C:/Users/Rik/Music/Various/Esm%C3%A9e Denters - Outta Here.mp3 -C:/Users/Rik/Music/Various/Falco Luneau - Nobody.mp3 -C:/Users/Rik/Music/Various/Freemasons - Uninvited.mp3 -C:/Users/Rik/Music/Various/Gavin DeGraw/Gavin Degraw - Chariot.mp3 -C:/Users/Rik/Music/Various/Gavin DeGraw/Gavin Degraw - Follow Through.mp3 -C:/Users/Rik/Music/Various/Gavin DeGraw/Gavin Degraw - In Love With a Girl.mp3 -C:/Users/Rik/Music/Various/Intwine - Happy.mp3 -C:/Users/Rik/Music/Various/Jaap - Don't Stop Believin'.mp3 -C:/Users/Rik/Music/Various/Jonas Brothers - Burnin' Up.mp3 -C:/Users/Rik/Music/Various/Joshua Radin - I'd Rather Be With You.mp3 -C:/Users/Rik/Music/Various/Kevin Rudolf - Let It Rock.mp3 -C:/Users/Rik/Music/Various/Kid Rock - All Summer Long.mp3 -C:/Users/Rik/Music/Various/Kylie Minogue/Kylie Minogue - All the Lovers.mp3 -C:/Users/Rik/Music/Various/Kylie Minogue/Kylie Minogue - Get Outta My Way.mp3 -C:/Users/Rik/Music/Various/Kylie Minogue/Kylie Minogue - Love At First Sight.mp3 -C:/Users/Rik/Music/Various/Kylie Minogue/Kylie Minogue - Wow.mp3 -C:/Users/Rik/Music/Various/Lenny Kravitz/Lenny Kravitz - Again.mp3 -C:/Users/Rik/Music/Various/Lenny Kravitz/Lenny Kravitz - Fly Away.mp3 -C:/Users/Rik/Music/Various/Liquido - Narcotic.mp3 -C:/Users/Rik/Music/Various/Live/Live - Heaven.mp3 -C:/Users/Rik/Music/Various/Live/Live - Overcome.mp3 -C:/Users/Rik/Music/Various/Live/Live - Run to the Water.mp3 -C:/Users/Rik/Music/Various/Live/Live - Selling the Drama.mp3 -C:/Users/Rik/Music/Various/Live/Live - The River.mp3 -C:/Users/Rik/Music/Various/Mando Diao - Dance With Somebody.mp3 -C:/Users/Rik/Music/Various/Maroon 5/Maroon 5 - Misery.mp3 -C:/Users/Rik/Music/Various/Maroon 5/Maroon 5 - Won't Go Home Without You.mp3 -C:/Users/Rik/Music/Various/Melee/Melee - Built to Last.mp3 -C:/Users/Rik/Music/Various/Melee/Melee - Imitation.mp3 -C:/Users/Rik/Music/Various/Mike Posner - Cooler Than Me.mp3 -C:/Users/Rik/Music/Various/Novastar/Novastar - Because.mp3 -C:/Users/Rik/Music/Various/Novastar/Novastar - Waiting So Long.mp3 -C:/Users/Rik/Music/Various/Oasis - Wonderwall.mp3 -C:/Users/Rik/Music/Various/One Night Only - Just For Tonight.mp3 -C:/Users/Rik/Music/Various/Robyn - With Every Heartbeat.mp3 -C:/Users/Rik/Music/Various/Roxette/Roxette - How Do You Do!.mp3 -C:/Users/Rik/Music/Various/Roxette/Roxette - It Must Have Been Love.mp3 -C:/Users/Rik/Music/Various/Roxette/Roxette - Joyride.mp3 -C:/Users/Rik/Music/Various/Roxette/Roxette - Listen to Your Heart.mp3 -C:/Users/Rik/Music/Various/Roxette/Roxette - The Look.mp3 -C:/Users/Rik/Music/Various/Scissor Sisters - Fire With Fire.mp3 -C:/Users/Rik/Music/Various/Scouting For Girls - Take a Change On Us.mp3 -C:/Users/Rik/Music/Various/Scouting for Girls/Scouting For Girls - Famous.mp3 -C:/Users/Rik/Music/Various/Scouting for Girls/Scouting For Girls - This Ain't a Love Song.mp3 -C:/Users/Rik/Music/Various/September/September - Can't Get Over.mp3 -C:/Users/Rik/Music/Various/September/September - Cry For You.mp3 -C:/Users/Rik/Music/Various/Sick Puppies - Maybe.mp3 -C:/Users/Rik/Music/Various/Simple Minds - Don't You (Forget About Me).mp3 -C:/Users/Rik/Music/Various/Spin Doctors - Two Princes.mp3 -C:/Users/Rik/Music/Various/Swedish House Mafia - One (Your Name).mp3 -C:/Users/Rik/Music/Various/Taio Cruz - Break Your Heart.mp3 -C:/Users/Rik/Music/Various/The Calling - Wherever You Will Go.mp3 -C:/Users/Rik/Music/Various/The Naked & Famous - Young Blood.mp3 -C:/Users/Rik/Music/Various/The Rasmus - In the Shadows.mp3 -C:/Users/Rik/Music/Various/Train/Train - Drops of Jupiter.mp3 -C:/Users/Rik/Music/Various/Train/Train - Hey, Soul Sister.mp3 -C:/Users/Rik/Music/Various/Train/Train - If It's Love.mp3 -C:/Users/Rik/Music/Various/Wheatus - Teenage Dirtbag.mp3 -C:/Users/Rik/Music/Various/Within Temptation - Faster.mp3 -C:/Users/Rik/Music/Various/Jason Derulo - In My Head.mp3 -C:/Users/Rik/Music/Artists/Foo Fighters/Wasting Light/Foo Fighters - Better Off.mp3 -C:/Users/Rik/Music/Artists/Foo Fighters/Wasting Light/Foo Fighters - I Should Have Known.mp3 -C:/Users/Rik/Music/Artists/Jimmy Eat World/Chase The Light/Jimmy Eat World - Always Be.mp3 -C:/Users/Rik/Music/Artists/Jimmy Eat World/Chase The Light/Jimmy Eat World - Big Casino.mp3 -C:/Users/Rik/Music/Artists/Jimmy Eat World/Chase The Light/Jimmy Eat World - Carry You.mp3 -C:/Users/Rik/Music/Artists/Jimmy Eat World/Chase The Light/Jimmy Eat World - Chase This Light.mp3 -C:/Users/Rik/Music/Artists/Jimmy Eat World/Chase The Light/Jimmy Eat World - Dizzy.mp3 -C:/Users/Rik/Music/Artists/Jimmy Eat World/Chase The Light/Jimmy Eat World - Electable (Give It Up).mp3 -C:/Users/Rik/Music/Artists/Jimmy Eat World/Chase The Light/Jimmy Eat World - Feeling Lucky.mp3 -C:/Users/Rik/Music/Artists/Jimmy Eat World/Chase The Light/Jimmy Eat World - Firefight.mp3 -C:/Users/Rik/Music/Artists/Jimmy Eat World/Chase The Light/Jimmy Eat World - Gotta Be Somebody's Blues.mp3 -C:/Users/Rik/Music/Artists/Jimmy Eat World/Chase The Light/Jimmy Eat World - Here It Goes.mp3 -C:/Users/Rik/Music/Artists/Jimmy Eat World/Chase The Light/Jimmy Eat World - Let It Happen.mp3 -C:/Users/Rik/Music/Artists/Simple Plan/Still Not Getting Any/Simple Plan - Crazy.mp3 -C:/Users/Rik/Music/Artists/Simple Plan/Still Not Getting Any/Simple Plan - Everytime.mp3 -C:/Users/Rik/Music/Artists/Simple Plan/Still Not Getting Any/Simple Plan - Jump.mp3 -C:/Users/Rik/Music/Artists/Simple Plan/Still Not Getting Any/Simple Plan - Me Against The World.mp3 -C:/Users/Rik/Music/Artists/Simple Plan/Still Not Getting Any/Simple Plan - One.mp3 -C:/Users/Rik/Music/Artists/Simple Plan/Still Not Getting Any/Simple Plan - Perfect World.mp3 -C:/Users/Rik/Music/Artists/Simple Plan/Still Not Getting Any/Simple Plan - Promise.mp3 -C:/Users/Rik/Music/Artists/Simple Plan/Still Not Getting Any/Simple Plan - Shut Up.mp3 -C:/Users/Rik/Music/Artists/Simple Plan/Still Not Getting Any/Simple Plan - Thank You.mp3 -C:/Users/Rik/Music/Artists/Simple Plan/Still Not Getting Any/Simple Plan - Untitled.mp3 -C:/Users/Rik/Music/Artists/Simple Plan/Still Not Getting Any/Simple Plan - Welcome To My Life.mp3 -C:/Users/Rik/Music/Artists/Volbeat/Beyond Hell-Above Heaven/Volbeat - 16 Dollars.mp3 -C:/Users/Rik/Music/Artists/Volbeat/Beyond Hell-Above Heaven/Volbeat - 7 Shots.mp3 -C:/Users/Rik/Music/Artists/Volbeat/Beyond Hell-Above Heaven/Volbeat - A Better Believer.mp3 -C:/Users/Rik/Music/Artists/Volbeat/Beyond Hell-Above Heaven/Volbeat - A New Day.mp3 -C:/Users/Rik/Music/Artists/Volbeat/Beyond Hell-Above Heaven/Volbeat - A Warrior's Call.mp3 -C:/Users/Rik/Music/Artists/Volbeat/Beyond Hell-Above Heaven/Volbeat - Being 1.mp3 -C:/Users/Rik/Music/Artists/Volbeat/Beyond Hell-Above Heaven/Volbeat - Fallen.mp3 -C:/Users/Rik/Music/Artists/Volbeat/Beyond Hell-Above Heaven/Volbeat - Heaven Nor Hell.mp3 -C:/Users/Rik/Music/Artists/Volbeat/Beyond Hell-Above Heaven/Volbeat - Magic Zone.mp3 -C:/Users/Rik/Music/Artists/Volbeat/Beyond Hell-Above Heaven/Volbeat - Thanks.mp3 -C:/Users/Rik/Music/Artists/Volbeat/Beyond Hell-Above Heaven/Volbeat - The Mirror and the Ripper.mp3 -C:/Users/Rik/Music/Artists/Volbeat/Beyond Hell-Above Heaven/Volbeat - Who They Are.mp3 -C:/Users/Rik/Music/Various/Beady Eye - The Roller.mp3 -C:/Users/Rik/Music/Various/Depeche Mode - Just Can't Get Enough.mp3 -C:/Users/Rik/Music/Various/Kelly Clarkson/Kelly Clarkson - Because of You.mp3 -C:/Users/Rik/Music/Various/Kelly Clarkson/Kelly Clarkson - Behind These Hazel Eyes.mp3 -C:/Users/Rik/Music/Various/Kelly Clarkson/Kelly Clarkson - Since U Been Gone.mp3 -C:/Users/Rik/Music/Artists/The Gaslight Anthem/American Slang/The Gaslight Anthem - American Slang.mp3 -C:/Users/Rik/Music/Artists/The Gaslight Anthem/American Slang/The Gaslight Anthem - Boxer.mp3 -C:/Users/Rik/Music/Artists/The Gaslight Anthem/American Slang/The Gaslight Anthem - Bring It On.mp3 -C:/Users/Rik/Music/Artists/The Gaslight Anthem/American Slang/The Gaslight Anthem - Old Haunts.mp3 -C:/Users/Rik/Music/Artists/The Gaslight Anthem/American Slang/The Gaslight Anthem - Orphans.mp3 -C:/Users/Rik/Music/Artists/The Gaslight Anthem/American Slang/The Gaslight Anthem - Stay Lucky.mp3 -C:/Users/Rik/Music/Artists/The Gaslight Anthem/American Slang/The Gaslight Anthem - The Diamond Church Street Choir.mp3 -C:/Users/Rik/Music/Artists/The Gaslight Anthem/American Slang/The Gaslight Anthem - The Queen Of Lower Chelsea.mp3 -C:/Users/Rik/Music/Artists/The Gaslight Anthem/American Slang/The Gaslight Anthem - The Spirit Of Jazz.mp3 -C:/Users/Rik/Music/Artists/The Gaslight Anthem/American Slang/The Gaslight Anthem - We Did It When We Were Young.mp3 -C:/Users/Rik/Music/Artists/Blind/Blind/Blind - Break Away.mp3 -C:/Users/Rik/Music/Artists/Blind/Blind/Blind - Every You Every Me.mp3 -C:/Users/Rik/Music/Artists/Blind/Blind/Blind - Jesus Only Knows.mp3 -C:/Users/Rik/Music/Artists/Blind/Blind/Blind - Love Is Gone.mp3 -C:/Users/Rik/Music/Artists/Blind/Blind/Blind - Ordinary Day.mp3 -C:/Users/Rik/Music/Artists/Blind/Blind/Blind - People.mp3 -C:/Users/Rik/Music/Artists/Blind/Blind/Blind - Save Me Now.mp3 -C:/Users/Rik/Music/Artists/Blind/Blind/Blind - These Are the Days.mp3 -C:/Users/Rik/Music/Artists/Blind/Blind/Blind - Today I Break Loose.mp3 -C:/Users/Rik/Music/Artists/Blind/Blind/Blind - Triple X.mp3 -C:/Users/Rik/Music/Artists/Blind/Blind/Blind - Wake Me Up.mp3 -C:/Users/Rik/Music/Artists/Blind/Blind/Blind - We Can Stay.mp3 -C:/Users/Rik/Music/Artists/Blind/Blind/Blind - You.mp3 -C:/Users/Rik/Music/Artists/Cute Is What We Aim For/Rotation/Cute Is What We Aim For - Do What You Do.mp3 -C:/Users/Rik/Music/Artists/Cute Is What We Aim For/Rotation/Cute Is What We Aim For - Doctor.mp3 -C:/Users/Rik/Music/Artists/Cute Is What We Aim For/Rotation/Cute Is What We Aim For - Hollywood.mp3 -C:/Users/Rik/Music/Artists/Cute Is What We Aim For/Rotation/Cute Is What We Aim For - Loser.mp3 -C:/Users/Rik/Music/Artists/Cute Is What We Aim For/Rotation/Cute Is What We Aim For - Marriage to Millions.mp3 -C:/Users/Rik/Music/Artists/Cute Is What We Aim For/Rotation/Cute Is What We Aim For - Miss Sobriety.mp3 -C:/Users/Rik/Music/Artists/Cute Is What We Aim For/Rotation/Cute Is What We Aim For - Navigate Me.mp3 -C:/Users/Rik/Music/Artists/Cute Is What We Aim For/Rotation/Cute Is What We Aim For - Practice Makes Perfect.mp3 -C:/Users/Rik/Music/Artists/Cute Is What We Aim For/Rotation/Cute Is What We Aim For - Safe Ride.mp3 -C:/Users/Rik/Music/Artists/Cute Is What We Aim For/Rotation/Cute Is What We Aim For - The Lock Down Denial.mp3 -C:/Users/Rik/Music/Artists/Cute Is What We Aim For/Rotation/Cute Is What We Aim For - Time.mp3 -C:/Users/Rik/Music/Artists/Kids In Glass Houses/Dirt/Kids In Glass Houses - Artbreaker I.mp3 -C:/Users/Rik/Music/Artists/Kids In Glass Houses/Dirt/Kids In Glass Houses - Artbreaker II.mp3 -C:/Users/Rik/Music/Artists/Kids In Glass Houses/Dirt/Kids In Glass Houses - For Better Or Hearse.mp3 -C:/Users/Rik/Music/Artists/Kids In Glass Houses/Dirt/Kids In Glass Houses - Giving Up.mp3 -C:/Users/Rik/Music/Artists/Kids In Glass Houses/Dirt/Kids In Glass Houses - Hunt the Haunted.mp3 -C:/Users/Rik/Music/Artists/Kids In Glass Houses/Dirt/Kids In Glass Houses - Lilli Rose.mp3 -C:/Users/Rik/Music/Artists/Kids In Glass Houses/Dirt/Kids In Glass Houses - Matters At All.mp3 -C:/Users/Rik/Music/Artists/Kids In Glass Houses/Dirt/Kids In Glass Houses - Maybe Tomorrow.mp3 -C:/Users/Rik/Music/Artists/Kids In Glass Houses/Dirt/Kids In Glass Houses - Sunshine.mp3 -C:/Users/Rik/Music/Artists/Kids In Glass Houses/Dirt/Kids In Glass Houses - The Best Is Yet To Come.mp3 -C:/Users/Rik/Music/Artists/Kids In Glass Houses/Dirt/Kids In Glass Houses - The Morning Afterlife.mp3 -C:/Users/Rik/Music/Artists/Kids In Glass Houses/Dirt/Kids In Glass Houses - Undercover Lover.mp3 -C:/Users/Rik/Music/Artists/Kids In Glass Houses/Dirt/Kids In Glass Houses - Youngblood (Let It Out).mp3 -C:/Users/Rik/Music/Artists/Simple Plan/Get Your Heart On!/Simple Plan - Anywhere Else But Here.mp3 -C:/Users/Rik/Music/Artists/Simple Plan/Get Your Heart On!/Simple Plan - Astronaut.mp3 -C:/Users/Rik/Music/Artists/Simple Plan/Get Your Heart On!/Simple Plan - Can't Keep My Hands Off You.mp3 -C:/Users/Rik/Music/Artists/Simple Plan/Get Your Heart On!/Simple Plan - Freaking Me Out.mp3 -C:/Users/Rik/Music/Artists/Simple Plan/Get Your Heart On!/Simple Plan - Gone Too Soon.mp3 -C:/Users/Rik/Music/Artists/Simple Plan/Get Your Heart On!/Simple Plan - Jet Lag.mp3 -C:/Users/Rik/Music/Artists/Simple Plan/Get Your Heart On!/Simple Plan - Last One Standing.mp3 -C:/Users/Rik/Music/Artists/Simple Plan/Get Your Heart On!/Simple Plan - Loser Of The Year.mp3 -C:/Users/Rik/Music/Artists/Simple Plan/Get Your Heart On!/Simple Plan - This Song Saved My Life.mp3 -C:/Users/Rik/Music/Artists/Simple Plan/Get Your Heart On!/Simple Plan - You Suck At Love.mp3 -C:/Users/Rik/Music/Various/The Von Bondies - C%60Mon C%60Mon.mp3 -C:/Users/Rik/Music/Various/White Stripes - Seven Nation Army.mp3 -C:/Users/Rik/Music/Artists/Futures/The Holiday/Futures - 16.mp3 -C:/Users/Rik/Music/Artists/Futures/The Holiday/Futures - Holiday.mp3 -C:/Users/Rik/Music/Artists/Futures/The Holiday/Futures - Sal Paradise.mp3 -C:/Users/Rik/Music/Artists/Futures/The Holiday/Futures - Take Me Home.mp3 -C:/Users/Rik/Music/Artists/Futures/The Holiday/Futures - Thank You.mp3 -C:/Users/Rik/Music/Artists/Futures/The Holiday/Futures - The Boy Who Cried Wolf.mp3 -C:/Users/Rik/Music/Artists/Futures/The Holiday/Futures - The Summer.mp3 -C:/Users/Rik/Music/Artists/Rise Against/Appeal To Reason/Rise Against - Audience of One.mp3 -C:/Users/Rik/Music/Artists/Rise Against/Appeal To Reason/Rise Against - Collapse (Post-Amerika).mp3 -C:/Users/Rik/Music/Artists/Rise Against/Appeal To Reason/Rise Against - Elective Amnesia.mp3 -C:/Users/Rik/Music/Artists/Rise Against/Appeal To Reason/Rise Against - Entertainment.mp3 -C:/Users/Rik/Music/Artists/Rise Against/Appeal To Reason/Rise Against - From Heads Unworthy.mp3 -C:/Users/Rik/Music/Artists/Rise Against/Appeal To Reason/Rise Against - Hairline Fracture.mp3 -C:/Users/Rik/Music/Artists/Rise Against/Appeal To Reason/Rise Against - Hero of War.mp3 -C:/Users/Rik/Music/Artists/Rise Against/Appeal To Reason/Rise Against - Kotov Syndrome.mp3 -C:/Users/Rik/Music/Artists/Rise Against/Appeal To Reason/Rise Against - Long Forgotten Sons.mp3 -C:/Users/Rik/Music/Artists/Rise Against/Appeal To Reason/Rise Against - Prayer of the Refugee.mp3 -C:/Users/Rik/Music/Artists/Rise Against/Appeal To Reason/Rise Against - Re-Education (Through Labor).mp3 -C:/Users/Rik/Music/Artists/Rise Against/Appeal To Reason/Rise Against - Savior.mp3 -C:/Users/Rik/Music/Artists/Rise Against/Appeal To Reason/Rise Against - The Dirt Whispered.mp3 -C:/Users/Rik/Music/Artists/Rise Against/Appeal To Reason/Rise Against - The Strength to Go On.mp3 -C:/Users/Rik/Music/Artists/Rise Against/Appeal To Reason/Rise Against - Whereabouts Unknown.mp3 -C:/Users/Rik/Music/Artists/White Lies/To Lose My Life/White Lies - A Place To Hide.mp3 -C:/Users/Rik/Music/Artists/White Lies/To Lose My Life/White Lies - Death.mp3 -C:/Users/Rik/Music/Artists/White Lies/To Lose My Life/White Lies - E.S.T..mp3 -C:/Users/Rik/Music/Artists/White Lies/To Lose My Life/White Lies - Farewell To The Fairground.mp3 -C:/Users/Rik/Music/Artists/White Lies/To Lose My Life/White Lies - Fifty On Our Foreheads.mp3 -C:/Users/Rik/Music/Artists/White Lies/To Lose My Life/White Lies - From The Stars.mp3 -C:/Users/Rik/Music/Artists/White Lies/To Lose My Life/White Lies - Nothing To Give.mp3 -C:/Users/Rik/Music/Artists/White Lies/To Lose My Life/White Lies - The Price Of Love.mp3 -C:/Users/Rik/Music/Artists/White Lies/To Lose My Life/White Lies - To Lose My Life.mp3 -C:/Users/Rik/Music/Artists/White Lies/To Lose My Life/White Lies - Unfinished Business.mp3 -C:/Users/Rik/Music/Artists/Yellowcard/When You're Through Thinking, Say Yes/Yellowcard - Be the Young.mp3 -C:/Users/Rik/Music/Artists/Yellowcard/When You're Through Thinking, Say Yes/Yellowcard - For You and Your Denial.mp3 -C:/Users/Rik/Music/Artists/Yellowcard/When You're Through Thinking, Say Yes/Yellowcard - Hang You Up.mp3 -C:/Users/Rik/Music/Artists/Yellowcard/When You're Through Thinking, Say Yes/Yellowcard - Hide.mp3 -C:/Users/Rik/Music/Artists/Yellowcard/When You're Through Thinking, Say Yes/Yellowcard - Life of Leaving Home.mp3 -C:/Users/Rik/Music/Artists/Yellowcard/When You're Through Thinking, Say Yes/Yellowcard - Promises.mp3 -C:/Users/Rik/Music/Artists/Yellowcard/When You're Through Thinking, Say Yes/Yellowcard - See Me Smiling.mp3 -C:/Users/Rik/Music/Artists/Yellowcard/When You're Through Thinking, Say Yes/Yellowcard - Sing for Me (Acoustic).mp3 -C:/Users/Rik/Music/Artists/Yellowcard/When You're Through Thinking, Say Yes/Yellowcard - Sing for Me.mp3 -C:/Users/Rik/Music/Artists/Yellowcard/When You're Through Thinking, Say Yes/Yellowcard - Soundtrack.mp3 -C:/Users/Rik/Music/Artists/Yellowcard/When You're Through Thinking, Say Yes/Yellowcard - The Sound of You and Me.mp3 -C:/Users/Rik/Music/Artists/Yellowcard/When You're Through Thinking, Say Yes/Yellowcard - With You Around.mp3 -C:/Users/Rik/Music/Artists/Fall Out Boy/Infinity On High/Fall Out Boy - Bang The Doldrums.mp3 -C:/Users/Rik/Music/Artists/Fall Out Boy/Infinity On High/Fall Out Boy - Don't You Know Who I Think I Am.mp3 -C:/Users/Rik/Music/Artists/Fall Out Boy/Infinity On High/Fall Out Boy - Fame.mp3 -C:/Users/Rik/Music/Artists/Fall Out Boy/Infinity On High/Fall Out Boy - Hum Hallelujah.mp3 -C:/Users/Rik/Music/Artists/Fall Out Boy/Infinity On High/Fall Out Boy - I'm Like A Lawyer With The Way I'm Always Trying To Get You Off (me+you).mp3 -C:/Users/Rik/Music/Artists/Fall Out Boy/Infinity On High/Fall Out Boy - I've Got All This Ringing In My Ears And None On My Fingers.mp3 -C:/Users/Rik/Music/Artists/Fall Out Boy/Infinity On High/Fall Out Boy - Thanks For The Memories.mp3 -C:/Users/Rik/Music/Artists/Fall Out Boy/Infinity On High/Fall Out Boy - The (After) Life Of The Party.mp3 -C:/Users/Rik/Music/Artists/Fall Out Boy/Infinity On High/Fall Out Boy - The Carpal Tunnel Of Love.mp3 -C:/Users/Rik/Music/Artists/Fall Out Boy/Infinity On High/Fall Out Boy - The Take Over, The Breaks Over.mp3 -C:/Users/Rik/Music/Artists/Fall Out Boy/Infinity On High/Fall Out Boy - This Ain't A Scene, It's An Arms Race.mp3 -C:/Users/Rik/Music/Artists/Fall Out Boy/Infinity On High/Fall Out Boy - Thriller.mp3 -C:/Users/Rik/Music/Artists/Fall Out Boy/Infinity On High/Fall Out Boy - You're Crashing, But You're No Wave.mp3 -C:/Users/Rik/Music/Artists/Jimmy Eat World/Invented/Jimmy Eat World - Action Needs An Audience.mp3 -C:/Users/Rik/Music/Artists/Jimmy Eat World/Invented/Jimmy Eat World - Coffee And Cigarettes.mp3 -C:/Users/Rik/Music/Artists/Jimmy Eat World/Invented/Jimmy Eat World - Cut.mp3 -C:/Users/Rik/Music/Artists/Jimmy Eat World/Invented/Jimmy Eat World - Evidence.mp3 -C:/Users/Rik/Music/Artists/Jimmy Eat World/Invented/Jimmy Eat World - Heart Is Hard To Find.mp3 -C:/Users/Rik/Music/Artists/Jimmy Eat World/Invented/Jimmy Eat World - Higher Devotion.mp3 -C:/Users/Rik/Music/Artists/Jimmy Eat World/Invented/Jimmy Eat World - Invented.mp3 -C:/Users/Rik/Music/Artists/Jimmy Eat World/Invented/Jimmy Eat World - Littlething.mp3 -C:/Users/Rik/Music/Artists/Jimmy Eat World/Invented/Jimmy Eat World - Mixtape.mp3 -C:/Users/Rik/Music/Artists/Jimmy Eat World/Invented/Jimmy Eat World - Movielike.mp3 -C:/Users/Rik/Music/Artists/Jimmy Eat World/Invented/Jimmy Eat World - My Best Theory.mp3 -C:/Users/Rik/Music/Artists/Jimmy Eat World/Invented/Jimmy Eat World - Stop.mp3 -C:/Users/Rik/Music/Artists/Red/Until We Have Faces/Red - Best Is Yet to Come.mp3 -C:/Users/Rik/Music/Artists/Red/Until We Have Faces/Red - Buried Beneath.mp3 -C:/Users/Rik/Music/Artists/Red/Until We Have Faces/Red - Faceless.mp3 -C:/Users/Rik/Music/Artists/Red/Until We Have Faces/Red - Feed the Machine.mp3 -C:/Users/Rik/Music/Artists/Red/Until We Have Faces/Red - Hymn for the Missing.mp3 -C:/Users/Rik/Music/Artists/Red/Until We Have Faces/Red - Let It Burn.mp3 -C:/Users/Rik/Music/Artists/Red/Until We Have Faces/Red - Lie to Me (Denial).mp3 -C:/Users/Rik/Music/Artists/Red/Until We Have Faces/Red - Not Alone.mp3 -C:/Users/Rik/Music/Artists/Red/Until We Have Faces/Red - The Outside.mp3 -C:/Users/Rik/Music/Artists/Red/Until We Have Faces/Red - Watch You Crawl.mp3 -C:/Users/Rik/Music/Artists/Red/Until We Have Faces/Red - Who We Are.mp3 -C:/Users/Rik/Music/Artists/Framing Hanley/A Promise To Burn/Framing Hanley - Back To Go Again.mp3 -C:/Users/Rik/Music/Artists/Framing Hanley/A Promise To Burn/Framing Hanley - Bittersweet Sundown.mp3 -C:/Users/Rik/Music/Artists/Framing Hanley/A Promise To Burn/Framing Hanley - Fool With Dreams.mp3 -C:/Users/Rik/Music/Artists/Framing Hanley/A Promise To Burn/Framing Hanley - Intro.mp3 -C:/Users/Rik/Music/Artists/Framing Hanley/A Promise To Burn/Framing Hanley - Livin' So Divine.mp3 -C:/Users/Rik/Music/Artists/Framing Hanley/A Promise To Burn/Framing Hanley - Photographs & Gasoline.mp3 -C:/Users/Rik/Music/Artists/Framing Hanley/A Promise To Burn/Framing Hanley - The Burn.mp3 -C:/Users/Rik/Music/Artists/Framing Hanley/A Promise To Burn/Framing Hanley - The Promise.mp3 -C:/Users/Rik/Music/Artists/Framing Hanley/A Promise To Burn/Framing Hanley - Wake Up.mp3 -C:/Users/Rik/Music/Artists/Framing Hanley/A Promise To Burn/Framing Hanley - WarZone.mp3 -C:/Users/Rik/Music/Artists/Framing Hanley/A Promise To Burn/Framing Hanley - Weight of The World.mp3 -C:/Users/Rik/Music/Artists/Framing Hanley/A Promise To Burn/Framing Hanley - You Stupid Girl.mp3 -C:/Users/Rik/Music/Artists/Framing Hanley/A Promise To Burn/Framing Hanley - You.mp3 -C:/Users/Rik/Music/Artists/Anberlin/Cities/Anberlin - (Fin).mp3 -C:/Users/Rik/Music/Artists/Anberlin/Cities/Anberlin - A Whisper & A Clamour.mp3 -C:/Users/Rik/Music/Artists/Anberlin/Cities/Anberlin - Adelaide.mp3 -C:/Users/Rik/Music/Artists/Anberlin/Cities/Anberlin - Alexithymia.mp3 -C:/Users/Rik/Music/Artists/Anberlin/Cities/Anberlin - Debut.mp3 -C:/Users/Rik/Music/Artists/Anberlin/Cities/Anberlin - Dismantle. Repair.mp3 -C:/Users/Rik/Music/Artists/Anberlin/Cities/Anberlin - Godspeed.mp3 -C:/Users/Rik/Music/Artists/Anberlin/Cities/Anberlin - Hello Alone.mp3 -C:/Users/Rik/Music/Artists/Anberlin/Cities/Anberlin - Inevitable.mp3 -C:/Users/Rik/Music/Artists/Anberlin/Cities/Anberlin - Reclusion.mp3 -C:/Users/Rik/Music/Artists/Anberlin/Cities/Anberlin - The Promise.mp3 -C:/Users/Rik/Music/Artists/Anberlin/Cities/Anberlin - The Unwinding Cable Car.mp3 -C:/Users/Rik/Music/Artists/Anberlin/Cities/Anberlin - There Is A Light That Never Goes Dope.mp3 -C:/Users/Rik/Music/Artists/Anberlin/Cities/Anberlin - There Is No Mathematics To Love And Loss.mp3 -C:/Users/Rik/Music/Artists/Anberlin/Cities/Anberlin - Uncanny.mp3 -C:/Users/Rik/Music/Artists/Anberlin/New Surrender/Anberlin - Blame Me! Blame Me!.mp3 -C:/Users/Rik/Music/Artists/Anberlin/New Surrender/Anberlin - Breaking.mp3 -C:/Users/Rik/Music/Artists/Anberlin/New Surrender/Anberlin - Breathe.mp3 -C:/Users/Rik/Music/Artists/Anberlin/New Surrender/Anberlin - Burn Out Brighter (Northern Lights).mp3 -C:/Users/Rik/Music/Artists/Anberlin/New Surrender/Anberlin - Disappear.mp3 -C:/Users/Rik/Music/Artists/Anberlin/New Surrender/Anberlin - Feel Good Drag.mp3 -C:/Users/Rik/Music/Artists/Anberlin/New Surrender/Anberlin - Haight St.mp3 -C:/Users/Rik/Music/Artists/Anberlin/New Surrender/Anberlin - Misearbile Visu (Ex Malo Bonum).mp3 -C:/Users/Rik/Music/Artists/Anberlin/New Surrender/Anberlin - Retrace.mp3 -C:/Users/Rik/Music/Artists/Anberlin/New Surrender/Anberlin - Soft Skeletons.mp3 -C:/Users/Rik/Music/Artists/Anberlin/New Surrender/Anberlin - The Resistance.mp3 -C:/Users/Rik/Music/Artists/Anberlin/New Surrender/Anberlin - Younglife.mp3 -C:/Users/Rik/Music/Artists/Arcade Fire/Neon Bible/Arcade Fire - Antichrist Television Blues.mp3 -C:/Users/Rik/Music/Artists/Arcade Fire/Neon Bible/Arcade Fire - Black Mirror.mp3 -C:/Users/Rik/Music/Artists/Arcade Fire/Neon Bible/Arcade Fire - Black WaveBad Vibrations.mp3 -C:/Users/Rik/Music/Artists/Arcade Fire/Neon Bible/Arcade Fire - Intervention.mp3 -C:/Users/Rik/Music/Artists/Arcade Fire/Neon Bible/Arcade Fire - Keep The Car Running.mp3 -C:/Users/Rik/Music/Artists/Arcade Fire/Neon Bible/Arcade Fire - No Cars Go.mp3 -C:/Users/Rik/Music/Artists/Arcade Fire/Neon Bible/Arcade Fire - Ocean Of Noise.mp3 -C:/Users/Rik/Music/Artists/Arcade Fire/Neon Bible/Arcade Fire - Well & The Lighthouse, The.mp3 -C:/Users/Rik/Music/Artists/Arcade Fire/Neon Bible/Arcade Fire - Windowsill.mp3 -C:/Users/Rik/Music/Artists/Green Day/21st Century Breakdown/Green Day - %C2%A1Viva la Gloria!.mp3 -C:/Users/Rik/Music/Artists/The Gaslight Anthem/Sink or Swim/The Gaslight Anthem - 1990.mp3 -C:/Users/Rik/Music/Artists/The Gaslight Anthem/Sink or Swim/The Gaslight Anthem - Angry Johnny and the Radio.mp3 -C:/Users/Rik/Music/Artists/The Gaslight Anthem/Sink or Swim/The Gaslight Anthem - Bomboxes and Dictionaries.mp3 -C:/Users/Rik/Music/Artists/The Gaslight Anthem/Sink or Swim/The Gaslight Anthem - Drive.mp3 -C:/Users/Rik/Music/Artists/The Gaslight Anthem/Sink or Swim/The Gaslight Anthem - I Coul'da Been a Contender.mp3 -C:/Users/Rik/Music/Artists/The Gaslight Anthem/Sink or Swim/The Gaslight Anthem - I'da Called You Woody, Joe.mp3 -C:/Users/Rik/Music/Artists/The Gaslight Anthem/Sink or Swim/The Gaslight Anthem - Red in the Morning.mp3 -C:/Users/Rik/Music/Artists/The Gaslight Anthem/Sink or Swim/The Gaslight Anthem - We Came to Dance.mp3 -C:/Users/Rik/Music/Artists/The Gaslight Anthem/Sink or Swim/The Gaslight Anthem - We're Getting A Divorce, You Keep The Dinner.mp3 -C:/Users/Rik/Music/Artists/The Gaslight Anthem/Sink or Swim/The Gaslight Anthem - Wooderson.mp3 -C:/Users/Rik/Music/Artists/Volbeat/Guitar Gangsters & Cadillac Blood/Volbeat - Back To Prom.mp3 -C:/Users/Rik/Music/Artists/Volbeat/Guitar Gangsters & Cadillac Blood/Volbeat - Broken Man And The Dawn.mp3 -C:/Users/Rik/Music/Artists/Volbeat/Guitar Gangsters & Cadillac Blood/Volbeat - End Of The Road.mp3 -C:/Users/Rik/Music/Artists/Volbeat/Guitar Gangsters & Cadillac Blood/Volbeat - Find That Soul.mp3 -C:/Users/Rik/Music/Artists/Volbeat/Guitar Gangsters & Cadillac Blood/Volbeat - Guitar Gangsters & Cadillac Blood.mp3 -C:/Users/Rik/Music/Artists/Volbeat/Guitar Gangsters & Cadillac Blood/Volbeat - Hallelujah Goat.mp3 -C:/Users/Rik/Music/Artists/Volbeat/Guitar Gangsters & Cadillac Blood/Volbeat - I'm So Lonesome I Could Cry.mp3 -C:/Users/Rik/Music/Artists/Volbeat/Guitar Gangsters & Cadillac Blood/Volbeat - Light A Way.mp3 -C:/Users/Rik/Music/Artists/Volbeat/Guitar Gangsters & Cadillac Blood/Volbeat - Making Believe.mp3 -C:/Users/Rik/Music/Artists/Volbeat/Guitar Gangsters & Cadillac Blood/Volbeat - Mary Ann' s Place.mp3 -C:/Users/Rik/Music/Artists/Volbeat/Guitar Gangsters & Cadillac Blood/Volbeat - Maybellene I Hofteholder.mp3 -C:/Users/Rik/Music/Artists/Volbeat/Guitar Gangsters & Cadillac Blood/Volbeat - Still Counting.mp3 -C:/Users/Rik/Music/Artists/Volbeat/Guitar Gangsters & Cadillac Blood/Volbeat - We.mp3 -C:/Users/Rik/Music/Artists/Volbeat/Guitar Gangsters & Cadillac Blood/Volbeat - Wild Rover Of Hell.mp3 -C:/Users/Rik/Music/Artists/My Chemical Romance/Danger Days - The True Lives Of The Fabulous Killjoys/My Chemical Romance - Bulletproof Heart.mp3 -C:/Users/Rik/Music/Artists/My Chemical Romance/Danger Days - The True Lives Of The Fabulous Killjoys/My Chemical Romance - Destroya.mp3 -C:/Users/Rik/Music/Artists/My Chemical Romance/Danger Days - The True Lives Of The Fabulous Killjoys/My Chemical Romance - Party Poison.mp3 -C:/Users/Rik/Music/Artists/My Chemical Romance/Danger Days - The True Lives Of The Fabulous Killjoys/My Chemical Romance - Planetary (Go!).mp3 -C:/Users/Rik/Music/Artists/My Chemical Romance/Danger Days - The True Lives Of The Fabulous Killjoys/My Chemical Romance - Save Yourself- I'll Hold Them Back.mp3 -C:/Users/Rik/Music/Artists/My Chemical Romance/Danger Days - The True Lives Of The Fabulous Killjoys/My Chemical Romance - S-C-A-R-E-C-R-O-W.mp3 -C:/Users/Rik/Music/Artists/My Chemical Romance/Danger Days - The True Lives Of The Fabulous Killjoys/My Chemical Romance - Sing.mp3 -C:/Users/Rik/Music/Artists/My Chemical Romance/Danger Days - The True Lives Of The Fabulous Killjoys/My Chemical Romance - Summertime.mp3 -C:/Users/Rik/Music/Artists/My Chemical Romance/Danger Days - The True Lives Of The Fabulous Killjoys/My Chemical Romance - The Kids From Yesterday.mp3 -C:/Users/Rik/Music/Artists/My Chemical Romance/Danger Days - The True Lives Of The Fabulous Killjoys/My Chemical Romance - The Only Hope For Me Is You.mp3 -C:/Users/Rik/Music/Artists/My Chemical Romance/Danger Days - The True Lives Of The Fabulous Killjoys/My Chemical Romance - Vampire Money.mp3 -C:/Users/Rik/Music/Artists/Longwave/Secrets Are Sinister/Longwave - Eyes Like Headlights.mp3 -C:/Users/Rik/Music/Artists/Longwave/Secrets Are Sinister/Longwave - I Don't Dare.mp3 -C:/Users/Rik/Music/Artists/Longwave/Secrets Are Sinister/Longwave - It's True.mp3 -C:/Users/Rik/Music/Artists/Longwave/Secrets Are Sinister/Longwave - Life Is Wrong.mp3 -C:/Users/Rik/Music/Artists/Longwave/Secrets Are Sinister/Longwave - No Direction.mp3 -C:/Users/Rik/Music/Artists/Longwave/Secrets Are Sinister/Longwave - Satellites.mp3 -C:/Users/Rik/Music/Artists/Longwave/Secrets Are Sinister/Longwave - Secrets Are Sinister.mp3 -C:/Users/Rik/Music/Artists/Longwave/Secrets Are Sinister/Longwave - Shining Hours.mp3 -C:/Users/Rik/Music/Artists/Longwave/Secrets Are Sinister/Longwave - Sideways Sideways Rain.mp3 -C:/Users/Rik/Music/Artists/Longwave/Secrets Are Sinister/Longwave - Sirens In The Deep Sea.mp3 -C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/I'm With You/Red Hot Chili Peppers - Annie Wants a Baby.mp3 -C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/I'm With You/Red Hot Chili Peppers - Brendan's Death Song.mp3 -C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/I'm With You/Red Hot Chili Peppers - Dance, Dance, Dance.mp3 -C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/I'm With You/Red Hot Chili Peppers - Did I Let You Know.mp3 -C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/I'm With You/Red Hot Chili Peppers - Ethiopia.mp3 -C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/I'm With You/Red Hot Chili Peppers - Even You Brutus.mp3 -C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/I'm With You/Red Hot Chili Peppers - Factory of Faith.mp3 -C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/I'm With You/Red Hot Chili Peppers - Goodbye Hooray.mp3 -C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/I'm With You/Red Hot Chili Peppers - Happiness Loves Company.mp3 -C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/I'm With You/Red Hot Chili Peppers - Look Around.mp3 -C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/I'm With You/Red Hot Chili Peppers - Meet Me At the Corner.mp3 -C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/I'm With You/Red Hot Chili Peppers - Monarchy of Roses.mp3 -C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/I'm With You/Red Hot Chili Peppers - Police Station.mp3 -C:/Users/Rik/Music/Artists/Red Hot Chili Peppers/I'm With You/Red Hot Chili Peppers - The Adventures of Rain Dance Maggie.mp3 -C:/Users/Rik/Music/Artists/Amber Pacific/Virtues/Amber Pacific - An Anthem For The Young At Heart.mp3 -C:/Users/Rik/Music/Artists/Amber Pacific/Virtues/Amber Pacific - Burdens Of The Past.mp3 -C:/Users/Rik/Music/Artists/Amber Pacific/Virtues/Amber Pacific - Conviction.mp3 -C:/Users/Rik/Music/Artists/Amber Pacific/Virtues/Amber Pacific - Shine.mp3 -C:/Users/Rik/Music/Artists/Amber Pacific/Virtues/Amber Pacific - Something To Be Said.mp3 -C:/Users/Rik/Music/Artists/Amber Pacific/Virtues/Amber Pacific - The Best Mistake.mp3 -C:/Users/Rik/Music/Artists/Amber Pacific/Virtues/Amber Pacific - The Girl Who Destroys.mp3 -C:/Users/Rik/Music/Artists/Amber Pacific/Virtues/Amber Pacific - The Good Life.mp3 -C:/Users/Rik/Music/Artists/Amber Pacific/Virtues/Amber Pacific - Three Words.mp3 -C:/Users/Rik/Music/Artists/Amber Pacific/Virtues/Amber Pacific - We Can't Fake This.mp3 -C:/Users/Rik/Music/Artists/Amber Pacific/Virtues/Amber Pacific - What Matters Most.mp3 -C:/Users/Rik/Music/Old/Nirvana - Smells Like Teen Spirit.mp3 -C:/Users/Rik/Music/Artists/10 Years Feeding/Feeding the Wolves/10 Years - Don't Fight It.mp3 -C:/Users/Rik/Music/Artists/Cold War Kids/Mine Is Yours/Cold War Kids - Broken Open.mp3 -C:/Users/Rik/Music/Artists/Cold War Kids/Mine Is Yours/Cold War Kids - Bulldozer.mp3 -C:/Users/Rik/Music/Artists/Cold War Kids/Mine Is Yours/Cold War Kids - Cold Toes On The Cold Floor.mp3 -C:/Users/Rik/Music/Artists/Cold War Kids/Mine Is Yours/Cold War Kids - Finally Begin.mp3 -C:/Users/Rik/Music/Artists/Cold War Kids/Mine Is Yours/Cold War Kids - Louder Than Ever.mp3 -C:/Users/Rik/Music/Artists/Cold War Kids/Mine Is Yours/Cold War Kids - Mine Is Yours.mp3 -C:/Users/Rik/Music/Artists/Cold War Kids/Mine Is Yours/Cold War Kids - Out Of The Wilderness.mp3 -C:/Users/Rik/Music/Artists/Cold War Kids/Mine Is Yours/Cold War Kids - Royal Blue.mp3 -C:/Users/Rik/Music/Artists/Cold War Kids/Mine Is Yours/Cold War Kids - Sensitive Kid.mp3 -C:/Users/Rik/Music/Artists/Cold War Kids/Mine Is Yours/Cold War Kids - Skip The Charades.mp3 -C:/Users/Rik/Music/Artists/Sum 41/Screaming Bloody Murder/Sum 41 - We're the Same.mp3 -C:/Users/Rik/Music/Artists/Maximo Park/Our Earthly Pleasures/Maximo Park - A Fortnight's Time.mp3 -C:/Users/Rik/Music/Artists/Maximo Park/Our Earthly Pleasures/Maximo Park - Books From Boxes.mp3 -C:/Users/Rik/Music/Artists/Maximo Park/Our Earthly Pleasures/Maximo Park - By The Monument.mp3 -C:/Users/Rik/Music/Artists/Maximo Park/Our Earthly Pleasures/Maximo Park - Girls Who Play Guitars.mp3 -C:/Users/Rik/Music/Artists/Maximo Park/Our Earthly Pleasures/Maximo Park - Karaoke Plays.mp3 -C:/Users/Rik/Music/Artists/Maximo Park/Our Earthly Pleasures/Maximo Park - Nosebleed.mp3 -C:/Users/Rik/Music/Artists/Maximo Park/Our Earthly Pleasures/Maximo Park - Our Velocity.mp3 -C:/Users/Rik/Music/Artists/Maximo Park/Our Earthly Pleasures/Maximo Park - Parisian Skies.mp3 -C:/Users/Rik/Music/Artists/Maximo Park/Our Earthly Pleasures/Maximo Park - Russian Literature.mp3 -C:/Users/Rik/Music/Artists/Maximo Park/Our Earthly Pleasures/Maximo Park - Sandblasted And Set Free.mp3 -C:/Users/Rik/Music/Artists/Maximo Park/Our Earthly Pleasures/Maximo Park - The Unshockable.mp3 -C:/Users/Rik/Music/Artists/Maximo Park/Our Earthly Pleasures/Maximo Park - Your Urge.mp3 -C:/Users/Rik/Music/Artists/Stereophonics/Keep Calm and Carry On/Stereophonics - 100MPH.mp3 -C:/Users/Rik/Music/Artists/Stereophonics/Keep Calm and Carry On/Stereophonics - Beerbottle.mp3 -C:/Users/Rik/Music/Artists/Stereophonics/Keep Calm and Carry On/Stereophonics - Could You Be The One.mp3 -C:/Users/Rik/Music/Artists/Stereophonics/Keep Calm and Carry On/Stereophonics - I Got Your Number.mp3 -C:/Users/Rik/Music/Artists/Stereophonics/Keep Calm and Carry On/Stereophonics - Innocent.mp3 -C:/Users/Rik/Music/Artists/Stereophonics/Keep Calm and Carry On/Stereophonics - Live 'N' Love.mp3 -C:/Users/Rik/Music/Artists/Stereophonics/Keep Calm and Carry On/Stereophonics - She's Alright.mp3 -C:/Users/Rik/Music/Artists/Stereophonics/Keep Calm and Carry On/Stereophonics - Show Me How.mp3 -C:/Users/Rik/Music/Artists/Stereophonics/Keep Calm and Carry On/Stereophonics - Stuck In A Rut.mp3 -C:/Users/Rik/Music/Artists/Stereophonics/Keep Calm and Carry On/Stereophonics - Trouble.mp3 -C:/Users/Rik/Music/Artists/Stereophonics/Keep Calm and Carry On/Stereophonics - Uppercut.mp3 -C:/Users/Rik/Music/Artists/Stereophonics/Keep Calm and Carry On/Stereophonics - Wonder.mp3 -C:/Users/Rik/Music/Artists/Foo Fighters/Greatest Hits/Foo Fighters - Everlong (Acoustic).mp3 -C:/Users/Rik/Music/Artists/Lifehouse/Smoke & Mirrors/Lifehouse - Everything (Live).mp3 -C:/Users/Rik/Music/Artists/Amber Pacific/Virtues/Amber Pacific - Forever.mp3 -C:/Users/Rik/Music/Artists/Blink-182/Neighborhoods/Blink-182 - After Midnight.mp3 -C:/Users/Rik/Music/Artists/Blink-182/Neighborhoods/Blink-182 - Even If She Falls.mp3 -C:/Users/Rik/Music/Artists/Blink-182/Neighborhoods/Blink-182 - Fighting the Gravity.mp3 -C:/Users/Rik/Music/Artists/Blink-182/Neighborhoods/Blink-182 - Ghost On The Dance Floor.mp3 -C:/Users/Rik/Music/Artists/Blink-182/Neighborhoods/Blink-182 - Heart's All Gone (Interlude).mp3 -C:/Users/Rik/Music/Artists/Blink-182/Neighborhoods/Blink-182 - Heart's All Gone.mp3 -C:/Users/Rik/Music/Artists/Blink-182/Neighborhoods/Blink-182 - Kaleidoscope.mp3 -C:/Users/Rik/Music/Artists/Blink-182/Neighborhoods/Blink-182 - Love Is Dangerous.mp3 -C:/Users/Rik/Music/Artists/Blink-182/Neighborhoods/Blink-182 - Mh 4.18.2011.mp3 -C:/Users/Rik/Music/Artists/Blink-182/Neighborhoods/Blink-182 - Natives.mp3 -C:/Users/Rik/Music/Artists/Blink-182/Neighborhoods/Blink-182 - Snake Charmer.mp3 -C:/Users/Rik/Music/Artists/Blink-182/Neighborhoods/Blink-182 - This Is Home.mp3 -C:/Users/Rik/Music/Artists/Blink-182/Neighborhoods/Blink-182 - Up All Night.mp3 -C:/Users/Rik/Music/Artists/Blink-182/Neighborhoods/Blink-182 - Wishing Well.mp3 -C:/Users/Rik/Music/Artists/Longwave/Secrets Are Sinister/Longwave - The Devil And The Liar.mp3 -C:/Users/Rik/Music/Artists/Kane/Singles Only/Kane - All I Can Do.mp3 -C:/Users/Rik/Music/Artists/Kane/Singles Only/Kane - Believe It.mp3 -C:/Users/Rik/Music/Artists/Kane/Singles Only/Kane - Can You Handle Me.mp3 -C:/Users/Rik/Music/Artists/Kane/Singles Only/Kane - Catwalk Criminal.mp3 -C:/Users/Rik/Music/Artists/Kane/Singles Only/Kane - Damn Those Eyes.mp3 -C:/Users/Rik/Music/Artists/Kane/Singles Only/Kane - Dreamer.mp3 -C:/Users/Rik/Music/Artists/Kane/Singles Only/Kane - Fearless.mp3 -C:/Users/Rik/Music/Artists/Kane/Singles Only/Kane - Hold On to the World.mp3 -C:/Users/Rik/Music/Artists/Kane/Singles Only/Kane - I Will Keep My Head Down.mp3 -C:/Users/Rik/Music/Artists/Kane/Singles Only/Kane - In Over My Head.mp3 -C:/Users/Rik/Music/Artists/Kane/Singles Only/Kane - It's London Calling.mp3 -C:/Users/Rik/Music/Artists/Kane/Singles Only/Kane - Let It Be.mp3 -C:/Users/Rik/Music/Artists/Kane/Singles Only/Kane - Love Over Healing.mp3 -C:/Users/Rik/Music/Artists/Kane/Singles Only/Kane - My Best Wasn't Good Enough.mp3 -C:/Users/Rik/Music/Artists/Kane/Singles Only/Kane - No Surrender.mp3 -C:/Users/Rik/Music/Artists/Kane/Singles Only/Kane - Rain Down On Me.mp3 -C:/Users/Rik/Music/Artists/Kane/Singles Only/Kane - Scream.mp3 -C:/Users/Rik/Music/Artists/Kane/Singles Only/Kane - Shot of a Gun.mp3 -C:/Users/Rik/Music/Artists/Kane/Singles Only/Kane - So Glad You Made It.mp3 -C:/Users/Rik/Music/Artists/Kane/Singles Only/Kane - Something to Say.mp3 -C:/Users/Rik/Music/Artists/Kane/Singles Only/Kane - Wanna Make It Happen.mp3 -C:/Users/Rik/Music/Artists/Kane/Singles Only/Kane - Where Do I Go Now.mp3 -C:/Users/Rik/Music/Artists/Coldplay/Mylo Xyloto/Coldplay - A Hopeful Transmission.mp3 -C:/Users/Rik/Music/Artists/Coldplay/Mylo Xyloto/Coldplay - Charlie Brown.mp3 -C:/Users/Rik/Music/Artists/Coldplay/Mylo Xyloto/Coldplay - Don't Let It Break Your Heart.mp3 -C:/Users/Rik/Music/Artists/Coldplay/Mylo Xyloto/Coldplay - Every Teardrop Is a Waterfall.mp3 -C:/Users/Rik/Music/Artists/Coldplay/Mylo Xyloto/Coldplay - Hurts Like Heaven.mp3 -C:/Users/Rik/Music/Artists/Coldplay/Mylo Xyloto/Coldplay - M.M.I.X..mp3 -C:/Users/Rik/Music/Artists/Coldplay/Mylo Xyloto/Coldplay - Major Minus.mp3 -C:/Users/Rik/Music/Artists/Coldplay/Mylo Xyloto/Coldplay - Mylo Xyloto.mp3 -C:/Users/Rik/Music/Artists/Coldplay/Mylo Xyloto/Coldplay - Paradise.mp3 -C:/Users/Rik/Music/Artists/Coldplay/Mylo Xyloto/Coldplay - Princess of China.mp3 -C:/Users/Rik/Music/Artists/Coldplay/Mylo Xyloto/Coldplay - U.F.O..mp3 -C:/Users/Rik/Music/Artists/Coldplay/Mylo Xyloto/Coldplay - Up in Flames.mp3 -C:/Users/Rik/Music/Artists/Coldplay/Mylo Xyloto/Coldplay - Up with the Birds.mp3 -C:/Users/Rik/Music/Artists/Coldplay/Mylo Xyloto/Coldplay - Us Against the World.mp3 -C:/Users/Rik/Music/Artists/Kane/Singles Only/Kane - High Places.mp3 -C:/Users/Rik/Music/Artists/White Lies/Ritual/White Lies - Bad Love.mp3 -C:/Users/Rik/Music/Artists/White Lies/Ritual/White Lies - Bigger Than Us.mp3 -C:/Users/Rik/Music/Artists/White Lies/Ritual/White Lies - Come Down.mp3 -C:/Users/Rik/Music/Artists/White Lies/Ritual/White Lies - Holy Ghost.mp3 -C:/Users/Rik/Music/Artists/White Lies/Ritual/White Lies - Is Love.mp3 -C:/Users/Rik/Music/Artists/White Lies/Ritual/White Lies - Peace & Quiet.mp3 -C:/Users/Rik/Music/Artists/White Lies/Ritual/White Lies - Strangers.mp3 -C:/Users/Rik/Music/Artists/White Lies/Ritual/White Lies - Streetlights.mp3 -C:/Users/Rik/Music/Artists/White Lies/Ritual/White Lies - The Power & The Glory.mp3 -C:/Users/Rik/Music/Artists/White Lies/Ritual/White Lies - Turn The Bells.mp3 -C:/Users/Rik/Music/Artists/Destine/Destine - Thousand Miles.mp3 -C:/Users/Rik/Music/Artists/The Seer/Heading for the Sun/The Seer - Dive Into The Blue Sky.mp3 -C:/Users/Rik/Music/Artists/The Seer/Heading for the Sun/The Seer - Eyes Gone Blind.mp3 -C:/Users/Rik/Music/Artists/The Seer/Heading for the Sun/The Seer - Fallen Leaves.mp3 -C:/Users/Rik/Music/Artists/The Seer/Heading for the Sun/The Seer - Rain Down On Me.mp3 -C:/Users/Rik/Music/Artists/The Seer/Heading for the Sun/The Seer - Raining.mp3 -C:/Users/Rik/Music/Artists/The Seer/Heading for the Sun/The Seer - Setting Sails.mp3 -C:/Users/Rik/Music/Artists/The Seer/Heading for the Sun/The Seer - The Borderline.mp3 -C:/Users/Rik/Music/Artists/The Seer/Heading for the Sun/The Seer - The Enemy.mp3 -C:/Users/Rik/Music/Artists/The Seer/Heading for the Sun/The Seer - Wasted.mp3 -C:/Users/Rik/Music/Artists/The Seer/Heading for the Sun/The Seer - What We Are.mp3 -C:/Users/Rik/Music/Artists/The Seer/Heading for the Sun/The Seer - Where Do We Go.mp3 -C:/Users/Rik/Music/Artists/The Seer/Heading for the Sun/The Seer - Wishful Thinking.mp3 -C:/Users/Rik/Music/Old/Bruce Springsteen/Bruce Springsteen - The River.mp3 -C:/Users/Rik/Music/Archive/Artists/Snow Patrol/Fallen Empires/Snow Patrol - Called Out In The Dark.mp3 -C:/Users/Rik/Music/Archive/Artists/Snow Patrol/Fallen Empires/Snow Patrol - This Isn't Everything You Are.mp3 -C:/Users/Rik/Music/Archive/Artists/The Wombats/This Modern Glitch/The Wombats - Techno Fan.mp3 -C:/Users/Rik/Music/Archive/Artists/The Wombats/This Modern Glitch/The Wombats - Tokyo (Vampires & Wolves).mp3 -C:/Users/Rik/Music/Artists/The Offspring/Rise and Fall Rage and Grace/The Offspring - A Lot Like Me.mp3 -C:/Users/Rik/Music/Artists/The Offspring/Rise and Fall Rage and Grace/The Offspring - Fix You.mp3 -C:/Users/Rik/Music/Artists/The Offspring/Rise and Fall Rage and Grace/The Offspring - Half-Truism.mp3 -C:/Users/Rik/Music/Artists/The Offspring/Rise and Fall Rage and Grace/The Offspring - Hammerhead.mp3 -C:/Users/Rik/Music/Artists/The Offspring/Rise and Fall Rage and Grace/The Offspring - Kristy, Are You Doing Okay.mp3 -C:/Users/Rik/Music/Artists/The Offspring/Rise and Fall Rage and Grace/The Offspring - Let's Hear It For Rock Bottom.mp3 -C:/Users/Rik/Music/Artists/The Offspring/Rise and Fall Rage and Grace/The Offspring - Nothingtown.mp3 -C:/Users/Rik/Music/Artists/The Offspring/Rise and Fall Rage and Grace/The Offspring - O.C. Life.mp3 -C:/Users/Rik/Music/Artists/The Offspring/Rise and Fall Rage and Grace/The Offspring - Rise And Fall.mp3 -C:/Users/Rik/Music/Artists/The Offspring/Rise and Fall Rage and Grace/The Offspring - Stuff Is Messed Up.mp3 -C:/Users/Rik/Music/Artists/The Offspring/Rise and Fall Rage and Grace/The Offspring - Takes Me Nowhere.mp3 -C:/Users/Rik/Music/Artists/The Offspring/Rise and Fall Rage and Grace/The Offspring - Trust In You.mp3 -C:/Users/Rik/Music/Artists/The Offspring/Rise and Fall Rage and Grace/The Offspring - You're Gonna Go Far, Kid.mp3 -C:/Users/Rik/Music/Artists/Nickelback/Here and Now/Nickelback - Bottoms Up.mp3 -C:/Users/Rik/Music/Artists/Nickelback/Here and Now/Nickelback - Don't Ever Let It End.mp3 -C:/Users/Rik/Music/Artists/Nickelback/Here and Now/Nickelback - Everything I Wanna Do.mp3 -C:/Users/Rik/Music/Artists/Nickelback/Here and Now/Nickelback - Gotta Get Me Some.mp3 -C:/Users/Rik/Music/Artists/Nickelback/Here and Now/Nickelback - Holding On to Heaven.mp3 -C:/Users/Rik/Music/Artists/Nickelback/Here and Now/Nickelback - Kiss It Goodbye.mp3 -C:/Users/Rik/Music/Artists/Nickelback/Here and Now/Nickelback - Lullaby.mp3 -C:/Users/Rik/Music/Artists/Nickelback/Here and Now/Nickelback - Midnight Queen.mp3 -C:/Users/Rik/Music/Artists/Nickelback/Here and Now/Nickelback - This Means War.mp3 -C:/Users/Rik/Music/Artists/Nickelback/Here and Now/Nickelback - Trying Not to Love You.mp3 -C:/Users/Rik/Music/Artists/Nickelback/Here and Now/Nickelback - When We Stand Together.mp3 -C:/Users/Rik/Music/Artists/The Vaccines/What Did You Expect From The Vaccines/The Vaccines - A Lack of Understanding.mp3 -C:/Users/Rik/Music/Artists/The Vaccines/What Did You Expect From The Vaccines/The Vaccines - All in White.mp3 -C:/Users/Rik/Music/Artists/The Vaccines/What Did You Expect From The Vaccines/The Vaccines - Blow It Up.mp3 -C:/Users/Rik/Music/Artists/The Vaccines/What Did You Expect From The Vaccines/The Vaccines - Family Friend.mp3 -C:/Users/Rik/Music/Artists/The Vaccines/What Did You Expect From The Vaccines/The Vaccines - If You Wanna.mp3 -C:/Users/Rik/Music/Artists/The Vaccines/What Did You Expect From The Vaccines/The Vaccines - N%C3%B8rgaard.mp3 -C:/Users/Rik/Music/Artists/The Vaccines/What Did You Expect From The Vaccines/The Vaccines - Post Break-Up Sex.mp3 -C:/Users/Rik/Music/Artists/The Vaccines/What Did You Expect From The Vaccines/The Vaccines - Under Your Thumb.mp3 -C:/Users/Rik/Music/Artists/The Vaccines/What Did You Expect From The Vaccines/The Vaccines - Westsuit.mp3 -C:/Users/Rik/Music/Artists/The Vaccines/What Did You Expect From The Vaccines/The Vaccines - Wolf Pack.mp3 -C:/Users/Rik/Music/Artists/The Vaccines/What Did You Expect From The Vaccines/The Vaccines - Wreckin' Bar.mp3 -C:/Users/Rik/Music/Artists/Daughtry/Leave This Town/Daughtry - Call Your Name.mp3 -C:/Users/Rik/Music/Artists/Daughtry/Leave This Town/Daughtry - Every Time You Turn Around.mp3 -C:/Users/Rik/Music/Artists/Daughtry/Leave This Town/Daughtry - Ghost Of Me.mp3 -C:/Users/Rik/Music/Artists/Daughtry/Leave This Town/Daughtry - Learn My Lesson.mp3 -C:/Users/Rik/Music/Artists/Daughtry/Leave This Town/Daughtry - Life After You.mp3 -C:/Users/Rik/Music/Artists/Daughtry/Leave This Town/Daughtry - No Surprise.mp3 -C:/Users/Rik/Music/Artists/Daughtry/Leave This Town/Daughtry - Open Up Your Eyes.mp3 -C:/Users/Rik/Music/Artists/Daughtry/Leave This Town/Daughtry - September.mp3 -C:/Users/Rik/Music/Artists/Daughtry/Leave This Town/Daughtry - Supernatural.mp3 -C:/Users/Rik/Music/Artists/Daughtry/Leave This Town/Daughtry - Tennessee Line.mp3 -C:/Users/Rik/Music/Artists/Daughtry/Leave This Town/Daughtry - What I Meant To Say.mp3 -C:/Users/Rik/Music/Artists/Daughtry/Leave This Town/Daughtry - You Don't Belong.mp3 -C:/Users/Rik/Music/Artists/Moke/The Long & Dangerous Sea/Moke - Black And Blue.mp3 -C:/Users/Rik/Music/Artists/Moke/The Long & Dangerous Sea/Moke - Ghost.mp3 -C:/Users/Rik/Music/Artists/Moke/The Long & Dangerous Sea/Moke - Heaven.mp3 -C:/Users/Rik/Music/Artists/Moke/The Long & Dangerous Sea/Moke - Lament.mp3 -C:/Users/Rik/Music/Artists/Moke/The Long & Dangerous Sea/Moke - Love My Life.mp3 -C:/Users/Rik/Music/Artists/Moke/The Long & Dangerous Sea/Moke - Nobody's Listening.mp3 -C:/Users/Rik/Music/Artists/Moke/The Long & Dangerous Sea/Moke - Switch.mp3 -C:/Users/Rik/Music/Artists/Moke/The Long & Dangerous Sea/Moke - Terrible End.mp3 -C:/Users/Rik/Music/Artists/Moke/The Long & Dangerous Sea/Moke - The Long & Dangerous Sea.mp3 -C:/Users/Rik/Music/Artists/Moke/The Long & Dangerous Sea/Moke - Windows Of Hope.mp3 -C:/Users/Rik/Music/Artists/Placebo/Battle for the Sun/Placebo - Ashtray Heart.mp3 -C:/Users/Rik/Music/Artists/Placebo/Battle for the Sun/Placebo - Battle for the Sun.mp3 -C:/Users/Rik/Music/Artists/Placebo/Battle for the Sun/Placebo - Breathe Underwater.mp3 -C:/Users/Rik/Music/Artists/Placebo/Battle for the Sun/Placebo - Bright Lights.mp3 -C:/Users/Rik/Music/Artists/Placebo/Battle for the Sun/Placebo - Come Undone.mp3 -C:/Users/Rik/Music/Artists/Placebo/Battle for the Sun/Placebo - Devil in the Details.mp3 -C:/Users/Rik/Music/Artists/Placebo/Battle for the Sun/Placebo - For What It's Worth.mp3 -C:/Users/Rik/Music/Artists/Placebo/Battle for the Sun/Placebo - Happy You're Gone.mp3 -C:/Users/Rik/Music/Artists/Placebo/Battle for the Sun/Placebo - Julien.mp3 -C:/Users/Rik/Music/Artists/Placebo/Battle for the Sun/Placebo - Kings of Medicine.mp3 -C:/Users/Rik/Music/Artists/Placebo/Battle for the Sun/Placebo - Kitty Litter.mp3 -C:/Users/Rik/Music/Artists/Placebo/Battle for the Sun/Placebo - Speak in Tongues.mp3 -C:/Users/Rik/Music/Artists/Placebo/Battle for the Sun/Placebo - The Never-Ending Why.mp3 -C:/Users/Rik/Music/Artists/Keane/Night Train/Keane - Back In Time.mp3 -C:/Users/Rik/Music/Artists/Keane/Night Train/Keane - Clear Skies.mp3 -C:/Users/Rik/Music/Artists/Keane/Night Train/Keane - House Lights.mp3 -C:/Users/Rik/Music/Artists/Keane/Night Train/Keane - Ishin Denshin (You've Got To Help Yourself).mp3 -C:/Users/Rik/Music/Artists/Keane/Night Train/Keane - Looking Back.mp3 -C:/Users/Rik/Music/Artists/Keane/Night Train/Keane - My Shadow.mp3 -C:/Users/Rik/Music/Artists/Keane/Night Train/Keane - Stop For a Minute.mp3 -C:/Users/Rik/Music/Artists/Keane/Night Train/Keane - Your Love.mp3 -C:/Users/Rik/Music/Artists/Keane/Under The Iron Sea/Keane - A Bad Dream.mp3 -C:/Users/Rik/Music/Artists/Keane/Under The Iron Sea/Keane - Atlantic.mp3 -C:/Users/Rik/Music/Artists/Keane/Under The Iron Sea/Keane - Broken Toy.mp3 -C:/Users/Rik/Music/Artists/Keane/Under The Iron Sea/Keane - Crystal Ball.mp3 -C:/Users/Rik/Music/Artists/Keane/Under The Iron Sea/Keane - Hamburg Song.mp3 -C:/Users/Rik/Music/Artists/Keane/Under The Iron Sea/Keane - Is It Any Wonder.mp3 -C:/Users/Rik/Music/Artists/Keane/Under The Iron Sea/Keane - Leaving So Soon.mp3 -C:/Users/Rik/Music/Artists/Keane/Under The Iron Sea/Keane - Let It Slide .mp3 -C:/Users/Rik/Music/Artists/Keane/Under The Iron Sea/Keane - Nothing In My Way.mp3 -C:/Users/Rik/Music/Artists/Keane/Under The Iron Sea/Keane - Put It Behind You.mp3 -C:/Users/Rik/Music/Artists/Keane/Under The Iron Sea/Keane - The Frog Prince.mp3 -C:/Users/Rik/Music/Artists/Keane/Under The Iron Sea/Keane - The Iron Sea.mp3 -C:/Users/Rik/Music/Artists/Keane/Under The Iron Sea/Keane - Try Again.mp3 -C:/Users/Rik/Music/Artists/Hey Monday/Hold On Tight/Hey Monday - 6 Months.mp3 -C:/Users/Rik/Music/Artists/Hey Monday/Hold On Tight/Hey Monday - Arizona.mp3 -C:/Users/Rik/Music/Artists/Hey Monday/Hold On Tight/Hey Monday - Candles.mp3 -C:/Users/Rik/Music/Artists/Hey Monday/Hold On Tight/Hey Monday - Homecoming.mp3 -C:/Users/Rik/Music/Artists/Hey Monday/Hold On Tight/Hey Monday - How You Love Me Now.mp3 -C:/Users/Rik/Music/Artists/Hey Monday/Hold On Tight/Hey Monday - Hurricane Streets.mp3 -C:/Users/Rik/Music/Artists/Hey Monday/Hold On Tight/Hey Monday - Josey.mp3 -C:/Users/Rik/Music/Artists/Hey Monday/Hold On Tight/Hey Monday - Obvious.mp3 -C:/Users/Rik/Music/Artists/Hey Monday/Hold On Tight/Hey Monday - Run, Don't Walk.mp3 -C:/Users/Rik/Music/Artists/Hey Monday/Hold On Tight/Hey Monday - Set Off.mp3 -C:/Users/Rik/Music/Artists/Hey Monday/Hold On Tight/Hey Monday - Should've Tried Harder.mp3 -C:/Users/Rik/Music/Artists/Mae/The Everglow/Mae - Anything.mp3 -C:/Users/Rik/Music/Artists/Mae/The Everglow/Mae - Breakdown.mp3 -C:/Users/Rik/Music/Artists/Mae/The Everglow/Mae - Cover Me.mp3 -C:/Users/Rik/Music/Artists/Mae/The Everglow/Mae - Epilogue.mp3 -C:/Users/Rik/Music/Artists/Mae/The Everglow/Mae - Mistakes we Knew we Were Making.mp3 -C:/Users/Rik/Music/Artists/Mae/The Everglow/Mae - Painless.mp3 -C:/Users/Rik/Music/Artists/Mae/The Everglow/Mae - Prologue.mp3 -C:/Users/Rik/Music/Artists/Mae/The Everglow/Mae - Ready and Waiting to Fall.mp3 -C:/Users/Rik/Music/Artists/Mae/The Everglow/Mae - Someone Else's Arms.mp3 -C:/Users/Rik/Music/Artists/Mae/The Everglow/Mae - Suspension.mp3 -C:/Users/Rik/Music/Artists/Mae/The Everglow/Mae - The Everglow.mp3 -C:/Users/Rik/Music/Artists/Mae/The Everglow/Mae - The Ocean.mp3 -C:/Users/Rik/Music/Artists/Mae/The Everglow/Mae - The Sun and the Moon.mp3 -C:/Users/Rik/Music/Artists/Mae/The Everglow/Mae - This is the Countdown.mp3 -C:/Users/Rik/Music/Artists/Mae/The Everglow/Mae - We're So Far Away.mp3 -C:/Users/Rik/Music/Artists/Saves the Day/Saves the Day - All I'm Losing Is Me.mp3 -C:/Users/Rik/Music/Artists/Saves the Day/Saves the Day - At Your Funeral.mp3 -C:/Users/Rik/Music/Artists/Saves the Day/Saves the Day - Cars And Calories.mp3 -C:/Users/Rik/Music/Artists/Saves the Day/Saves the Day - Certain Tragedy.mp3 -C:/Users/Rik/Music/Artists/Saves the Day/Saves the Day - Firefly.mp3 -C:/Users/Rik/Music/Artists/Saves the Day/Saves the Day - Freakish.mp3 -C:/Users/Rik/Music/Artists/Saves the Day/Saves the Day - Jukebox Breakdown.mp3 -C:/Users/Rik/Music/Artists/Saves the Day/Saves the Day - Nightingale.mp3 -C:/Users/Rik/Music/Artists/Saves the Day/Saves the Day - See You.mp3 -C:/Users/Rik/Music/Artists/Saves the Day/Saves the Day - This Is Not An Exit.mp3 -C:/Users/Rik/Music/Artists/Saves the Day/Saves the Day - Your Ghost Takes Flight.mp3 \ No newline at end of file diff --git a/src/main/resources/txt/testfiles.txt b/src/main/resources/txt/testfiles.txt deleted file mode 100644 index 6c2c2b6..0000000 --- a/src/main/resources/txt/testfiles.txt +++ /dev/null @@ -1,12 +0,0 @@ -junk (with or without header) -PCM_SIGNED 8000.0 Hz, 16 bit, mono, 2 bytes/frame, little-endian --r 8k -t s16 -c 1 -e signed-integer - - -out (without header) -PCM_SIGNED 8000.0 Hz, 16 bit, stereo, 4 bytes/frame, big-endian --r 128k -t s32 -c 2 -2 signed integer [reasonable] - -out (without header) -PCM_SIGNED 192000.0 Hz, 16 bit, stereo, 4 bytes/frame, little-endian --r 192k -t s16 -c 2 [-e signed-integer] \ No newline at end of file diff --git a/src/test/java/test/SoundAudit.java b/src/test/java/test/SoundAudit.java deleted file mode 100644 index 1d7373a..0000000 --- a/src/test/java/test/SoundAudit.java +++ /dev/null @@ -1,71 +0,0 @@ -/** - * Copyright (C) 2016 Rik Veenboer <rik.veenboer@gmail.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ -package test; - -import javax.sound.sampled.*; -public class SoundAudit { - public static void main(String[] args) { try { - System.out.println("OS: "+System.getProperty("os.name")+" "+ - System.getProperty("os.version")+"/"+ - System.getProperty("os.arch")+"\nJava: "+ - System.getProperty("java.version")+" ("+ - System.getProperty("java.vendor")+")\n"); - for (Mixer.Info thisMixerInfo : AudioSystem.getMixerInfo()) { - System.out.println("Mixer: "+thisMixerInfo.getDescription()+ - " ["+thisMixerInfo.getName()+"]"); - Mixer thisMixer = AudioSystem.getMixer(thisMixerInfo); - for (Line.Info thisLineInfo:thisMixer.getSourceLineInfo()) { - if (thisLineInfo.getLineClass().getName().equals( - "javax.sound.sampled.Port")) { - Line thisLine = thisMixer.getLine(thisLineInfo); - thisLine.open(); - System.out.println(" Source Port: " - +thisLineInfo.toString()); - for (Control thisControl : thisLine.getControls()) { - System.out.println(AnalyzeControl(thisControl));} - thisLine.close();}} - for (Line.Info thisLineInfo:thisMixer.getTargetLineInfo()) { - if (thisLineInfo.getLineClass().getName().equals( - "javax.sound.sampled.Port")) { - Line thisLine = thisMixer.getLine(thisLineInfo); - thisLine.open(); - System.out.println(" Target Port: " - +thisLineInfo.toString()); - for (Control thisControl : thisLine.getControls()) { - System.out.println(AnalyzeControl(thisControl));} - thisLine.close();}}} - } catch (Exception e) {e.printStackTrace();}} - public static String AnalyzeControl(Control thisControl) { - String type = thisControl.getType().toString(); - if (thisControl instanceof BooleanControl) { - return " Control: "+type+" (boolean)"; } - if (thisControl instanceof CompoundControl) { - System.out.println(" Control: "+type+ - " (compound - values below)"); - String toReturn = ""; - for (Control children: - ((CompoundControl)thisControl).getMemberControls()) { - toReturn+=" "+AnalyzeControl(children)+"\n";} - return toReturn.substring(0, toReturn.length()-1);} - if (thisControl instanceof EnumControl) { - return " Control:"+type+" (enum: "+thisControl.toString()+")";} - if (thisControl instanceof FloatControl) { - return " Control: "+type+" (float: from "+ - ((FloatControl) thisControl).getMinimum()+" to "+ - ((FloatControl) thisControl).getMaximum()+")";} - return " Control: unknown type";} -} diff --git a/src/test/java/test/Test.java b/src/test/java/test/Test.java deleted file mode 100644 index a6fa8af..0000000 --- a/src/test/java/test/Test.java +++ /dev/null @@ -1,56 +0,0 @@ -/** - * Copyright (C) 2016 Rik Veenboer <rik.veenboer@gmail.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ -package test; - -import javax.sound.sampled.AudioFormat; - -import sound.Consumer; -import sound.Producer; -import sound.Source; -import sound.consumer.Port; -import sound.consumer.Shoutcast; -import sound.producer.Stream; - -public class Test { - public static void main(String[] args) { - AudioFormat audioFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, 48000f, 16, 2, 4, 48000f, true); - try { - //Producer p1 = new Target("Line-In (Creative SB X-Fi)"); - //Producer p2 = new Target("Line 1 (Virtual Audio Cable)", audioFormat); - //p2.start(); - Producer p3 = new Stream("http://ics2gss.omroep.nl:80/3fm-bb-mp3"); - Producer p4 = new Stream("http://sc7.mystreamserver.com:8004"); - - Consumer c1 = new Source("Java Sound Audio Engine"); - Consumer c2 = new Port("Speakers (Creative SB X-Fi)"); - Consumer c3 = new Shoutcast(); - //Consumer c4 = new Player(); - //Consumer c5 = new Writer(new File("stream.out")); - - //Utils.write(p3.getInputStream(), new File("stream.out")); - //Utils.play(p3.getInputStream()); - c3.start(p4); - - //while (true) { - //Thread.sleep(300000); - //c1.stop(); - //} - } catch (Exception e) { - e.printStackTrace(); - } - } -} \ No newline at end of file diff --git a/src/test/java/test/lines/Main.java b/src/test/java/test/lines/Main.java deleted file mode 100644 index 6712715..0000000 --- a/src/test/java/test/lines/Main.java +++ /dev/null @@ -1,50 +0,0 @@ -/** - * Copyright (C) 2016 Rik Veenboer <rik.veenboer@gmail.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ -package test.lines; - -import javax.sound.sampled.AudioFormat; -import javax.sound.sampled.AudioSystem; -import javax.sound.sampled.Line; -import javax.sound.sampled.LineUnavailableException; -import javax.sound.sampled.Mixer; -import javax.sound.sampled.SourceDataLine; -import javax.sound.sampled.TargetDataLine; - -public class Main { - public static void main(String[] args) { - System.out.println(System.getProperty("javax.sound.sampled.SourceDataLine")); - - new AudioFormat(44100, 16, 2, true, false); - - for (Mixer.Info mixerInfo : AudioSystem.getMixerInfo()) { - Mixer mixer = AudioSystem.getMixer(mixerInfo); - for (Line.Info lineInfo : mixer.getTargetLineInfo()) { - try { - Line line = mixer.getLine(lineInfo); - if (mixer.isLineSupported(lineInfo)) { - if (line instanceof TargetDataLine) { - new TargetLine(mixer, (TargetDataLine) line); - }/* else if (line instanceof SourceDataLine) { - new SourceLine(mixer, (SourceDataLine) line); - }*/ - } - } catch (LineUnavailableException e) {} - } - - } - } -} diff --git a/src/test/java/test/lines/SourceLine.java b/src/test/java/test/lines/SourceLine.java deleted file mode 100644 index b2c2727..0000000 --- a/src/test/java/test/lines/SourceLine.java +++ /dev/null @@ -1,35 +0,0 @@ -/** - * Copyright (C) 2016 Rik Veenboer <rik.veenboer@gmail.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ -package test.lines; - -import javax.sound.sampled.Mixer; -import javax.sound.sampled.SourceDataLine; - -public class SourceLine { - //private Mixer mixer; - private SourceDataLine line; - - public SourceLine(Mixer mixer, SourceDataLine line) { - //this.mixer = mixer; - this.line = line; - System.out.println("SOURCE " + mixer.getMixerInfo().getName() + " || " + line.getLineInfo()); - } - - public int write(byte[] bytes, int offset, int length) { - return line.write(bytes, offset, length); - } -} diff --git a/src/test/java/test/lines/TargetLine.java b/src/test/java/test/lines/TargetLine.java deleted file mode 100644 index b7c74c1..0000000 --- a/src/test/java/test/lines/TargetLine.java +++ /dev/null @@ -1,35 +0,0 @@ -/** - * Copyright (C) 2016 Rik Veenboer <rik.veenboer@gmail.com> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ -package test.lines; - -import javax.sound.sampled.Mixer; -import javax.sound.sampled.TargetDataLine; - -public class TargetLine { - //private Mixer mixer; - private TargetDataLine line; - - public TargetLine(Mixer mixer, TargetDataLine line) { - //this.mixer = mixer; - this.line = line; - System.out.println("TARGET " + mixer.getMixerInfo().getName() + " || " + line.getLineInfo()); - } - - public int read(byte[] bytes, int offset, int length) { - return line.read(bytes, offset, length); - } -}