Re: Change Figure according to Session Time
- To: mathgroup at smc.vnet.net
- Subject: [mg99033] Re: [mg98990] Change Figure according to Session Time
- From: John Fultz <jfultz at wolfram.com>
- Date: Fri, 24 Apr 2009 03:49:11 -0400 (EDT)
- Reply-to: jfultz at wolfram.com
On Thu, 23 Apr 2009 06:44:17 -0400 (EDT), Sunt wrote: > Hi community, > > First,some definitions following: : : > I'm really puzzled by the following codes: > > Dynamic[ > Clock[1]; > Panel[ > If[pos2 != pos1 && t < 8.1, > pos2 = pos; > pd = dancer[1, RandomInteger[{1, 20}], locators]; > EmitSound[ > Sound[ > SoundNote[ > sn1[[pos]],sn2[[pos]] > ] > ] > ] > ] > > > ] > pos1 = pos; > > ] > > I meant to emit sound and display a dancer figure corresponding to > every change of sound while time passing, but I can't realize it. > > How to do it? > > Thanks a lot! You can't expect a Dynamic expression of the form... Dynamic[ =09<some calculations>; =09<graphic>; =09<some more calculations> ] to produce a graphic. The graphic is hidden by being in the middle of a compound expression. This wouldn't show a graphic if you evaluated it without the Dynamic, so you certainly can't expect it to show a graphic inside a Dynamic. To better understand Dynamic, you should read the beginning and advanced Dynamic tutorials (linked to from the Dynamic documentation), as well as this post of mine from February... http://forums.wolfram.com/mathgroup/archive/2009/Feb/msg00424.html I snipped the .00001 values out of your sn2 and used the following code which illustrates a few different principles. All of this is well documented in the appropriate function documentation, so I won't go into much detail here. DynamicModule[{time, counter = 1, random = 1}, Panel[ Labeled[ Dynamic[ Which[ time < 0.01, counter = 0, counter == 0, counter++, counter == Length[sn2c], Null (* do nothing *), time > sn2c[[counter]], counter++; random = RandomInteger[{1, 20}]; EmitSound[Sound[SoundNote[sn1[[counter]], sn2[[counter]]]]] ]; dancer[1, random, locators]] , Trigger[Dynamic[time], {0, Last[sn2c]}, 1], Top]]] I also added an explicit ImageSize to the graphic to keep it from hopping around. Since the code was a little munged by the process of emailing it, and it was also a little long, I just put a notebook with the working demo here... http://download.wolfram.com/?key=U8N68F Sincerely, John Fultz jfultz at wolfram.com User Interface Group Wolfram Research, Inc.