Value Historian Patch, 20090105 beta discussion

cwright's picture

Discuss problem, limitations, and enhancements for the Value Historian beta :)

mfreakz's picture
Thank you !

Thank you so much ! I was hoping this patch for month...

gtoledo3's picture
Ok, I'm doing something

Ok, I'm doing something wrong.

My test consists of this... a teapot in a trackball and the value historian in record. I hit render, wiggle the pot around, hit stop. Then I go over and hit playback, and turn render on, expecting the pot to wiggle...

Incorrect usage?

PreviewAttachmentSize
VH test.qtz1.87 KB

cwright's picture
yeah, that's basically 100% wrong :(

You need to have value passed through it in order to record/replay them. You don't have the patch attached to anything, so it can't record anything. Check the inspector panel.

Unfortunately, there's no way to make this work with trackballs, since the values they use aren't exposed for recording.

Check this one out:

PreviewAttachmentSize
VH test2.qtz12.02 KB

gtoledo3's picture
Damn you, actually USING

Damn you, actually USING settings. When they are your plugs, I automatically don't even look there. I was thinking "wow, Chris outdid himself, you don't even need inputs, and the info is getting stored in the qtz somehow now!"... but that didn't quite match your description so I knew something was awry :o)

This looks like the structure tools write to plist thing, but arranged differently... hmmm... iiiinteresting.

(edit:??? It IS stored in the qtz... geeez... this is freaky... there's a ghost in the machine!).

cwright's picture
roids

It's kinda like a timeline patch on steroids (but with a much less convenient interface). Import/Export is simply for convenience (so you can archive runs, for example) -- perhaps a future version will store multiple sets of data as "takes" or something, and let you swap them on the fly. The default/intended fanciness is storing the values in the composition, so you can have human-driven data recorded for future playback.

Two things I've noticed: it'd be nice to have the number of recorded values, and the recording duration. (Easy to add both, expect them in the next beta)

[P.S. -- that ghost is me wiggling the mouse! it's like cave painting, only with bits...]

gtoledo3's picture
It's funny you said that...

It's funny you said that... my first two thought were "that's Chris!" and then "ghost in the machine"...oooh spooky.

It immediately transfers the impression of "human" movement, as opposed to anything that someone would have programmed.

gtoledo3's picture
Oh definitely... if you do a

Oh definitely... if you do a recording duration, add a "pre-roll" in there (eg., how many seconds until recording starts) if possible.

A pre-roll feature in addition to duration, it might logically lead to a "punch in" feature to overwrite data in specific portions of the timeline? So, if you had a qtz where you were recording 60 seconds, if you wanted to do a "punch in" you could adjust the pre-roll to 30 and the duration to 35, and just overwrite that 5 seconds.

The only reason I think that would be cool, is because of the fact that it is (to use audio terminology again) like a hard splice, or similar to something I would do in automating faders or pan positioning... It would allow some immediate "jumps" in positioning and settings that could be potentially appealing.

cwright's picture
timebase

It's already in there, sorta, via the timebase. Just make sure you record in smallest to biggest order, time-wise.

make the timebase external, set it to your pre-roll amount + stopwatch time, and you're in business.

Perhaps a future version will just remove the old data from the range of newly recorded data... not sure how I'll solve that yet, but it'd be nice.

cwright's picture
slow :(

Another problem: I get a max of around 35-45 fps using this in record mode. After some profiling, it appears as though marking a composition as "modified" after every recorded frame is a bad thing (it makes QC freak out and reevaluate a ton of stuff internally). Removing it, I get ~100-120 fps (using the sample comp mentioned above), so I'll try to modify this to be useful, without being a huge performance hit.

SteveElbows's picture
Ahh its great

Wow, this is great stuff :)

The new beta's record performance is so much better.Ive just used it to record the last note and velocity data from midi input plugin, works a treat so far.

I was pondering whether it would be good to have the ability to re-record only certain variables whilst leaving others intact, but I suppose I can just use multiple instances of the patch to achieve this?

Nice one, with this and Kineme3D you've made the end of 2008 and the start of 2009 rather special.

toneburst's picture
Naming Inputs/Outputs

Might be handy to be able to name the inputs/outputs. I guess you'd be able to name the inputs, and the corresponding output would automatically be assigned the same name.

Nice work though. Looking forward to having a play with this one! I have a feeling it might work nicely with the SpaceNavigator, which I haven't used in a while.

a|x

SteveElbows's picture
+1 vote for takes, although

+1 vote for takes, although as with my other post about additional feature, I wonder if multiple instances of the patch can be used to emulate this feature for now.

gtoledo3's picture
You are right about the

You are right about the multiple instance thing I think, from playing with this more...

I wonder how many of these I can have before the computer goes kablooey. I need to go download the new one...

gtoledo3's picture
I plopped your movement into

I plopped your movement into another comp and it works fine. Nice. I am liking the idea of being able to keep a variety of "movements" for reference.

PreviewAttachmentSize
warp test.qtz14.68 KB

cwright's picture
sorta?

It could kind of work for takes, though it'd be a pain to swap around a bunch of noodles to get it working happily for complex recordings. multiplexers would help I guess.

Any design ideas for takes? (inputs, outputs, etc).

cwright's picture
palette

Yeah, it should work with copy/paste too, so once something is recorded, it's there till reset/re-record. Kinda like those annoying YakBak toys from the late 90's... :)

For midi sequence stuff, this could also be pretty slick (recording midi inputs, then replaying loops and stuff to output)

cwright's picture
lots?

It's mostly a function of how much you're recording -- theoretically it's limited to about 1 billion values under ideal circumstances -- practically speaking, it's probably limited to ~10-20 million samples total. If we rolled our own file format, and made it save to external files, it would be essentially unlimited (though it wouldn't pack into a composition nicely until 64bit QC became popular...)

gtoledo3's picture
Not only that, you can setup

Not only that, you can setup the mouse to enable patches via movement... set it up with the kineme audio, and it is an actual sampler of sorts. I can see that there are more implications to this than immediately meet the eye!

strontiumDog's picture
grapple

this patch seems to have record or play as one of it's ins, but i can't see how to use it to record values. in the VH test qtzs at the start of this post, the patch just exists, but i can't then seem to work it and there doesn't seem to be anything in the patch settings which i can grapple with.

cwright's picture
switch

The Record/Playback input controls whether it's in Record or Playback mode.

It records values at each time it executes when in record mode, and plays them back when in playback mode (based again on time).

So to use it, you'll want to stop the composition (cmd-.). Make sure it's in record mode. Then start it (cmd-r). At this point, it'll be recording values. Once you've finished recording, stop the composition (cmd-.).

To play back the recorded data, make sure the patch is in playback mode, and start the composition. At each time, it'll output what it recorded on the recording run (finding the closest value for each time).

It's also possible to use it interactively, but you then have to modify its timebase. That's somewhat advanced, and I've not got any useful illustrations of how you'd want to do that off the top of my desktop.

Maybe someone else will provide a sample composition that's more enlightening...

gtoledo3's picture
Oooh, please note that mine

Oooh, please note that mine doesn't work! Mine was the question, and Chris's a working response. I was trying to figure out how to get it going...

You might want to take Chris's, save as whatever, and then put it in record mode via settings... then stop it, put it back and playback and mess around more.

I'm sure I'll have some value historian stuff pretty soon... I already have some, but am still getting a feel for creating smooth motion with my trackpad.

cwright's picture
nameage

So, I was dabbling with the name stuff a bit (it's somewhat unexplored territory, nothing too ground breaking though), and came up with this:

When nothing is in the name text box, it defaults to the standard "Input X"/"Output X" pairs.

thoughts?

[As a side effect, this also give you some localization abilities :)]

PreviewAttachmentSize
ReallyLongName.png
ReallyLongName.png58.72 KB

toneburst's picture
Looks Good

to me (though I doubt anyone is likely to use a name that long).

a|x

gtoledo3's picture
That's nice!

That's nice!

gtoledo3's picture
I don't know if it was

I don't know if it was coincidence, the fact that I closed entirely out of QC and restarted or what; I am getting way quicker playback frame rates on a composition I was working on, with this update.

cwright's picture
rates

The initial beta was rather slow when recording. The second was considerably faster, and the third (20090110) should be about the same (a tiny bit slower to save/load, due to the port name stuff, but inconsequential in the grand scheme of things).

Plugins don't get reloaded until you restart QC, so if you left it running across an upgrade, perhaps you didn't let it reload. shrugs (Note to self: KinemeCore 0.2 should have an uptime clock so you know how long it's been since you restarted QC :)

gtoledo3's picture
Nah, after thinking about

Nah, after thinking about it, I think it was actually b/c I was rendering in Quartz Crystal at the time of my initial playbacks, and that my loading the latest Value Historian and the Quartz Crystal finishing probably loosely coincided. I did definitely have the second version installed.

I always close out of Quartz Composer when loading new plugins.... and to anyone that stumbles on this discussion, don't ever swap out plugins while you are working on something, especially if you haven't saved the file. I don't know if it still happens, but if I was lazy and didn't do that, it would invariably crash QC, even if I wasn't using said plug-in in the actual qtz. It took maybe two times of that happening to learn my lesson. That said, I have done it one or two time since on purpose, one time with no weirdness, and another with some pretty weird effects on the patch list.

gtoledo3's picture
Before I start blowing stuff

Before I start blowing stuff up... is there QCStructure support that is compatible with "save" yet (I remember that initial caveat)?

cwright's picture
snap

No, structures aren't supported...

Not sure if I'll add that or not -- in Leopard it's pretty easy, but I think that might all change in Snow Leopard (making future-proofing a bit more tricky)... I'll spend some time this coming week checking this out, but I can't make any promises yet.

gtoledo3's picture
lee...per request...

I don't really know how useful this is... all it really does is to show a "line of thought"... and a way of setting up timebase of the value historian with an interpolation to change aspects of the playback. It's not exactly the same as what I rendered to Vimeo, since I accidentally saved over some changes.

It's fairly interesting to change the interpolation styles. I put this one in "exponential" because I think that has an interesting effect and interplay with the original "natural" mouse movement.

One thing that is evading me is a perfect loop. It seems like if I was to set everything to linear, loop, and 67.07, which is the duration of the recording, and connect everything that could possibly be controlled by timebase to the interpolation, that it should perfectly loop when it gets to 0.

THIS composition is NOT setup with that in mind actually... but Chris, I am curious about that... if you would like for me to upload an example of what I think should perfectly loop in the way that I recorded it, I can. However, it seems like even this should loop when it gets back to "0". The placement of the "particle cluster" at 0 looks almost correct, but not quite.

I notice when I hover over the numeric value of the interpolation, it never seems to actually get to 67.07... it seems to get up to shy of that, 67.03. I don't know if that is a glitch of "hovering" or if the patch is actually having a problem with values that go to the hundredth.

PreviewAttachmentSize
value historian thang.qtz36.53 KB

gtoledo3's picture
actually...

It turns out I do have the qtz, from before I started messing around with tweaking it with external timebase madness.

PreviewAttachmentSize
Untitledvalue3.qtz36.26 KB

leegrosbauer's picture
Very helpful studies. Thanks

Very helpful studies. Thanks George, much appreciated.

cwright's picture
timeage

I think you're right -- it never seems to hit 0 or the last value stored (from checking stuff out a beta or two ago). I'll try to check the search algorithm and tweak it to get these outliers as well.

(algorithm is a stock binary search, so searching a million recorded values only takes 20 checks or so. pretty snappy :)

gtoledo3's picture
If it's any consolation, I

If it's any consolation, I actually think the organic never quite repeat thing has a certain charm :o) I did try rounding up to the next highest whole number, and adjusting everything accordingly with the idea that whole sequence would just be slightly longer, but perhaps repeat correctly...but that didn't make a difference either.

I'm going to have to experiment with looping back and forth somewhere in the middle of the "timeline" on a smaller portion...

cwright's picture
found it

Ok, did some testing last night, and found out the mistake (was trashing the last few iterations of the search by using the wrong values -- my highschool comp sci teacher would kill me ;), I'll post a new beta today after some more cleanup.

gtoledo3's picture
Cool, that is good news!

Cool, that is good news!

strontiumDog's picture
cheers again

thanks for the info Christopher.

given that i've got logic sending midi requests to my qtz triggering most of the patches (which apparently makes my use quartz crystal redundant), so that i can interfere through the use of midi for live contexts, and that value historian won't allow output to .mov (and looks like in order to get all the values recorded together makes my hierarchy very complex - but probably simplified with spooky?), if i wanted to render this qtz sequence with the music which is sequenced at the same time, i'm thinking value historian into quartz crystal, or else getting a screen recorder, and then using final cut or maybe max/msp/jitter to create something for vimeo which is in time.

basically looking at setting up a reliable workflow so any advice on whether VH is for me gratefully received. s

cwright's picture
recommendations

First, absolutely do not use spooky if normal noodles will work -- I've spent way too much time trying to figure out what compositions were doing due to abuse of the spooky patch. (Spooky's initial intention was to get values out of red macros, but it became a "I don't want to publish all these ports!" crutch, unfortunately)

You can have multiple historians in a composition, no problems there. Consolidating as much as it reasonable would be good, but if you need a few scattered all over, it shouldn't hurt.

VH works well with audio from the few uses of it that I've seen. It's still new enough that anything anyone does with it is a bit experimental, and will cover new ground somewhat.

gtoledo, any experience using VH with audio thus far?

toneburst's picture
What's The Reason

not to use the Spooky patches to avoid lots of noodles, out of interest? I must admit, I've used it that way myself in the past.

a|x

cwright's picture
retraction/refactored

I guess, to be more clear:

It's fine to use it however you'd like. However, I must be honest, and say that when I see them in use in a non-trivial composition that someone submits for bug hunting, I'm certainly less than excited because I can't follow the values to see where things happen. This consumes a lot of time hunting down how stuff propagates through the composition (and with dynamic spooky channels in use, it's a crapshoot at best), and it shows that the user reporting the problem couldn't be bothered to even try pruning things down to help us out.

The creator of a spooky-using composition has a much better grasp of how data flows through their comp than we do, and is in a much better position to cut out non-pertinent stuff, allowing us to watch the interesting stuff, not all the fluff.

gtoledo3's picture
I missed this post! I have

I missed this post! I have used it for audio, for the audio to generate some values, and then I've just randomly plugged that into things after the fact...

I'll try to post something of that nature, if I have anything worthwhile as an example...

To be clear though, it is really cool is you don't mind thinking out of the box. If you conceive of a pulse you want something to move as, you can even sit there and use the audio input to value historian and slap on your table to get values.

I've used it more like that, than to a musical performance so far.

jersmi's picture
can i get this patch?

i'm signed up for beta testing-- can i try this out? i see no place to download it...

cwright's picture
buggage

There's a bug that occasionally crops up with this site that disable beta access even when the "I want to be a beta tester" check box is checked -- looks like you were one such account. I've manually fixed it, so you should be able to see beta stuff now (sorry about that).

I think smokris fixed this a couple months ago, but not all accounts have been checked yet..

jersmi's picture
thanks so much. got it.

thanks so much. got it.

gtoledo3's picture
BTW, this makes me feel very

BTW, this makes me feel very "illicit"... I was using some John Bonham bootlegs to record some values... using multiplication to fine tune the desired "scale/amplitude" of the values. So wrong, yet so right. Haven't done anything with it, but it is very interesting to think of visuals in a rhythmic way, without actually making it audio reactive... just using the rhythm for the values.

SteveElbows's picture
I cleared my browser out a

I cleared my browser out a few weeks ago. The beta section vanished for me, I found that if I unticked the beta checkbox, then saved changes, then checked it again, it reappeared. Cookie related?

cwright's picture
saveage

Not cookie related. Basically:

There are several roles for users on this site. Only administrators can modify this. However, we use a module that allows for a single role to be opt-in by the user -- we let Beta Testers fall into that category (opt-in, without needing admin approval/administration).

However, the module that does that has a bug where if you modify any other personal settings, it undoes the role change, but not the check box state. resetting the box manually, or having an admin change the role on your account manually, will restore it.

snerg's picture
Playback not working for me?

Value Historian is crashing my QC when I switch to playback and run it. qtz example included.

0x91d55591: -[QCContext renderPatch:time:arguments:] 0x91d55366: -[QCGraphicsContext renderPatch:time:arguments:] 0x91d5426b: -[QCOpenGLContext renderPatch:time:arguments:] 0x91d5410a: -[QCPatch(Runtime) render:arguments:] 0x0000e352 0x91ddb23f: -[QCView render:arguments:] 0x91ddad79: -[QCView startRendering:] 0x0000da47 0x91ddaaa7: -[QCView startRendering] 0x957af5e8: -[NSToolbarButton sendAction:to:] 0x957af579: -[NSToolbarButton sendAction] 0x957aeafa: -[NSToolbarItemViewer mouseDown:] 0x956691a3: -[NSWindow sendEvent:] 0x95635d49: -[NSApplication sendEvent:] 0x0000e41d 0x9559369f: -[NSApplication run]

PreviewAttachmentSize
historian test.qtz4.44 KB

gtoledo3's picture
It looks to me like you

It looks to me like you didn't have the output ports attached to the sprite when you were recording this... I had this happen a couple of days go (same exception was raised) and I felt like an ass when I realized what I was doing. (edit: not that YOU should feel like an ass, lol.... it's just that I had a similar thing happen a week before, so I should have known better....).

cwright's picture
b0rkage

Yeah, that's a bug in the current beta -- I've got a fix for my local build, but I've not made a beta of it yet :( I'll get to it sooner or later...

itsthejayj's picture
Thxs again, great plug in

Great plugin! remember when qc 2 first came out always wanting some way to record inputs. Using this primary for recording incoming midi notes and cc from Ableton Live, and playing back for rending in Quartz Crystal.

Having some problems at moment however: anything i doing wrong?; crash report

0x9503b591: -[QCContext renderPatch:time:arguments:] 0x9503b366: -[QCGraphicsContext renderPatch:time:arguments:] 0x9503a26b: -[QCOpenGLContext renderPatch:time:arguments:] 0x9503a10a: -[QCPatch(Runtime) render:arguments:] 0x0000e352 0x950c123f: -[QCView render:arguments:] 0x950c0d79: -[QCView startRendering:] 0x0000da47 0x950c0aa7: -[QCView startRendering] 0x9584153b: -[NSApplication sendAction:to:from:] 0x958f017c: -[NSMenu performActionForItemAtIndex:] 0x958efe81: -[NSCarbonMenuImpl performActionWithHighlightingForItemAtIndex:] 0x958efb07: -[NSMenu performKeyEquivalent:] 0x958ee3ac: -[NSApplication _handleKeyEquivalent:] 0x9580b16b: -[NSApplication sendEvent:] 0x0000e41d 0x9576869f: -[NSApplication run]

cwright's picture
guessing

The report's a bit sparse on details (I'm guessing it threw an exception?), but I'll take a stab --

In the current release version, it explodes if you try to replay after adding inputs (it tries to read from unrecorded port histories, and 'splodes). Try re-recording with all ports present, and ten replaying.

I've got a built I should betaify that fixes this...

itsthejayj's picture
Overdub

Also anychance for a overdub feature? When overdub is switch on, existing values get mixed with, rather than replaced by, newly recorded values.

cheers chris

cwright's picture
sorta?

It's perhaps possible -- however, it's probably dodgy.

Currently, each value is recorded with a timestamp based on QC time -- these almost never repeat (because framerates vary tiny amounts, etc). so mixing would be as expensive as playing and recording, plus a tiny amount of overhead. This probably isn't significant, but it is a fair amount of code. I'll see what I can whip up when I have a moment.

itsthejayj's picture
God i really want this plugin !!

I'm really thinking this could be the most important plugin in my qc arsenal ! Only problem is its not working well for me :( i know its in early beta days, so i hope it will help if i throw some exception at you Chris, hope you don't mind bud.

On attach is a comp of an exception being raised

*** -[QCBooleanPort rawValue]: unrecongnized selector sent to instance 0x171ca180

0x9503b591: -[QCContext renderPatch:time:arguments:] 0x9503b366: -[QCGraphicsContext renderPatch:time:arguments:] 0x9503a26b: -[QCOpenGLContext renderPatch:time:arguments:] 0x9503a10a: -[QCPatch(Runtime) render:arguments:] 0x0000e352 0x950c123f: -[QCView render:arguments:] 0x950c0d79: -[QCView startRendering:] 0x0000da47 0x950c0aa7: -[QCView startRendering] 0x9160ce1a: _nsnote_callback 0x91bae8da: __CFXNotificationPost 0x91baebb3: _CFXNotificationPostNotification 0x9160a080: -[NSNotificationCenter postNotificationName:object:userInfo:] 0x916138c8: -[NSNotificationCenter postNotificationName:object:] 0x9582daae: -[NSWindow _reallyDoOrderWindow:relativeTo:findKey:forCounter:force:isModal:] 0x9582d700: -[NSWindow orderWindow:relativeTo:] 0x957f5092: -[NSWindow makeKeyAndOrderFront:] 0x0000d829 0x95775b4d: -[NSDocument showWindows] 0x95a50901: -[NSDocumentController openDocumentWithContentsOfURL:display:error:] 0x0001aea0 0x0001ae17 0x95ac50ba: -[NSApplication _doOpenFile:ok:tryTemp:] 0x95b07f8a: -[NSApplication openFile:ok:] 0x95bb3330: -[NSDocumentController(NSPrivate) _openRecentDocument:] 0x9584153b: -[NSApplication sendAction:to:from:] 0x958f017c: -[NSMenu performActionForItemAtIndex:] 0x958efe81: -[NSCarbonMenuImpl performActionWithHighlightingForItemAtIndex:] 0x958ccb5a: AppKitMenuEventHandler 0x96979143: DispatchEventToHandlers(EventTargetRec*, OpaqueEventRef*, HandlerCallRec*) 0x9697857d: SendEventToEventTargetInternal(OpaqueEventRef*, OpaqueEventTargetRef*, HandlerCallRec*) 0x96994ed2: SendEventToEventTarget 0x969c923d: SendHICommandEvent(unsigned long, HICommand const*, unsigned long, unsigned long, unsigned char, OpaqueEventTargetRef*, OpaqueEventTargetRef*, OpaqueEventRef**) 0x969efa8f: SendMenuCommandWithContextAndModifiers 0x969efa4c: SendMenuItemSelectedEvent 0x969ef95e: FinishMenuSelection(MenuData*, MenuData*, MenuResult*, MenuResult*, unsigned long, unsigned long, unsigned long, unsigned char) 0x969cc4ec: MenuSelectCore(MenuData*, Point, double, unsigned long, OpaqueMenuRef**, unsigned short*) 0x969cbed7: _HandleMenuSelection2 0x969cbd4b: _HandleMenuSelection 0x9580950b: _NSHandleCarbonMenuEvent 0x9577026a: _DPSNextEvent 0x9576f630: -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] 0x9576866b: -[NSApplication run] 0x00003792

PreviewAttachmentSize
midi record - historian.qtz6 KB

cwright's picture
Re: God i really want this plugin !!

It doesn't seem to like booleans (which internally are handled differently from other port types for some reason...) -- try putting a math Expression patch before it, with the expression "val" (input is output) -- that should convert it to a number (not a boolean).

jersmi's picture
Value Historian patch not showing up?

Installed in ~/Library/Graphics/Quartz Composer Patches. Help?

gtoledo3's picture
Re: Value Historian Patch, 20090105 beta discussion

Close and restart QC?

jersmi's picture
Re: Value Historian Patch, 20090105 beta discussion

got it, thanks. strange-- the patch has been installed for a while but didn't show up when i went to have a look at the .qtz's in this thread. no idea...

jersmi's picture
Record/Playback Input Splitter?

I can't seem to get an input splitter to work with record/playback? I'm trying to insert a Value Historian between the keyboard patch and the javascript patch in the "qc_keyboard+double+backspace.qtz" from this post: http://kineme.net/Discussion/DevelopingCompositions/QCkeyboardmessage

I know you said booleans are no good-- i inserted a "val" mathematical expression patch after the keyboard patch. no unconnected ports. trying to get the value historian to record the timing of typed text. possible?

cwright's picture
Re: Damn you, actually USING

gtoledo3 wrote:
I was thinking "wow, Chris outdid himself, you don't even need inputs, and the info is getting stored in the qtz somehow now!"

actually (now that I've not thought about VH for a few months) -- this could be possible (with the caveat that it has to be evaluated before the trackball). It would do this by recording the mouse event stuff passed to the composition, and then it would re-inject it in "playback" mode (pretty simple).

Any interest in that? (mostly this would help record trackball stuff)

gtoledo3's picture
Re: Damn you, actually USING

Hmm, that would be pretty awesome.

That's kind of cool! ... I haven't used the trackball in forever, partially because of VH. It is kind of cool how the trackball has that inertia control, and you can toss stuff around.

I would say, that's a pretty gnarly update, because there is no longer any patching!

{One thing that has been popping up with this patch, and I keep meaning to regress to see if it's always been a problem, or if it popped up later on...

If I put in a value historian to record keyboard key on/off stuff, ala recording myself doing particle paint... most the time when I hit a force, like hitting the space button for whatever effect... when I go into replay mode it will trigger the force, but go "too fast" (I think), for the force to turn off. This isn't only with particle tools... it would happen if I try to use key clicks to turn on/off render patches or something like that as well.}

cwright's picture
Re: Damn you, actually USING

Yeah, there are some pretty severe issues with single-frame events (or just events that only live for a very very short time) and VH -- if they're too fast, VH can skip over them when it's playing back.

sorta like this:

frame num: 0123456789
event val: 0100001100

If, on playback, the frame timings jitter enough to skip over frame 1 (in time), it might miss the event. the event at 6-7 is less likely to get skipped (2 frames of time), but it's still pretty easy for QC to drop 2 frames.

In retrospect, there should be 2 types of historians: a "smooth" recorder (for mouse stuff, or audio levels, or any continuous value), where it can blend between values if the render frame time is between recorded frame times; and an "event" recorded, where events (bools, key presses, mouse clicks) get recorded verbatim, and then get replayed as exactly as possible -- on rendering, it never skips an event (however, to never skip it'll have to warp time a little bit, so clicks/key presses may happen anytime +-1 frame from when they actually happened when recorded).

I'll keep thinking about this ...

gtoledo3's picture
Re: Damn you, actually USING

Yep, it's funny you say it like that... that was totally my thought. I tried messing with smooth and round patches before things hit the value historian (or maybe I was being stupid and put it after, which totally wouldn't work). It seems like I wasn't too successful, but I also think it was one of those "at my wit's end, almost falling asleep" kind of nights.

The value historian is a hidden, ultimate QC solution for so many things. If the key click thing could be resolved... this is a simple way to put it... but that's a great deal of an animation/physics engine right there (albeit all manual)! You can have a setup that triggers pre-recorded value historian stuff, so that at time x, your sprite jumps up and down, or moves off screen and turns off.

What I envision is an animator setting up something like a head with a "jawbone" so that the mouth moves to audio (like in my parametric 3D head example), and recording that value info with the historian... though I guess someone could trigger off the actual audio file. That's already totally possible and I use that all the time. Recording audio values with value historian is a really easy shortcut to make natural looking movement sometimes. If the VH had the mouse click stuff sorted out, it would be a heck of an animation tool (among other things).

One thing I've been dyyyying to do is to record "spraypaint" type of stuff with particle paint, and the forces, but I always come to an thud when things stay in spiral mode and never go back :) I'm really glad you posted on this old thread today, because it's one of those things I keep meaning to bring up, and I forget.

offonoll's picture
Re: Record/Playback Input Splitter?

Any of you got good resoults? I get wrong message as some of you, but is this patch gonna release soon ;)

It just comes great ideas to use it.

Imagine this patch plus one timeline path with inputs (don't exist yet) to edit the wrong values. Good job.

offonoll's picture
Re: Historian recording structures?

Hi! I am using historian for recording position so I can set points to a structure and recording them in Historian patch to shoot them later in a sequence but I just find out that I can't record structures! Is that difficult to implement? any beta out there?

Thank you!

bangnoise's picture
Re: Historian recording structures?

http://kriss.cx/tom/2009/09/sampler/

Not identical to the Kineme Value Historian but might work for you

gtoledo3's picture
Re: Historian recording structures?

I think Steve has mentioned that recording structs is something that can happen... I know a static structure can be grabbed (not w/ Value Historian).

Hmm, thanks Bangnoise... I had noticed that plugin before but hadn't tried it. It would be cool if you could look into recording mesh (as far as I understand it, this is impossible b/c the mesh data isn't serialized... this is a little bit over my head.)

Also... this would be really useful if data could persist across saves like with the value historian.

offonoll's picture
Re: Historian recording structures?

The idea is to record previews position to play them as a seq. here is a sample.

PreviewAttachmentSize
Record mouse position.qtz24.71 KB

gtoledo3's picture
Re: Historian recording structures?

You can always record the values before they get made into structure.

offonoll's picture
Re: Historian recording structures?

True! but one .plist file for every value? I'll see if there is any update soon or I will do it that way. Would be also greate to load or save from input parameters.

:)

Best!

gtoledo3's picture
Re: Historian recording structures?

Oh. Can't you just make a value historian with multiple inputs? That would create one plist.

I admit, I don't really use the save to file aspect of VH much. I have used to file writer to save x/y/z structure and reload, but performance doesn't seem too good....there is a hit every time you load.

The thing that is cool about VH to me is that it saves the data in the composition without having to port a bunch of files around. If I want multiple performances I setup patch time so that each time I record, the start time is a large interval from the last time. Then, if I want to replay various performances, I just choose the correct start time.

offonoll's picture
Re: Historian recording structures?

If I record the values, I am triggering the movement and I dont' want that. I want to be able to choose members and create a seq. if you see the composition, is the queue 'collecting' the data first. So I may be using any xml saving patch that I don't know.

My porpuse of this is to set camera movements by choosing the views I like and with the smooth traveling from one to the other and create a nice and automatic animation. :D

Very useful for smooth travelings and camera movements/paths.

jeremydouglass's picture
Re: Value Historian Patch, 20090105 beta discussion

Hi -- I've been reading through the various Value Historian posts/threads from the last 2 years. Are there known issues with its ongoing beta status? It has been in beta a very long time after what sounded like a final pre-release, which makes me a bit nervous.

gtoledo3's picture
Re: Value Historian Patch, 20090105 beta discussion

Yeah, keyboard up and down stuff. It has a problem catching key up events. I know there's a way to workaround that, but I can't remember offhand.

The suggestion (up above) of making sure the "boolean" is a "number" first doesn't work, and neither does conversion to index value. I've tried all manner of hooking keyboard to pulse (to detect leading and trailing), tried employing a counter+range.... none of it works. I think I may have had success smoothing the keyboard output before it hits VH, but that's not great.

This patch would be really useful if it caught keyboard events with accuracy. Also, support for structure input type would be handy - then also other types, like QCMesh and K3D.

jeremydouglass's picture
Re: Value Historian Patch, 20090105 beta discussion

Thanks. After recently reading your post about queues (http://www.georgetoledo.com/2010/01/queue-control-2-image-queue-structur...), I actually implemented my own version of a simple Value Historian as two javascript patches -- one for playing a structure back as many channels, and one for recording many channels as a structure or CSV string. Value Historian is superior in most ways to my simple Javascript patches with the exception that my patches take an input log file and an output log file as standard ports, so I can choose from many different log files without editing the Composition -- for example, while using Quartz Crystal (which is why I wanted value playback in the first place).

It probably isn't related, but I had a similar problem with missing pulses when it took my playback patch a long time to execute under heavy Composition load. Because I was using my patches on either side of a OSC Sender / Receiver boolean channels, I added a minimum frame rate in milliseconds. I was noticing dropped signals on playback and concerned that the javascript was sometimes returning two sets of values faster than the OSC Sender could consume the first set at 25Mhz -- I'm not sure if it made a difference.

Because I was working with pulse channels I was only recording high signals, not lows, so in order to prevent pulses running into each other during playback (two highs with no low in-between) I added a clear phase -- every pulse channel gets set to low for a frame before the next value can be returned so that two high frames don't bleed into each other. I found was that the combination of a framerate and a clear phase meant that that a channel queue could pile up and fall behind the clock, but (in theory) it wouldn't drop signals. Still trying to make it more reliable, and trying to figure out if I can throw the whole thing out and wrap something around Value Historian instead.

jersmi's picture
Re: Value Historian Patch, 20090105 beta discussion

Opening George Toledo's comp demonstrates for me a consistent problem I have with the VH patch -- turns number inputs into "reset" booleans.

In my own patch, the screenshot shows the typical error message I get when trying to use the VH. (in this test case x/y pos for a sprite). After xlosing/reopening QC, copying and pasting all into a new comp does copy some of the recorded animation (not the entire), but all ins/outs are "resets".

I had a comp I made 8 or 10 months ago to capture drawing gestures -- it worked great and I was loving the VH. In recent months I only have these consistent problems.

Advice welcome.

jersmi's picture
Re: Value Historian Patch, 20090105 beta discussion

By the way, smokris, it looks like you updated the patch? I downloaded, Date Modified says Jan2009, looks like there's an improvement with the inputs not switching to resets, but lots of errors when trying to switch to external timebase. as if the original problem cwright mentioned about the patch confusing timebase input with reset might still be looming?

anyway, i keep coming back to this because it is such a nice idea, but it never quite works out...