aspose file tools*
The moose likes Beginning Java and the fly likes beatbox (Headfirst ch 13) Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "beatbox (Headfirst ch 13)" Watch "beatbox (Headfirst ch 13)" New topic
Author

beatbox (Headfirst ch 13)

Paul Paskin
Greenhorn

Joined: May 28, 2007
Posts: 3
Since I can't attach my code here, understanding the context of this question depends on having the Headfirst Java book.

In reference to the BeatBox code in HeadFirst Java, I followed the code from the first edition book, but in J2EE 5. (Edition 1 was written for 1.3 by the looks of it.) The program is supposed to restart the midi sequence after beat 16, but it seems to get stuck and doesn't respond to anything. To be more specific, it seems like the Meta event handler gets called recursively.

I've had a spot of bother (alright it's driving me nuts! ) in that the code for chapter 13 beatbox goes through once and fails to restart the sequence. I inserted a system.out.println("..."); line in the 'meta' method, and it seems that this is being called recursively. I need to break the recursive nature of this evident loop, but I don't know how.

I'd appreciate any help y'all can offer.
Paul Paskin
Greenhorn

Joined: May 28, 2007
Posts: 3
I nailed it! I went hunting down the api for sequencer @ javax.sound.midi, found a method called setTickPosition.
So, in the event that anyone else gets stuck at this point (and by some miracle can find my post), the last method should look like this:

The key was that the sequencer figured that it had played on past tick position 16, and wasn't looking at messages before that point. Resetting the tick position essentially made the sequencer rewind to the beginning.
 
It is sorta covered in the JavaRanch Style Guide.
 
subject: beatbox (Headfirst ch 13)