login

<     >

2020-10-03 17:05:10 (UTC-03:00)

Marcel Rodrigues <marcelgmr@gmail.com>

print durations

diff --git a/seqt.c b/seqt.c
index ea36f83..6c6c284 100644
--- a/seqt.c
+++ b/seqt.c
@@ -8,18 +8,20 @@ char map[MAPSIZE][RECSIZE];
 unsigned char matrix[MAXINDEX][MAXTRACK][MAXVOICE];
 
 void
-print_blank()
+print_blank(unsigned char duration)
 {
     int voice;
+    printf(" %c ", duration + '0' - 1);
     for (voice = 0; voice < MAXVOICE; voice++)
         printf("--");
 }
 
 void
-print_notes(int track, int index, int head)
+print_notes(unsigned char duration, int track, int index, int head)
 {
     int voice;
     unsigned char cell;
+    printf(" %c ", duration + '0' - 1);
     for (voice = 0; voice < MAXVOICE; voice++) {
         cell = matrix[index][track][voice];
         if (cell & 0x80)
@@ -43,38 +45,36 @@ print_tracks(int vscroll, int lines, int hscroll, int tracks)
     int active_tracks = MAXTRACK-1;
     int min_track, max_track;
     int track, min_count;
-    unsigned char duration;
+    unsigned char duration[MAXTRACK];
     min_track = hscroll + 1;            /* inclusive */
     max_track = hscroll + tracks + 1;   /* exclusive */
     if (max_track > MAXTRACK)
         max_track = MAXTRACK;
     while (active_tracks) {
         for (track = 1; track < MAXTRACK; track++) {
-            if (inside_view)
-                printf(" ");
             if (index[track] == MAXINDEX) {
                 if (inside_view)
-                    print_blank();
+                    print_blank(duration[track]);
                 continue;
             }
             if (!count[track]) {
-                duration = matrix[index[track]][0][track >> 1];
-                duration = track & 1 ? duration & 0x0F : duration >> 4;
-                if (!duration) {
+                duration[track] = matrix[index[track]][0][track >> 1];
+                duration[track] = track & 1 ? duration[track] & 0x0F : duration[track] >> 4;
+                if (!duration[track]) {
                     index[track] = MAXINDEX;
                     active_tracks--;
                     if (inside_view)
-                        print_blank();
+                        print_blank(duration[track]);
                     continue;
                 }
                 /* head */
                 if (inside_view)
-                    print_notes(track, index[track], 1);
-                count[track] = 0x40 >> (duration - 1);
+                    print_notes(duration[track], track, index[track], 1);
+                count[track] = 0x40 >> (duration[track] - 1);
             } else {
                 /* tail */
                 if (inside_view)
-                    print_notes(track, index[track], 0);
+                    print_notes(duration[track], track, index[track], 0);
             }
         }
         if (vscroll) {
@@ -100,7 +100,7 @@ main()
 {
     if (load_txt(stdin) < 0)
         return 1;
-    print_tracks(2, 3, 1, 3);
+    print_tracks(0, 10, 0, 3);
     if (save_txt(stdout) < 0)
         return 2;
     return 0;