denemo-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Denemo-devel] reset to channel 0


From: Richard Shann
Subject: Re: [Denemo-devel] reset to channel 0
Date: Tue, 11 Aug 2009 22:15:13 +0100




I see one of these
(denemo:26274): libsmf-CRITICAL **: Trying to seek past the end of song.
as the first thing that happens on the first callback from jack at the
start of a song.
I don't think this is new (for denemo with the change described below),
but I don't know what it could be about

Richard




On Tue, 2009-08-11 at 21:05 +0100, Richard Shann wrote:
>       As an experiment, I commented out the code I mentioned and placing this
> 
> (d-DirectivePut-chord-midibytes "prog" "0xC0 71")
>  
> on a note achieves the desired program change on channel 1 (i.e. the
> 0xC0) to program 71.
> 
> Incidentally, it is quite ok to mix decimal 71 with hex 0xC0 in this
> way. So, as qsynth said there was an instrument at decimal 71, I used
> this without converting it. The 0xC0 is easier to use for the change
> program channel 1 (with 0xC1 for channel 2 and so on, user-land being
> one step ahead of the actual encoding).
> 
> You can't change the channel of a staff without that I write some C code
> for it (like changing tempo or volume, these are done in C). It would
> require defining a specific override, so unless it is something that is
> needed I don't propose to do it.
> Questions: 
>       * what is a bank (from the MIDI message side that is)?
>       * what is a patch (ditto)       ?
>       * what *is* needed? in denemo MIDI?
> Richard
> 
> 
> On Tue, 2009-08-11 at 17:09 +0100, Richard Shann wrote:
> > Jeremiah,
> > 
> > We are seeing output on channel 0 and channel n when we are trying to
> > send on channel n in jackmidi.c
> > It looks like this code in jackmidi.c is responsible.
> > 
> > 
> >             /* Before sending, reset channel to 0. XXX: Not very pretty. */
> >             assert(event->midi_buffer_length >= 1);
> >             tmp_status = event->midi_buffer[0];
> >             if (event->midi_buffer[0] >= 0x80 && event->midi_buffer[0] <= 
> > 0xEF)
> >                     event->midi_buffer[0] &= 0xF0;
> >             memcpy(buffer, event->midi_buffer, event->midi_buffer_length);
> >             event->midi_buffer[0] = tmp_status;
> > 
> > Can you say what this was all about?
> > Richard
> > 
> > 
> > 
> > 
> > _______________________________________________
> > Denemo-devel mailing list
> > address@hidden
> > http://lists.gnu.org/mailman/listinfo/denemo-devel
> 
> 
> 
> _______________________________________________
> Denemo-devel mailing list
> address@hidden
> http://lists.gnu.org/mailman/listinfo/denemo-devel





reply via email to

[Prev in Thread] Current Thread [Next in Thread]