Lines Matching defs:track
47 snd_seq_tick_time_t last_tick; /* end of track */
49 int used; /* anything record on this track */
264 /* MIDI RP-019 says we need at least one track per port */
266 /* Allocate one track for each possible channel.
392 static void add_byte(struct smf_track *track, unsigned char byte)
395 if (track->cur_buf_size >= BUFFER_SIZE) {
396 track->cur_buf->next = calloc(1, sizeof(struct buffer));
397 if (!track->cur_buf->next)
399 track->cur_buf = track->cur_buf->next;
400 track->cur_buf_size = 0;
403 track->cur_buf->buf[track->cur_buf_size++] = byte;
404 track->size++;
408 static void var_value(struct smf_track *track, int v)
411 add_byte(track, 0x80 | ((v >> 28) & 0x03));
413 add_byte(track, 0x80 | ((v >> 21) & 0x7f));
415 add_byte(track, 0x80 | ((v >> 14) & 0x7f));
417 add_byte(track, 0x80 | ((v >> 7) & 0x7f));
418 add_byte(track, v & 0x7f);
422 static void delta_time(struct smf_track *track, const snd_seq_event_t *ev)
424 int diff = ev->time.tick - track->last_tick;
427 var_value(track, diff);
428 track->last_tick = ev->time.tick;
432 static void command(struct smf_track *track, unsigned char cmd)
434 if (cmd != track->last_command)
435 add_byte(track, cmd);
436 track->last_command = cmd < 0xf0 ? cmd : 0;
459 struct smf_track *track;
465 /* determine which track to record to */
479 track = &tracks[i];
483 delta_time(track, ev);
484 command(track, MIDI_CMD_NOTE_ON | (ev->data.note.channel & 0xf));
485 add_byte(track, ev->data.note.note & 0x7f);
486 add_byte(track, ev->data.note.velocity & 0x7f);
489 delta_time(track, ev);
490 command(track, MIDI_CMD_NOTE_OFF | (ev->data.note.channel & 0xf));
491 add_byte(track, ev->data.note.note & 0x7f);
492 add_byte(track, ev->data.note.velocity & 0x7f);
495 delta_time(track, ev);
496 command(track, MIDI_CMD_NOTE_PRESSURE | (ev->data.note.channel & 0xf));
497 add_byte(track, ev->data.note.note & 0x7f);
498 add_byte(track, ev->data.note.velocity & 0x7f);
501 delta_time(track, ev);
502 command(track, MIDI_CMD_CONTROL | (ev->data.control.channel & 0xf));
503 add_byte(track, ev->data.control.param & 0x7f);
504 add_byte(track, ev->data.control.value & 0x7f);
507 delta_time(track, ev);
508 command(track, MIDI_CMD_PGM_CHANGE | (ev->data.control.channel & 0xf));
509 add_byte(track, ev->data.control.value & 0x7f);
512 delta_time(track, ev);
513 command(track, MIDI_CMD_CHANNEL_PRESSURE | (ev->data.control.channel & 0xf));
514 add_byte(track, ev->data.control.value & 0x7f);
517 delta_time(track, ev);
518 command(track, MIDI_CMD_BENDER | (ev->data.control.channel & 0xf));
519 add_byte(track, (ev->data.control.value + 8192) & 0x7f);
520 add_byte(track, ((ev->data.control.value + 8192) >> 7) & 0x7f);
524 delta_time(track, ev);
525 command(track, MIDI_CMD_CONTROL | (ev->data.control.channel & 0xf));
526 add_byte(track, ev->data.control.param & 0x7f);
527 add_byte(track, (ev->data.control.value >> 7) & 0x7f);
529 delta_time(track, ev);
531 add_byte(track, (ev->data.control.param & 0x7f) + 0x20);
532 add_byte(track, ev->data.control.value & 0x7f);
536 delta_time(track, ev);
537 command(track, MIDI_CMD_CONTROL | (ev->data.control.channel & 0xf));
538 add_byte(track, MIDI_CTL_NONREG_PARM_NUM_LSB);
539 add_byte(track, ev->data.control.param & 0x7f);
540 delta_time(track, ev);
541 add_byte(track, MIDI_CTL_NONREG_PARM_NUM_MSB);
542 add_byte(track, (ev->data.control.param >> 7) & 0x7f);
543 delta_time(track, ev);
544 add_byte(track, MIDI_CTL_MSB_DATA_ENTRY);
545 add_byte(track, (ev->data.control.value >> 7) & 0x7f);
546 delta_time(track, ev);
547 add_byte(track, MIDI_CTL_LSB_DATA_ENTRY);
548 add_byte(track, ev->data.control.value & 0x7f);
551 delta_time(track, ev);
552 command(track, MIDI_CMD_CONTROL | (ev->data.control.channel & 0xf));
553 add_byte(track, MIDI_CTL_REGIST_PARM_NUM_LSB);
554 add_byte(track, ev->data.control.param & 0x7f);
555 delta_time(track, ev);
556 add_byte(track, MIDI_CTL_REGIST_PARM_NUM_MSB);
557 add_byte(track, (ev->data.control.param >> 7) & 0x7f);
558 delta_time(track, ev);
559 add_byte(track, MIDI_CTL_MSB_DATA_ENTRY);
560 add_byte(track, (ev->data.control.value >> 7) & 0x7f);
561 delta_time(track, ev);
562 add_byte(track, MIDI_CTL_LSB_DATA_ENTRY);
563 add_byte(track, ev->data.control.value & 0x7f);
580 delta_time(track, ev);
582 command(track, 0xf0), i = 1;
584 command(track, 0xf7), i = 0;
585 var_value(track, ev->data.ext.len - i);
587 add_byte(track, ((unsigned char*)ev->data.ext.ptr)[i]);
592 track->used = 1;
606 /* make length of first track the recording length */
648 /* track id */
655 /* track contents */
710 " -s,--split-channels create a track for each channel\n"
868 /* always write at least one track */