diff --git a/pkgs/aseq2json/default.nix b/pkgs/aseq2json/default.nix
new file mode 100644
index 0000000000000000000000000000000000000000..e5e750eb9c52f0742f75ac8a4152ddda25a050c8
--- /dev/null
+++ b/pkgs/aseq2json/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchFromGitHub, pkg-config, alsaLib, glib, json-glib }:
+
+let
+  repository = fetchFromGitHub {
+    owner = "google";
+    repo = "midi-dump-tools";
+    rev = "8572e6313a0d7ec95492dcab04a46c5dd30ef33a";
+    sha256 = "LQ9LLVumi3GN6c9tuMSOd1Bs2pgrwrLLQbs5XF+NZeA=";
+  };
+in
+  stdenv.mkDerivation {
+    pname = "aseq2json";
+    version = "git";
+    src = "${repository}/aseq2json";
+
+    nativeBuildInputs = [ pkg-config ];
+    buildInputs = [ alsaLib glib json-glib ];
+
+    installPhase = ''
+      install -D --target-directory "$out/bin" aseq2json
+    '';
+  }
diff --git a/pkgs/default.nix b/pkgs/default.nix
index 47e63ae94445b6f50e93606059ea7133faea8b04..af2f21298809ec64cd6f6267d5c8766d6a2bc562 100644
--- a/pkgs/default.nix
+++ b/pkgs/default.nix
@@ -7,6 +7,7 @@ rec {
   g810-led = self.callPackage ./g810-led {};
   gamescope = self.callPackage ./gamescope {};
   greetd = self.callPackage ./greetd {};
+  aseq2json = self.callPackage ./aseq2json {};
 
   mpv-queezle = self.mpv-with-scripts.override {
     scripts = [ self.mpvScripts.mpris ];