denemo-devel
[Top][All Lists]
Advanced

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

Re: [Denemo-devel] Jackmidi Status?


From: Richard Shann
Subject: Re: [Denemo-devel] Jackmidi Status?
Date: Tue, 22 Sep 2009 08:56:47 +0100

On Sat, 2009-09-19 at 06:36 -0500, Jeremiah Benham wrote:
> >From the info that you have given below do you think it would actually
> be better to create ear training based games based on midi file
> playback? Is this the only thing that works reliably cross platform? The
> reason why I ask is that most of my students have windows computers. I
> want the ear training games to be cross platform. I just came up with
> this idea:
> 
> Create a function to change the color of the notes in denemo. Ear
> training apps could then put the notes on the staff in white. The user
> would not see it. Midi file playback would still work even though the
> user does not see the notes. When the user answers the correct answer
> the or have answered incorrectly several times the note color status
> changes to black or any other color. 
> 
> Does this sound like a good idea? Should ear training apps use immediate
> playback or file playback? 
> 
> Even though I ask this question I have already almost finished my first
> ear training game using immediate playback. This is what made me wonder
> if my Windows using students will be able to use it. 
Sorry to be so slow in replying. On windows we only have internally
synthsized (sine wave) notes for immediate playback. As Nils said to get
something that sounds nicer we should probably need some synth library
with built-in soundfont. We would use this on GNU/Linux too when not
using jack. So the windows version will work, but not make nice musical
instrument type sounds.

Choosing the color of the graphic display could be done by introducing
another field for the color value in the DenemoDirective, 0x0 being
black. You mention drawing a note in white - I don't know if this will
work (erasing the staff lines?) - perhaps you are thinking of this to
get a side effect of playing the note (using the immediate playback
facility)? It will be cleaner not to use modal features in scripts -
instead use functions that do what they say: so draw a note draws, play
a note plays. In Denemo these will often be linked together to provide
things like immediate playback mode, but we should tease them apart for
the scripting language.

Richard


> 
> Jeremiah 
> 
> 
> 
> 
> On Fri, 2009-08-28 at 11:37 +0100, Richard Shann wrote:
> > On Thu, 2009-08-27 at 16:52 -0500, Jeremiah Benham wrote:
> > > What is the status of jackmidi? What needs done? I have not kept up with 
> > > this. Richard didn't you say you had real time output working.
> > hmm, IIRC what I did was to create the smf structures with links from
> > each DenemoObject to the smf event(s) it gives rise to (in fact, did I
> > create a list of smf events in each DenemoObject? I think I would have,
> > only that would make sense).
> > 
> > 
> > AFAIK there are currently several ways noises can come out of Denemo:
> > 
> > Sounds made when a note is entered
> >       * if the open of /dev/sequencer has succeeded a midi message is
> >         generated by some hard-wired code and sent to that device
> >         [exportmidi.c]
> >       * otherwise a tone is generated from evaluating sin() function and
> >         via to portaudio routines [audiocapture.c]
> > 
> > Sounds made by hitting Play
> >       * if built with JACK midi data is generated for the whole (?)
> >         movement (cached) as smf_tracks/smf_events and then the
> >         smf_events are sent to the jack ports, starting with the one
> >         attached to the current DenemoObject [exportmidi.c, jackmidi.c]
> >       * if not built with JACK the smf midi data is generated for the
> >         selection and written to disk as a MIDI file. Then an external
> >         MIDI player is spawned with the filename [exportmidi.c,
> >         playback.c]
> > 
> > Sounds made by entering a duration (audible feedback checked)
> >       * tone generated from evaluating sin() function and via to
> >         portaudio routines [audiocapture.c]
> >       * no other code is currently wired to this, I suspect.
> > 
> > Misc.
> >       * There is an option under the Playback menu called CSound
> >         playback. I have never tried it.
> >       * The gdk_beep() function is called (e.g. on measure change with
> >         audible feedback checked), this operates a built-in speaker
> >         usually (O/S dependent action).
> > 
> > I have just pasted the above onto the denemo.org website as it occurs to
> > me that we could start collecting together our understanding of how
> > Denemo is working.
> > 
> > So, I think it is a trivial step to do functions that
> >       * creation of the MIDI data (the smf_events attached to objects)
> >         without going on to playback (ie just a cut down version of the
> >         current playback function)
> >       * outputting the MIDI data of the DenemoObject at the cursor
> > 
> > The last one may not be quite trivial, e.g. for cases such as tied notes
> > - you might just get the noteon without the noteoff. And then there
> > would be "play everything that starts at the time the current object
> > starts" command, which again might be quite trivial.
> > I am fairly sure I haven't done these. However, the other day I had a
> > few moments to spare and thought I would finish off the lyrics, actually
> > printing multiple verses in LilyPond, so I opened up exportlilypond.c
> > and found the code already there. I suppose it was me wot did it.
> > 
> > What I think you may remember me writing was that I had got real time
> > input working. I.E. The response of the MIDI via direct reading
> > of /dev/midi1 up to the standard of the input via JACK, just by tweaking
> > the rate of checking for new data. The upshot is that for my purposes I
> > can just startup denemo without jack and transcribe a piece of music
> > using the pc-keyboard for entering rhythms the MIDI keyboard for
> > entering pitches and listening to the result by spawning timidity.
> > Before, the MIDI-in would miss notes if I played in too fast. But if it
> > was something else, dig out the email and remind me!
> > 
> > But this is not to say that I don't have any interest in the jack
> > possibilities - this idea that you can add information to a score to
> > produce an output that has actual musical merit - could be used for a
> > film score etc - is intriguing.
> > 
> > Richard
> > 
> > 
> > 
> > > Where is this code. I looked at jackmidi.c and it did not pop out to me. 
> > > 
> > > The reason I ask was becuase I was going to work on some ear training 
> > > exercises 
> > 
> > > and thought the current portaudio output does not really sound very good 
> > > for doing ear training. 
> > 
> > Yes, I agree, sine waves are not entirely relevant to the question of
> > listening to, and judging, the pitch of real instruments. Especially
> > judging the intervals in chords. And it would be so easy to do much
> > better. I think it is just a matter of #if JACK send
> > currentobject->smf_event to jack midi port. #endif
> > 
> > Richard
> > 
> > 
> > 
> > > 
> > > Jeremiah
> > > 
> > > 
> > > _______________________________________________
> > > 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]