[jmsl] oops, nutha thing

jmsl at music.columbia.edu jmsl at music.columbia.edu
Fri Jul 18 14:48:02 EDT 2008


Hi Nick,

I made a SequentialCollection subclass, following your instructions,  
and it works fine.

One thing I did notice, though, from doing so, is that  
setTimeStretch() is also being ignored for MusicShapes when using the  
Player. You'll probably want to double-check this, but the same test  
code I had before, using Player, ignored my setTimeStretch method.  
Just by replacing Player with my subclass it's now working.

cheers,

J.


On 15-Jul-08, at 9:20 PM, jmsl at music.columbia.edu wrote:

> Hello J
>
> I think you've uncovered a bug in Player. Thanks for reporting it!   
> I can verify that a MusicShape's startDelay is indeed not properly  
> scheduled by Player, and I will fix it.
>
> Meanwhile you can easily make a SequentialCollection act like a  
> Player by overriding its start() method, iterating through its  
> children, and setting the Instrument of each to it own Instrument.
> Here's a fully functional example:
>
> /*
> * Created on Jul 15, 2008 by Nick
> *
> */
> package misc;
>
> import java.util.Enumeration;
>
> import com.softsynth.jmsl.*;
>
> public class DelayTest {
>   public static void main(String[] args) {
>       SequentialCollection player = new SequentialCollection() {
>           public double start(double playTime) throws  
> InterruptedException {
>               super.start(playTime);
>               for (Enumeration e = getChildren().elements();  
> e.hasMoreElements();) {
>                   ((MusicJob)  
> e.nextElement()).setInstrument(getInstrument());
>               }
>               return playTime;
>           }
>       };
>       player.setInstrument(new PrintIns());
>       MusicShape s = new MusicShape(4);
>       s.prefab(4);
>       player.add(s);
>       s.setStartDelay(2.0);
>       System.out.println("launch time: " + JMSL.now());
>       player.launch(JMSL.now());
>   }
> }
>
> class PrintIns extends InstrumentAdapter {
>   public double play(double playTime, double timestretch, double[]  
> dar) {
>       System.out.println("playing " + JMSL.realTime());
>       return playTime + dar[0] * timestretch;
>   }
> }
>
> Thanks
> Nick Didkovsky
>
>
> jmsl at music.columbia.edu wrote:
>> I've just noticed something strange.
>>
>> In the following snippet:
>>
>> shape.setStartDelay(2.5);
>> player.add(shape);
>> player.launch(JMSL.now());
>>
>>
>> "shape" is just a MusicShape and "player" is a Player, but when I  
>> launch the player, it seems to ignore the startDelay setting, and  
>> plays the shape right away. Does the Player somehow change the  
>> MusicShape's startDelay, or just ignore it? I'll probably be  
>> wanting the Player to play a sequence of MusicShapes, some of which  
>> may have different startDelays... Am I missing something?
>>
>> J.
>> _______________________________________________
>> jmsl mailing list
>> jmsl at music.columbia.edu
>> http://music.columbia.edu/mailman/listinfo/jmsl
> _______________________________________________
> jmsl mailing list
> jmsl at music.columbia.edu
> http://music.columbia.edu/mailman/listinfo/jmsl



More information about the jmsl mailing list