Welcome to WSL!

Make yourself at home, but before posting, please may I ask you to read the following topics.


Posting 101
Server space, screenshots, and you

Thank you!

PS. please pretty please:


Image

[Fuse] Time Machine Modifier Fuse

User avatar
SecondMan
Site Admin
Posts: 4456
Joined: Thu Jul 31, 2014 5:31 pm
Answers: 27
Location: Vancouver, Canada
Been thanked: 109 times
Contact:

Re: [Fuse] Time Machine Modifier Fuse

#91

Post by SecondMan » Thu Sep 26, 2019 11:35 am

illuminix wrote:
Thu Sep 26, 2019 3:17 am
this is very interesting. is this intended by design? as in different MODE having influence on each other?
Well, yes :)
illuminix wrote:
Thu Sep 26, 2019 3:17 am
technically, it should be possible to add an expression on "Target Start Frame" and "Target End Frame" to automatically get the inPoint and Outpoint + offset of the incoming Layer?
Absolutely, play with the Offset value in the following setup and see what happens:

Code: Select all

{
	Tools = ordered() {
		Background1 = Background {
			ExtentSet = true,
			CtrlWZoom = false,
			Inputs = {
				GlobalIn = Input { Value = 10, },
				GlobalOut = Input { Value = 34, },
				Width = Input { Value = 200, },
				Height = Input { Value = 200, },
				["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
				Type = Input { Value = FuID { "Gradient" }, },
				GradientType = Input { Value = FuID { "Radial" }, },
				Start = Input { Value = { 0.5, 0.5 }, },
			},
			ViewInfo = OperatorInfo { Pos = { 438, 64.9394 } },
		},
		Transform1 = Transform {
			Inputs = {
				Center = Input {
					SourceOp = "Path1",
					Source = "Position",
				},
				Input = Input {
					SourceOp = "Background1",
					Source = "Output",
				},
			},
			ViewInfo = OperatorInfo { Pos = { 438, 97.9394 } },
		},
		Path1 = PolyPath {
			DrawMode = "InsertAndModify",
			CtrlWZoom = false,
			Inputs = {
				Displacement = Input {
					SourceOp = "Path1Displacement",
					Source = "Value",
				},
				PolyLine = Input {
					Value = Polyline {
						Points = {
							{ Linear = true, LockY = true, X = -0.5, Y = 0, RX = 0.333333333333333, RY = 0 },
							{ Linear = true, LockY = true, X = 0.5, Y = 0, LX = -0.333333333333333, LY = 0 }
						}
					},
				},
			},
		},
		Path1Displacement = BezierSpline {
			SplineColor = { Red = 255, Green = 0, Blue = 255 },
			NameSet = true,
			KeyFrames = {
				[0] = { 0, RH = { 16.6666666666667, 0.333333333333333 }, Flags = { Linear = true, LockedY = true } },
				[50] = { 1, LH = { 33.3333333333333, 0.666666666666667 }, Flags = { Linear = true, LockedY = true } }
			}
		},
		TimeMachine1 = Fuse.TimeMachineImage {
			CtrlWZoom = false,
			Inputs = {
				ImageInput = Input {
					SourceOp = "Transform1",
					Source = "Output",
				},
				Mode = Input { Value = FuID { "Offset" }, },
				Skip = Input { Value = 1, },
				Offset = Input { Value = 43, },
				XFrameNumbers = Input { Disabled = true, },
				ForceTargetRange = Input { Value = 1, },
				TargetStartFrame = Input {
					Value = 53,
					Expression = "Background1.GlobalIn+Offset",
				},
				TargetEndFrame = Input {
					Value = 77,
					Expression = "TargetStartFrame+Background1.GlobalOut-Background1.GlobalIn",
				},
			},
			ViewInfo = OperatorInfo { Pos = { 438, 196.939 } },
			Version = 211
		}
	}
}

Tags:

User avatar
Captain LeBuck
Fusioneer
Posts: 90
Joined: Tue Dec 02, 2014 6:34 pm
Been thanked: 8 times

Re: [Fuse] Time Machine Modifier Fuse

#92

Post by Captain LeBuck » Fri Sep 27, 2019 12:03 am

SecondMan wrote:
Mon Oct 20, 2014 8:20 pm
I must add, though, that while testing this and going between tool controls and modifiers I sure have a strong wish for modifiers to be separate nodes in the future...

Just the ability to see what is connected in what way right in the comp and not having to search through tabs and long lists of interconnected modifiers...
I hear you! I had the same wish which was added to Movalex’s fusion feature wishlist.

User avatar
SirEdric
Fusionator
Posts: 2310
Joined: Tue Aug 05, 2014 10:04 am
Answers: 12
Real name: Eric Westphal
Been thanked: 42 times
Contact:

Re: [Fuse] Time Machine Modifier Fuse

#93

Post by SirEdric » Fri Sep 27, 2019 10:48 am

Captain LeBuck wrote:
Fri Sep 27, 2019 12:03 am
I must add, though, that while testing this and going between tool controls and modifiers I sure have a strong wish for modifiers to be separate nodes in the future...
And I strongly sense that this is a long standing request since ... errr ... Fu5?

User avatar
ShadowMaker SdR
Fusionista
Posts: 873
Joined: Sun Sep 21, 2014 6:17 am
Answers: 7
Been thanked: 32 times

Re: [Fuse] Time Machine Modifier Fuse

#94

Post by ShadowMaker SdR » Sat Sep 28, 2019 1:09 am

This is from february 2003. So yes, we have been talking about this for a long time. :P
We have of course thought about better ways to show all the connections. One
possible way would be to show masks, modifiers and potentially splines on the
flow just like image and particle tools.

User avatar
magdesign
Posts: 22
Joined: Sun Mar 26, 2017 12:36 pm
Contact:

Re: [Fuse] Time Machine Modifier Fuse

#95

Post by magdesign » Thu Oct 10, 2019 5:03 am

I love time machine a lot,
but sometimes I miss some kind of crash manual to use this node. Is there somewhere a .pdf or tutorial?

I have an animation of a flower growing, what I'd like to do is:

Hold first frame for 300f
then play animation until the end (frame 1300)
then ping-pong loop frames between 1000 and 1300 forever.

With trigger or XSheet should something like this be possible, but I am kind of lost.

Currently I always use two loaders and a dissolve node... any help would be amazing!

User avatar
SecondMan
Site Admin
Posts: 4456
Joined: Thu Jul 31, 2014 5:31 pm
Answers: 27
Location: Vancouver, Canada
Been thanked: 109 times
Contact:

Re: [Fuse] Time Machine Modifier Fuse

#96

Post by SecondMan » Thu Oct 10, 2019 11:38 am

Aha! A Time Machine challenge! I accept :)

To do this in a single Time Machine, the "tricky" part is that you want to ping pong loop only a part of your retimed result at the end. Typically the looping capabilities of Time Machine apply to the Target Frame Range, i.e. the entire bit where the retiming happens.

So what you could do, for example, is use two Time Machines. One to do the 30 frame offset at the start, and another to do the ping pong loop at the end.

I've made a quick example of how that could work. I've taken frame 1 as the first frame and worked with your values divided by 10 to keep the resulting numbers a bit more convenient for educational purposes :)
Code: [Select all] [Expand/Collapse] [Download] (WSLsnippet-2019-10-10--11.24.09.setting)
  1. {
  2.     Tools = ordered() {
  3.         TimeCode1 = TimeCode {
  4.             CtrlWZoom = false,
  5.             Inputs = {
  6.                 Hrs = Input { Value = 0 },
  7.                 Secs = Input { Value = 0 },
  8.                 Mins = Input { Value = 0 }
  9.             }
  10.         },
  11.         Text1_1 = TextPlus {
  12.             ViewInfo = OperatorInfo { Pos = { 550, 49.5 } },
  13.             Inputs = {
  14.                 Width = Input { Value = 1920 },
  15.                 ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" } },
  16.                 Font = Input { Value = "Open Sans" },
  17.                 ManualFontKerningPlacement = Input {
  18.                     Value = StyledText {
  19.                         Array = {
  20.                         },
  21.                         Value = ""
  22.                     }
  23.                 },
  24.                 StyledText = Input {
  25.                     Source = "Time",
  26.                     SourceOp = "TimeCode1_1"
  27.                 },
  28.                 Height = Input { Value = 1080 },
  29.                 Style = Input { Value = "Bold" }
  30.             }
  31.         },
  32.         TimeCode1_1 = TimeCode {
  33.             CtrlWZoom = false,
  34.             Inputs = {
  35.                 Hrs = Input { Value = 0 },
  36.                 Secs = Input { Value = 0 },
  37.                 Mins = Input { Value = 0 }
  38.             }
  39.         },
  40.         TimeMachine2 = Fuse.TimeMachineImage {
  41.             Version = 211,
  42.             ViewInfo = OperatorInfo { Pos = { 660, 49.5 } },
  43.             Inputs = {
  44.                 AfterTime = Input { Value = FuID { "DoNothing" } },
  45.                 Hold = Input { Value = 1 },
  46.                 Mode = Input { Value = FuID { "Offset" } },
  47.                 BeforeTime = Input { Value = FuID { "Hold" } },
  48.                 TargetStartFrame = Input { Value = 30 },
  49.                 Offset = Input { Value = 28 },
  50.                 TargetEndFrame = Input { Value = 10000 },
  51.                 SourceStartFrame = Input { Value = 29 },
  52.                 Skip = Input { Value = 1 },
  53.                 ImageInput = Input {
  54.                     Source = "Output",
  55.                     SourceOp = "Text1_1"
  56.                 },
  57.                 ForceTargetRange = Input { Value = 1 },
  58.                 XFrameNumbers = Input { Disabled = true }
  59.             }
  60.         },
  61.         TimeMachine3 = Fuse.TimeMachineImage {
  62.             Version = 211,
  63.             CtrlWZoom = false,
  64.             Inputs = {
  65.                 AfterTime = Input { Value = FuID { "PingPong" } },
  66.                 BeforeTime = Input { Value = FuID { "DoNothing" } },
  67.                 TargetStartFrame = Input { Value = 128 },
  68.                 TargetEndFrame = Input { Value = 158 },
  69.                 XFrameNumbers = Input { Disabled = true },
  70.                 Skip = Input { Value = 1 },
  71.                 ImageInput = Input {
  72.                     Source = "Output",
  73.                     SourceOp = "TimeMachine2"
  74.                 },
  75.                 Mode = Input { Value = FuID { "Offset" } },
  76.                 ForceTargetRange = Input { Value = 1 }
  77.             },
  78.             ViewInfo = OperatorInfo { Pos = { 770, 49.5 } }
  79.         }
  80.     }
  81. }
While it can be done this way, it does require too much fiddling with numbers to my taste, and it's really very error-prone and counter-intuitive. I would not want to build a setup with a dozen of these, all with different values. And the nightmare only continues when you want to change your timing.

But there's a much better and easier way to do this. Enter XSheet mode. Do read the post that I just linked to.

So with Xsheet mode, you can do what you are after with these two lines only:

Code: Select all

1 hold 30 to 130
129 to 100 to 130 loop 10
Line 1 transates to "hold frame 1 for 30 frames, then continue to 130" while line 2 takes care of your loop: "count from 129 to 100 then back to 130 and loop that 10 times". You can loop it 10000 times to get closer to "forever" :)

If you wanted to spit it up further for clarity, you could split that first line this way as well to do the same thing:

Code: Select all

1 hold 30
2 to 130
129 to 100 to 130 loop 10
And here's your Time Machine setup for you to adjust where necessary:
Code: [Select all] [Expand/Collapse] [Download] (WSLsnippet-2019-10-10--11.33.59.setting)
  1. {
  2.     Tools = ordered() {
  3.         Text1 = TextPlus {
  4.             ViewInfo = OperatorInfo { Pos = { 550, 115.5 } },
  5.             Inputs = {
  6.                 Width = Input { Value = 1920 },
  7.                 ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" } },
  8.                 Font = Input { Value = "Open Sans" },
  9.                 ManualFontKerningPlacement = Input {
  10.                     Value = StyledText {
  11.                         Array = {
  12.                         },
  13.                         Value = ""
  14.                     }
  15.                 },
  16.                 StyledText = Input {
  17.                     Source = "Time",
  18.                     SourceOp = "TimeCode1"
  19.                 },
  20.                 Height = Input { Value = 1080 },
  21.                 Style = Input { Value = "Bold" }
  22.             }
  23.         },
  24.         TimeCode1 = TimeCode {
  25.             CtrlWZoom = false,
  26.             Inputs = {
  27.                 Hrs = Input { Value = 0 },
  28.                 Secs = Input { Value = 0 },
  29.                 Mins = Input { Value = 0 }
  30.             }
  31.         },
  32.         TimeMachine1 = Fuse.TimeMachineImage {
  33.             Version = 211,
  34.             CtrlWZoom = false,
  35.             Inputs = {
  36.                 XFrameNumbers = Input {
  37.                     Disabled = true,
  38.                     Value = "0  --  1\n1  --  1\n2  --  1\n3  --  1\n4  --  1\n5  --  1\n6  --  1\n7  --  1\n8  --  1\n9  --  1\n10  --  1\n11  --  1\n12  --  1\n13  --  1\n14  --  1\n15  --  1\n16  --  1\n17  --  1\n18  --  1\n19  --  1\n20  --  1\n21  --  1\n22  --  1\n23  --  1\n24  --  1\n25  --  1\n26  --  1\n27  --  1\n28  --  1\n29  --  1\n30  --  2\n31  --  3\n32  --  4\n33  --  5\n34  --  6\n35  --  7\n36  --  8\n37  --  9\n38  --  10\n39  --  11\n40  --  12\n41  --  13\n42  --  14\n43  --  15\n44  --  16\n45  --  17\n46  --  18\n47  --  19\n48  --  20\n49  --  21\n50  --  22\n51  --  23\n52  --  24\n53  --  25\n54  --  26\n55  --  27\n56  --  28\n57  --  29\n58  --  30\n59  --  31\n60  --  32\n61  --  33\n62  --  34\n63  --  35\n64  --  36\n65  --  37\n66  --  38\n67  --  39\n68  --  40\n69  --  41\n70  --  42\n71  --  43\n72  --  44\n73  --  45\n74  --  46\n75  --  47\n76  --  48\n77  --  49\n78  --  50\n79  --  51\n80  --  52\n81  --  53\n82  --  54\n83  --  55\n84  --  56\n85  --  57\n86  --  58\n87  --  59\n88  --  60\n89  --  61\n90  --  62\n91  --  63\n92  --  64\n93  --  65\n94  --  66\n95  --  67\n96  --  68\n97  --  69\n98  --  70\n99  --  71\n100  --  72\n101  --  73\n102  --  74\n103  --  75\n104  --  76\n105  --  77\n106  --  78\n107  --  79\n108  --  80\n109  --  81\n110  --  82\n111  --  83\n112  --  84\n113  --  85\n114  --  86\n115  --  87\n116  --  88\n117  --  89\n118  --  90\n119  --  91\n120  --  92\n121  --  93\n122  --  94\n123  --  95\n124  --  96\n125  --  97\n126  --  98\n127  --  99\n128  --  100\n129  --  101\n130  --  102\n131  --  103\n132  --  104\n133  --  105\n134  --  106\n135  --  107\n136  --  108\n137  --  109\n138  --  110\n139  --  111\n140  --  112\n141  --  113\n142  --  114\n143  --  115\n144  --  116\n145  --  117\n146  --  118\n147  --  119\n148  --  120\n149  --  121\n150  --  122\n151  --  123\n152  --  124\n153  --  125\n154  --  126\n155  --  127\n156  --  128\n157  --  129\n158  --  130\n159  --  129\n160  --  128\n161  --  127\n162  --  126\n163  --  125\n164  --  124\n165  --  123\n166  --  122\n167  --  121\n168  --  120\n169  --  119\n170  --  118\n171  --  117\n172  --  116\n173  --  115\n174  --  114\n175  --  113\n176  --  112\n177  --  111\n178  --  110\n179  --  109\n180  --  108\n181  --  107\n182  --  106\n183  --  105\n184  --  104\n185  --  103\n186  --  102\n187  --  101\n188  --  100\n189  --  101\n190  --  102\n191  --  103\n192  --  104\n193  --  105\n194  --  106\n195  --  107\n196  --  108\n197  --  109\n198  --  110\n199  --  111\n200  --  112\n201  --  113\n202  --  114\n203  --  115\n204  --  116\n205  --  117\n206  --  118\n207  --  119\n208  --  120\n209  --  121\n210  --  122\n211  --  123\n212  --  124\n213  --  125\n214  --  126\n215  --  127\n216  --  128\n217  --  129\n218  --  130\n219  --  129\n220  --  128\n221  --  127\n222  --  126\n223  --  125\n224  --  124\n225  --  123\n226  --  122\n227  --  121\n228  --  120\n229  --  119\n230  --  118\n231  --  117\n232  --  116\n233  --  115\n234  --  114\n235  --  113\n236  --  112\n237  --  111\n238  --  110\n239  --  109\n240  --  108\n241  --  107\n242  --  106\n243  --  105\n244  --  104\n245  --  103\n246  --  102\n247  --  101\n248  --  100\n249  --  101\n250  --  102\n251  --  103\n252  --  104\n253  --  105\n254  --  106\n255  --  107\n256  --  108\n257  --  109\n258  --  110\n259  --  111\n260  --  112\n261  --  113\n262  --  114\n263  --  115\n264  --  116\n265  --  117\n266  --  118\n267  --  119\n268  --  120\n269  --  121\n270  --  122\n271  --  123\n272  --  124\n273  --  125\n274  --  126\n275  --  127\n276  --  128\n277  --  129\n278  --  130\n279  --  129\n280  --  128\n281  --  127\n282  --  126\n283  --  125\n284  --  124\n285  --  123\n286  --  122\n287  --  121\n288  --  120\n289  --  119\n290  --  118\n291  --  117\n292  --  116\n293  --  115\n294  --  114\n295  --  113\n296  --  112\n297  --  111\n298  --  110\n299  --  109\n300  --  108\n301  --  107\n302  --  106\n303  --  105\n304  --  104\n305  --  103\n306  --  102\n307  --  101\n308  --  100\n309  --  101\n310  --  102\n311  --  103\n312  --  104\n313  --  105\n314  --  106\n315  --  107\n316  --  108\n317  --  109\n318  --  110\n319  --  111\n320  --  112\n321  --  113\n322  --  114\n323  --  115\n324  --  116\n325  --  117\n326  --  118\n327  --  119\n328  --  120\n329  --  121\n330  --  122\n331  --  123\n332  --  124\n333  --  125\n334  --  126\n335  --  127\n336  --  128\n337  --  129\n338  --  130\n339  --  129\n340  --  128\n341  --  127\n342  --  126\n343  --  125\n344  --  124\n345  --  123\n346  --  122\n347  --  121\n348  --  120\n349  --  119\n350  --  118\n351  --  117\n352  --  116\n353  --  115\n354  --  114\n355  --  113\n356  --  112\n357  --  111\n358  --  110\n359  --  109\n360  --  108\n361  --  107\n362  --  106\n363  --  105\n364  --  104\n365  --  103\n366  --  102\n367  --  101\n368  --  100\n369  --  101\n370  --  102\n371  --  103\n372  --  104\n373  --  105\n374  --  106\n375  --  107\n376  --  108\n377  --  109\n378  --  110\n379  --  111\n380  --  112\n381  --  113\n382  --  114\n383  --  115\n384  --  116\n385  --  117\n386  --  118\n387  --  119\n388  --  120\n389  --  121\n390  --  122\n391  --  123\n392  --  124\n393  --  125\n394  --  126\n395  --  127\n396  --  128\n397  --  129\n398  --  130\n399  --  129\n400  --  128\n401  --  127\n402  --  126\n403  --  125\n404  --  124\n405  --  123\n406  --  122\n407  --  121\n408  --  120\n409  --  119\n410  --  118\n411  --  117\n412  --  116\n413  --  115\n414  --  114\n415  --  113\n416  --  112\n417  --  111\n418  --  110\n419  --  109\n420  --  108\n421  --  107\n422  --  106\n423  --  105\n424  --  104\n425  --  103\n426  --  102\n427  --  101\n428  --  100\n429  --  101\n430  --  102\n431  --  103\n432  --  104\n433  --  105\n434  --  106\n435  --  107\n436  --  108\n437  --  109\n438  --  110\n439  --  111\n440  --  112\n441  --  113\n442  --  114\n443  --  115\n444  --  116\n445  --  117\n446  --  118\n447  --  119\n448  --  120\n449  --  121\n450  --  122\n451  --  123\n452  --  124\n453  --  125\n454  --  126\n455  --  127\n456  --  128\n457  --  129\n458  --  130\n459  --  129\n460  --  128\n461  --  127\n462  --  126\n463  --  125\n464  --  124\n465  --  123\n466  --  122\n467  --  121\n468  --  120\n469  --  119\n470  --  118\n471  --  117\n472  --  116\n473  --  115\n474  --  114\n475  --  113\n476  --  112\n477  --  111\n478  --  110\n479  --  109\n480  --  108\n481  --  107\n482  --  106\n483  --  105\n484  --  104\n485  --  103\n486  --  102\n487  --  101\n488  --  100\n489  --  101\n490  --  102\n491  --  103\n492  --  104\n493  --  105\n494  --  106\n495  --  107\n496  --  108\n497  --  109\n498  --  110\n499  --  111\n500  --  112\n501  --  113\n502  --  114\n503  --  115\n504  --  116\n505  --  117\n506  --  118\n507  --  119\n508  --  120\n509  --  121\n510  --  122\n511  --  123\n512  --  124\n513  --  125\n514  --  126\n515  --  127\n516  --  128\n517  --  129\n518  --  130\n519  --  129\n520  --  128\n521  --  127\n522  --  126\n523  --  125\n524  --  124\n525  --  123\n526  --  122\n527  --  121\n528  --  120\n529  --  119\n530  --  118\n531  --  117\n532  --  116\n533  --  115\n534  --  114\n535  --  113\n536  --  112\n537  --  111\n538  --  110\n539  --  109\n540  --  108\n541  --  107\n542  --  106\n543  --  105\n544  --  104\n545  --  103\n546  --  102\n547  --  101\n548  --  100\n549  --  101\n550  --  102\n551  --  103\n552  --  104\n553  --  105\n554  --  106\n555  --  107\n556  --  108\n557  --  109\n558  --  110\n559  --  111\n560  --  112\n561  --  113\n562  --  114\n563  --  115\n564  --  116\n565  --  117\n566  --  118\n567  --  119\n568  --  120\n569  --  121\n570  --  122\n571  --  123\n572  --  124\n573  --  125\n574  --  126\n575  --  127\n576  --  128\n577  --  129\n578  --  130\n579  --  129\n580  --  128\n581  --  127\n582  --  126\n583  --  125\n584  --  124\n585  --  123\n586  --  122\n587  --  121\n588  --  120\n589  --  119\n590  --  118\n591  --  117\n592  --  116\n593  --  115\n594  --  114\n595  --  113\n596  --  112\n597  --  111\n598  --  110\n599  --  109\n600  --  108\n601  --  107\n602  --  106\n603  --  105\n604  --  104\n605  --  103\n606  --  102\n607  --  101\n608  --  100\n609  --  101\n610  --  102\n611  --  103\n612  --  104\n613  --  105\n614  --  106\n615  --  107\n616  --  108\n617  --  109\n618  --  110\n619  --  111\n620  --  112\n621  --  113\n622  --  114\n623  --  115\n624  --  116\n625  --  117\n626  --  118\n627  --  119\n628  --  120\n629  --  121\n630  --  122\n631  --  123\n632  --  124\n633  --  125\n634  --  126\n635  --  127\n636  --  128\n637  --  129\n638  --  130\n639  --  129\n640  --  128\n641  --  127\n642  --  126\n643  --  125\n644  --  124\n645  --  123\n646  --  122\n647  --  121\n648  --  120\n649  --  119\n650  --  118\n651  --  117\n652  --  116\n653  --  115\n654  --  114\n655  --  113\n656  --  112\n657  --  111\n658  --  110\n659  --  109\n660  --  108\n661  --  107\n662  --  106\n663  --  105\n664  --  104\n665  --  103\n666  --  102\n667  --  101\n668  --  100\n669  --  101\n670  --  102\n671  --  103\n672  --  104\n673  --  105\n674  --  106\n675  --  107\n676  --  108\n677  --  109\n678  --  110\n679  --  111\n680  --  112\n681  --  113\n682  --  114\n683  --  115\n684  --  116\n685  --  117\n686  --  118\n687  --  119\n688  --  120\n689  --  121\n690  --  122\n691  --  123\n692  --  124\n693  --  125\n694  --  126\n695  --  127\n696  --  128\n697  --  129\n698  --  130\n699  --  129\n700  --  128\n701  --  127\n702  --  126\n703  --  125\n704  --  124\n705  --  123\n706  --  122\n707  --  121\n708  --  120\n709  --  119\n710  --  118\n711  --  117\n712  --  116\n713  --  115\n714  --  114\n715  --  113\n716  --  112\n717  --  111\n718  --  110\n719  --  109\n720  --  108\n721  --  107\n722  --  106\n723  --  105\n724  --  104\n725  --  103\n726  --  102\n727  --  101\n728  --  100\n729  --  101\n730  --  102\n731  --  103\n732  --  104\n733  --  105\n734  --  106\n735  --  107\n736  --  108\n737  --  109\n738  --  110\n739  --  111\n740  --  112\n741  --  113\n742  --  114\n743  --  115\n744  --  116\n745  --  117\n746  --  118\n747  --  119\n748  --  120\n749  --  121\n750  --  122\n751  --  123\n752  --  124\n753  --  125\n754  --  126\n755  --  127\n756  --  128\n757  --  129\n758  --  130\n"
  39.                 },
  40.                 Mode = Input { Value = FuID { "XSheet" } },
  41.                 ImageInput = Input {
  42.                     Source = "Output",
  43.                     SourceOp = "Text1"
  44.                 },
  45.                 Skip = Input { Value = 1 },
  46.                 XSheet = Input { Value = "1 hold 30 to 130\n129 to 100 to 130 loop 10\n" }
  47.             },
  48.             ViewInfo = OperatorInfo { Pos = { 660, 115.5 } }
  49.         },
  50.         TimeCode1_1 = TimeCode {
  51.             CtrlWZoom = false,
  52.             Inputs = {
  53.                 Hrs = Input { Value = 0 },
  54.                 Secs = Input { Value = 0 },
  55.                 Mins = Input { Value = 0 }
  56.             }
  57.         }
  58.     }
  59. }
magdesign wrote:
Thu Oct 10, 2019 5:03 am
I miss some kind of crash manual to use this node. Is there somewhere a .pdf or tutorial?
There is this topic which I strongly suggest you browse. Honestly I'd love to make a proper manual, but it's a matter of time, and that's a precious resource... ;)

User avatar
magdesign
Posts: 22
Joined: Sun Mar 26, 2017 12:36 pm
Contact:

Re: [Fuse] Time Machine Modifier Fuse

#97

Post by magdesign » Mon Oct 14, 2019 2:50 am

Thank you so much for your help, after looking at your example I finally got an understanding of how xsheet works and how simple it is to make a ping-pong expression.
Its now so much simpler to control and adjust all my blooms timings in the project....

The time machine node is extremely powerful, amazing work!

I hate making tutorials, but it might help someone else having the same question:

User avatar
ShadowMaker SdR
Fusionista
Posts: 873
Joined: Sun Sep 21, 2014 6:17 am
Answers: 7
Been thanked: 32 times

Re: [Fuse] Time Machine Modifier Fuse

#98

Post by ShadowMaker SdR » Sun Mar 29, 2020 1:55 pm

I am a bit confused about using the trigger mode in combination with either an audio file or a MIDI-file.
When using a midi-file I'd like to use ONLY the NOTE-ON effectively. So if a note lasts two beats, I only want to use the part when the note is played for the first time.
I think the trigger option in Time Machine should do what I need, but I don't know how to set it.
For example I have a note that plays from frame 15-18. I want to trigger an event/value only on frame 15. But since the note is constant for 15-18 I don't know how to set the trigger treshold values, since there's no decay in the data. Any suggestions on how to either set the MIDI extractor to use only the NOTE-ON or how to set the Time Machine Fuse to do this for me will be greatly appreciated.

User avatar
SecondMan
Site Admin
Posts: 4456
Joined: Thu Jul 31, 2014 5:31 pm
Answers: 27
Location: Vancouver, Canada
Been thanked: 109 times
Contact:

Re: [Fuse] Time Machine Modifier Fuse

#99

Post by SecondMan » Sun Mar 29, 2020 10:15 pm

I think it can be done in Time Machine if I understand you correctly. Trigger is indeed what you want to use, but there are maybe a few limitations to be worked around.

I find it always helps to remember that Time Machine was built to re-time image sequences. So whenever I need a refresher on how everything works exactly, I feed it a Text+ node with frame numbers.

Here is a quick setup that I think mimic what you are trying to do:

Code: Select all

{
	Tools = ordered() {
		Text1 = TextPlus {
			Inputs = {
				Width = Input { Value = 1920, },
				Height = Input { Value = 1080, },
				["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
				StyledText = Input {
					SourceOp = "TimeCode1",
					Source = "Time",
				},
				Font = Input { Value = "Open Sans", },
				Style = Input { Value = "Bold", },
				VerticalJustificationNew = Input { Value = 3, },
				HorizontalJustificationNew = Input { Value = 3, },
				ManualFontKerningPlacement = Input {
					Value = StyledText {
						Array = {
						},
						Value = ""
					},
				},
			},
			ViewInfo = OperatorInfo { Pos = { 165, 16.5 } },
		},
		TimeCode1 = TimeCode {
			CtrlWZoom = false,
			Inputs = {
				Hrs = Input { Value = 0, },
				Mins = Input { Value = 0, },
				Secs = Input { Value = 0, },
			},
		},
		TimeMachine1 = Fuse.TimeMachineImage {
			CtrlWZoom = false,
			Inputs = {
				ImageInput = Input {
					SourceOp = "Text1",
					Source = "Output",
				},
				Mode = Input { Value = FuID { "Trigger" }, },
				Skip = Input { Value = 1, },
				XFrameNumbers = Input { Disabled = true, },
				Trigger = Input {
					SourceOp = "TimeMachine1Trigger",
					Source = "Value",
				},
				OnTriggerThreshold = Input { Value = 0.8, },
				OffTriggerThreshold = Input { Value = 0.2, },
			},
			ViewInfo = OperatorInfo { Pos = { 275, 16.5 } },
			Version = 211
		},
		TimeMachine1Trigger = BezierSpline {
			SplineColor = { Red = 244, Green = 77, Blue = 57 },
			NameSet = true,
			KeyFrames = {
				[14] = { 0, RH = { 14.3333333333333, 0.333333333333333 }, Flags = { Linear = true } },
				[15] = { 1, LH = { 14.6666666666667, 0.666666666666667 }, RH = { 16, 1 }, Flags = { Linear = true } },
				[18] = { 1, LH = { 17, 1 }, RH = { 18.3333333333333, 0.666666666666667 }, Flags = { Linear = true } },
				[19] = { 0, LH = { 18.6666666666667, 0.333333333333333 }, RH = { 20.3333333333333, 0 }, Flags = { Linear = true } },
				[23] = { 0, LH = { 21.6666666666667, 0 }, RH = { 23.3333333333333, 0.333333333333333 }, Flags = { Linear = true } },
				[24] = { 1, LH = { 23.6666666666667, 0.666666666666667 }, RH = { 28, 1 }, Flags = { Linear = true } },
				[36] = { 1, LH = { 32, 1 }, RH = { 36.3333333333333, 0.666666666666667 }, Flags = { Linear = true } },
				[37] = { 0, LH = { 36.6666666666667, 0.333333333333333 }, RH = { 40.6666666666667, 0 }, Flags = { Linear = true } },
				[48] = { 0, LH = { 44.3333333333333, 0 }, RH = { 48.3333333333333, 0.333333333333333 }, Flags = { Linear = true } },
				[49] = { 1, LH = { 48.6666666666667, 0.666666666666667 }, RH = { 50, 1 }, Flags = { Linear = true } },
				[52] = { 1, LH = { 51, 1 }, RH = { 52.3333333333333, 0.666666666666667 }, Flags = { Linear = true } },
				[53] = { 0, LH = { 52.6666666666667, 0.333333333333333 }, RH = { 54.3333333333333, 0 }, Flags = { Linear = true } },
				[57] = { 0, LH = { 55.6666666666667, 0 }, RH = { 57.3333333333333, 0.333333333333333 }, Flags = { Linear = true } },
				[58] = { 1, LH = { 57.6666666666667, 0.666666666666667 }, RH = { 62, 1 }, Flags = { Linear = true } },
				[70] = { 1, LH = { 66, 1 }, RH = { 70.3333333333333, 0.666666666666667 }, Flags = { Linear = true } },
				[71] = { 0, LH = { 70.6666666666667, 0.333333333333333 }, Flags = { Linear = true } }
			}
		}
	}
}
Image

Think of the Text+ node as your event/value. That's what you want as a result whenever your Midi file produces a NOTE-ON. Your Trigger is the Midi file itself, so that's where I animated a couple of keyframes to simulate that.

As long as nothing happens, Text+ will stay at frame 0 (the Source Start Frame). As soon as the value in the Trigger goes higher than the On Trigger Threshold, the Text+ starts playing back at the Run Speed. This happens on frame 15, where we get frame 1 in the sequence, and 2, 3 and so on for the frames after that. This until the Trigger value goes below the Off Trigger Threshold, at which point the image sequence does whatever the Trigger Mode is set to. In this case that is Reset, so it will jump back to frame 0.

In your case, we only really care about the On Trigger Threshold. The one thing to take away from our example is that you want your event to be at frame 1 of your source, not at frame 0 (what you may assume intuitively).

So knowing this, here's an example on how to do it with input (parameter) values. In this next example, we'll create a BG node and animate our event (a single red frame) on frame 1:

Image

Image

With that done, we have our source "image sequence" and next we need to insert a Time Machine modifier:

Image

This way, we basically have the same setup as our Text+ example, but with numbers instead: Animation Spline -> Time Machine -> Red Channel.

In this case we are not interested in frame numbers, like when we work with image sequences (when we want to know which frame we need for our re-time). Instead, we want the values assigned to those frame numbers, i.e. our "event" that we just animated. So we set our Output Type to Value at Frame:

Image

Notice that when we do that, we get an extra Value Input control, which is our animation on our Background's Red Channel.

With our Mode set to Trigger, all we need to do is modify the Trigger itself with whatever we want our need, in your case that will be a MIDI Extractor I imagine. Set your On Trigger Threshold to an appropriate value and you should be all set!

Image

Here's the background node from my example:

Code: Select all

{
	Tools = ordered() {
		Background1 = Background {
			CtrlWZoom = false,
			Inputs = {
				Width = Input { Value = 1920, },
				Height = Input { Value = 1080, },
				["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
				TopLeftRed = Input {
					SourceOp = "TimeMachine2",
					Source = "Output",
				},
			},
			ViewInfo = OperatorInfo { Pos = { 550, 49.5 } },
		},
		TimeMachine2 = Fuse.TimeMachine {
			CtrlWZoom = false,
			Inputs = {
				OutputType = Input { Value = FuID { "Values" }, },
				ValueInput = Input {
					SourceOp = "TimeMachine2ValueInput",
					Source = "Value",
				},
				Mode = Input { Value = FuID { "Trigger" }, },
				Skip = Input { Value = 1, },
				XFrameNumbers = Input { Disabled = true, },
				Trigger = Input {
					SourceOp = "TimeMachine2Trigger",
					Source = "Value",
				},
			},
			Version = 211
		},
		TimeMachine2ValueInput = BezierSpline {
			SplineColor = { Red = 255, Green = 0, Blue = 0 },
			NameSet = true,
			KeyFrames = {
				[0] = { 0, RH = { 0.333333333333333, 0.333333333333333 }, Flags = { Linear = true } },
				[1] = { 1, LH = { 0.666666666666667, 0.666666666666667 }, RH = { 1.33333333333333, 0.666666666666667 }, Flags = { Linear = true } },
				[2] = { 0, LH = { 1.66666666666667, 0.333333333333333 }, Flags = { Linear = true } }
			}
		},
		TimeMachine2Trigger = BezierSpline {
			SplineColor = { Red = 244, Green = 77, Blue = 57 },
			NameSet = true,
			KeyFrames = {
				[14] = { 0, RH = { 14.3333333333333, 0.333333333333333 }, Flags = { Linear = true } },
				[15] = { 1, LH = { 14.6666666666667, 0.666666666666667 }, RH = { 16, 1 }, Flags = { Linear = true } },
				[18] = { 1, LH = { 17, 1 }, RH = { 18.3333333333333, 0.666666666666667 }, Flags = { Linear = true } },
				[19] = { 0, LH = { 18.6666666666667, 0.333333333333333 }, RH = { 20.3333333333333, 0 }, Flags = { Linear = true } },
				[23] = { 0, LH = { 21.6666666666667, 0 }, RH = { 23.3333333333333, 0.333333333333333 }, Flags = { Linear = true } },
				[24] = { 1, LH = { 23.6666666666667, 0.666666666666667 }, RH = { 28, 1 }, Flags = { Linear = true } },
				[36] = { 1, LH = { 32, 1 }, RH = { 36.3333333333333, 0.666666666666667 }, Flags = { Linear = true } },
				[37] = { 0, LH = { 36.6666666666667, 0.333333333333333 }, RH = { 40.6666666666667, 0 }, Flags = { Linear = true } },
				[48] = { 0, LH = { 44.3333333333333, 0 }, RH = { 48.3333333333333, 0.333333333333333 }, Flags = { Linear = true } },
				[49] = { 1, LH = { 48.6666666666667, 0.666666666666667 }, RH = { 50, 1 }, Flags = { Linear = true } },
				[52] = { 1, LH = { 51, 1 }, RH = { 52.3333333333333, 0.666666666666667 }, Flags = { Linear = true } },
				[53] = { 0, LH = { 52.6666666666667, 0.333333333333333 }, RH = { 54.3333333333333, 0 }, Flags = { Linear = true } },
				[57] = { 0, LH = { 55.6666666666667, 0 }, RH = { 57.3333333333333, 0.333333333333333 }, Flags = { Linear = true } },
				[58] = { 1, LH = { 57.6666666666667, 0.666666666666667 }, RH = { 62, 1 }, Flags = { Linear = true } },
				[70] = { 1, LH = { 66, 1 }, RH = { 70.3333333333333, 0.666666666666667 }, Flags = { Linear = true } },
				[71] = { 0, LH = { 70.6666666666667, 0.333333333333333 }, Flags = { Linear = true } }
			}
		}
	},
	ActiveTool = "Background1"
}
Image

There are simple thing that Trigger doesn't do, like why can't it simply return a single value when a trigger happens? Again, when I needed this functionality I was re-timing image sequences and 3D scenes and that didn't make much sense in that context. Once you start thinking of TM as a tool to adjust parameters with, there are many things like that I'd want to add straight away.

Some day I may :)

Hope this helps!

User avatar
ShadowMaker SdR
Fusionista
Posts: 873
Joined: Sun Sep 21, 2014 6:17 am
Answers: 7
Been thanked: 32 times

Re: [Fuse] Time Machine Modifier Fuse

#100

Post by ShadowMaker SdR » Thu May 21, 2020 8:00 am

@SecondMan I'm trying to use Timemachine on a longer comp (4700 frames) and I'm using a Wav modifier to trigger my timemachine to start/restart a 15 frame loop. I have the feeling that this is much quicker for the first 100 frames than it is for somewhere in the middle/end. Do you think this could be because of the WAV modifier or the timemachine?

User avatar
SecondMan
Site Admin
Posts: 4456
Joined: Thu Jul 31, 2014 5:31 pm
Answers: 27
Location: Vancouver, Canada
Been thanked: 109 times
Contact:

Re: [Fuse] Time Machine Modifier Fuse

#101

Post by SecondMan » Thu May 21, 2020 9:18 am

That would be expected and it's from Time Machine. Trigger is one of those modes that goes over the entire valid timeline range up to the current time. I'm sure there are ways to make that faster, but I'm afraid that's a little further down on the to-do list right now... It should still be reasonable though.

User avatar
ShadowMaker SdR
Fusionista
Posts: 873
Joined: Sun Sep 21, 2014 6:17 am
Answers: 7
Been thanked: 32 times

Re: [Fuse] Time Machine Modifier Fuse

#102

Post by ShadowMaker SdR » Thu May 21, 2020 10:42 am

Right. I expected that when the trigger happens it just goes back to global in/out from the image sequence it's machining. Good to know.

User avatar
SecondMan
Site Admin
Posts: 4456
Joined: Thu Jul 31, 2014 5:31 pm
Answers: 27
Location: Vancouver, Canada
Been thanked: 109 times
Contact:

Re: [Fuse] Time Machine Modifier Fuse

#103

Post by SecondMan » Thu May 21, 2020 11:05 am

It shouldn't go outside Global In/Out - I don't think so anyway. So if you have a short valid range and it's still slow, send me a setup if you can and I'll take a look.

In the meantime, if you want to eliminate Suck Less Audio, set Proxy in there to something like 2000 and see if that makes a difference.

User avatar
ShadowMaker SdR
Fusionista
Posts: 873
Joined: Sun Sep 21, 2014 6:17 am
Answers: 7
Been thanked: 32 times

Re: [Fuse] Time Machine Modifier Fuse

#104

Post by ShadowMaker SdR » Thu May 21, 2020 12:00 pm

It's definitely time machine in this case. I've got a lot of WSL Audios doing all kinds of stuff and it's never slow.

User avatar
djfaktor
Posts: 2
Joined: Wed Nov 28, 2018 11:17 am

Re: [Fuse] Time Machine Modifier Fuse

#105

Post by djfaktor » Tue Jun 02, 2020 12:59 pm

Very beautiful, very beautiful! but is there any user manual? I don't understand how it works, thanks!