diff --git a/musicmetadata/musicmetadata-tests.ts b/musicmetadata/musicmetadata-tests.ts
new file mode 100644
index 0000000000..bc99ba0900
--- /dev/null
+++ b/musicmetadata/musicmetadata-tests.ts
@@ -0,0 +1,10 @@
+///
+///
+
+import * as fs from "fs";
+import * as mm from "musicmetadata";
+
+mm(fs.createReadStream("hype-train.mp3"), (err: Error, metadata: MM.Metadata) => {
+ if (err) throw err;
+ console.log(`Parsed song ${metadata.title}`);
+});
diff --git a/musicmetadata/musicmetadata.d.ts b/musicmetadata/musicmetadata.d.ts
new file mode 100644
index 0000000000..b772468546
--- /dev/null
+++ b/musicmetadata/musicmetadata.d.ts
@@ -0,0 +1,48 @@
+// Type definitions for musicmetadata 2.0.4
+// Project: https://www.npmjs.com/package/musicmetadata
+// Definitions by: Xavier Stouder
+// Definitions: https://github.com/DefinitelyTyped/
+
+///
+
+declare module "musicmetadata" {
+ import {Readable} from "stream";
+ import {EventEmitter} from "events";
+
+ function mm(readStream: Readable, callback: (err: Error, metadata: MM.Metadata) => void): EventEmitter;
+ function mm(readStream: Readable, options: MM.Options, callback: (err: Error, metadata: MM.Metadata) => void): EventEmitter;
+
+ namespace mm { }
+
+ export = mm;
+}
+
+declare namespace MM {
+ export interface Options {
+ duration: boolean;
+ fileSize: number;
+ }
+
+ export interface Metadata {
+ artist: string[];
+ album: string;
+ albumartist: string[];
+ title: string;
+ year: string;
+ track: NoOf;
+ disk: NoOf;
+ genre: string;
+ picture: Picture[];
+ duration: number;
+ }
+
+ export interface NoOf {
+ no: number;
+ of: number;
+ }
+
+ export interface Picture {
+ format: string;
+ data: Buffer;
+ }
+}
\ No newline at end of file