diff -urN midi_prog-/txprm.c midi_prog/txprm.c
--- midi_prog-/txprm.c	Fri Apr  3 02:00:00 2015
+++ midi_prog/txprm.c	Sat Apr  4 00:00:00 2015
@@ -2,24 +2,50 @@
 #include <sys/mman.h>
 #include "util.h"
 
+int offset = 0;
+
 char *work(char *fmt, int idt, int idx, int *p_cnt);
 
 void
+pad_read(void *p, int sz)
+{
+	int pad = offset % sz;
+	while(pad-- > 0){
+		getchar();
+		offset++;
+	}
+	fread(p, sz, 1, stdin);
+	offset += sz;
+}
+
+void
+pad_write(void *p, int sz)
+{
+	int pad = offset % sz;
+	while(pad-- > 0){
+		putchar(0);
+		offset++;
+	}
+	fwrite(p, sz, 1, stdout);
+	offset += sz;
+}
+
+void
 cnv(char *type, char *name, int *np, int idx, int *p_cnt)
 {
 	printf("%s %s_%d ", type, name, idx);
 	if(strcmp(type, "int") == 0){
 		int v = 0;
-		fread(&v, sizeof(v), 1, stdin);
+		pad_read(&v, sizeof(v));
 		printf("%d\n", v);
 		*np = v;
 	}else if(strcmp(type, "double") == 0){
 		double v = 0;
-		fread(&v, sizeof(v), 1, stdin);
+		pad_read(&v, sizeof(v));
 		printf("%lf\n", v);
 	}else if(strcmp(type, "addr") == 0){
 		void *v = NULL;
-		fread(&v, sizeof(v), 1, stdin);
+		pad_read(&v, sizeof(v));
 		printf("%p\n", v);
 	}else if(strcmp(type, "str") == 0){
 		int ch, len = 0;
@@ -28,9 +54,11 @@
 			putchar(ch);
 			len++;
 		}
+		len++; /* for '\0' */
 		putchar('"');
 		putchar('\n');
-		if(p_cnt) *p_cnt += len + 1;
+		if(p_cnt) *p_cnt += len;
+		offset += len;
 	}else{
 		MSG(type);
 		MSG(name);
@@ -43,14 +71,14 @@
 {
 	if(strcmp(type, "int") == 0){
 		int v = atoi(val);
-		fwrite(&v, sizeof(v), 1, stdout);
+		pad_write(&v, sizeof(v));
 	}else if(strcmp(type, "double") == 0){
 		double v = atof(val);
-		fwrite(&v, sizeof(v), 1, stdout);
+		pad_write(&v, sizeof(v));
 	}else if(strcmp(type, "addr") == 0){
 		void *v = NULL;
 		sscanf(val, "%p", &v);
-		fwrite(&v, sizeof(v), 1, stdout);
+		pad_write(&v, sizeof(v));
 	}else if(strcmp(type, "str") == 0){
 		char *p;
 		int n;
@@ -58,6 +86,7 @@
 		if((p = strrchr(val, '"')) != NULL) *p = '\0';
 		n = strlen(val) + 1;
 		fwrite(val, n, 1, stdout);
+		offset += n;
 	}else{
 		MSG(type);
 		MSG(name);