Lines Matching +full:no +full:- +full:bf

22  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
158 fprintf(stderr, "usage: %s [-lmqsvx] [-d devno] [-f file] " in usage()
159 "[-p pgm] [-t tempo] [file ...]\n", in usage()
172 static int fd = -1;
182 ev->arr[0], ev->arr[1], ev->arr[2], ev->arr[3], in send_event()
183 ev->arr[4], ev->arr[5], ev->arr[6], ev->arr[7]); in send_event()
196 c = *tp->start++; in getvar()
198 } while ((c & 0x80) && tp->start < tp->end); in getvar()
207 if (tp->start + len > tp->end) in getlen()
248 " in absolute-timed MIDI file"); in dometa()
299 static u_char bf[6]; in send_sysex() local
302 warnx("zero-length system-exclusive event"); in send_sysex()
313 * Instead, save some straggling bytes in bf, and send when we have a in send_sysex()
314 * full six (or an end byte). Note bf/saved/insysex should be per- in send_sysex()
318 if (l > sizeof bf - svsysex) { in send_sysex()
319 memcpy(bf + svsysex, p, sizeof bf - svsysex); in send_sysex()
320 l -= sizeof bf - svsysex; in send_sysex()
321 p += sizeof bf - svsysex; in send_sysex()
323 bf[0], bf[1], bf[2], bf[3], bf[4], bf[5])); in send_sysex()
326 memcpy(bf + svsysex, p, l); in send_sysex()
329 if (MIDI_SYSEX_END == bf[svsysex-1]) { in send_sysex()
331 memcpy(event.sysex.buffer, bf, svsysex); in send_sysex()
344 insysex = (MIDI_SYSEX_END != p[l-1]); in send_sysex()
347 * If not for multi-event sysexes and chunk-size weirdness, this in send_sysex()
353 l -= SYSEX_CHUNK; in send_sysex()
357 memcpy(bf, p, l); in send_sysex()
434 if ((u_int)GET32_LE(buf + MARK_LEN) != tot - 8) { in playdata()
449 /* Test against end-8 since we must have at least 8 bytes in playdata()
451 while(buf < end-8 && memcmp(buf, RMID_DATA_ID, MARK_LEN)) in playdata()
454 if (buf >= end-8) { in playdata()
455 warnx("Not a valid RMID file, no data chunk"); in playdata()
485 * Set the timebase (or timebase and tempo, for absolute-timed files). in playdata()
493 * For a non-absolute file, if timebase is set to the file's divisions in playdata()
495 * the MTrks require no scaling. A downside to this approach is that in playdata()
509 divfmt = -(int8_t)divfmt; in playdata()
536 if (p >= end - MARK_LEN - SIZE_LEN) { in playdata()
549 tracks[t].indirect = &tracks[t]; /* -> self for now */ in playdata()
561 .channel=t, .program=sameprogram-1)); in playdata()
576 if ((verbose > 2 && tp->delta > 0) || verbose > 3) { in playdata()
578 tp->delta, tp - tracks, verbose>3?" ":"\n"); in playdata()
581 if (tp->delta > 0) { in playdata()
584 printf("No initial tempo;" in playdata()
593 .divisions=tp->delta)); in playdata()
595 byte = *tp->start++; in playdata()
597 meta = *tp->start++; in playdata()
601 dometa(meta, tp->start, mlen); in playdata()
602 tp->start += mlen; in playdata()
605 tp->status = byte; in playdata()
607 tp->start--; in playdata()
608 mlen = MIDI_LENGTH(tp->status); in playdata()
609 msg = tp->start; in playdata()
613 tp->status, mlen, msg[0]); in playdata()
616 tp->status, mlen, msg[0], msg[1]); in playdata()
618 if (insysex && tp->status != MIDI_SYSEX_END) { in playdata()
623 status = MIDI_GET_STATUS(tp->status); in playdata()
624 chan = MIDI_GET_CHAN(tp->status); in playdata()
661 if (tp->status == MIDI_SYSEX_START) { in playdata()
662 send_sysex(tp->start, mlen); in playdata()
664 } else if (tp->status == MIDI_SYSEX_END) { in playdata()
667 send_sysex(tp->start, mlen); in playdata()
669 for (; mlen > 0 ; -- mlen) { in playdata()
674 .byte=*(tp->start++) in playdata()
685 tp->status); in playdata()
687 tp->start += mlen; in playdata()
689 if (tp->start >= tp->end) { in playdata()
694 tp->delta = getvar(tp); in playdata()
719 errx(1, "bad midi unit -- %s", osunit); in parse_unit()
740 while ((ch = getopt(argc, argv, "?d:f:lmp:qst:vx")) != -1) { in main()
777 argc -= optind; in main()
789 errx(1, "Sorry, no MIDI devices available"); in main()
801 while (example--) in main()
804 while (silence--) in main()
810 while (argc--) { in main()
825 * relative-time priority queue (min-heap). Properties:
837 #define PARENT(i) ((i - 1) >> 1)
840 #define DTIME(i) (t[i].indirect->delta)
855 if (rc >= ntrks) { /* no right child */ in Heapify()
860 DTIME(lc) -= DTIME(node); in Heapify()
861 return; /* no rc ==> lc is a leaf */ in Heapify()
868 DTIME(rc) -= DTIME(node); in Heapify()
869 DTIME(lc) -= DTIME(node); in Heapify()
874 DTIME(rc) -= DTIME(node); in Heapify()
875 DTIME(lc) -= DTIME(node); in Heapify()
884 for (node = PARENT(ntrks - 1); node --> 0;) in BuildHeap()
890 * rightmost bottom-level leaf to the root and decrement ntrks. It remains to
898 --ntrks; in ShrinkHeap()