Sunday, December 7, 2008

Saya developer's meeting #3 (2008-11-28) chat log

<Rigoberto> Good evening..
<nekohayo> hello~!
<rick_777> evening
<rick_777> Ok
<rick_777> this meeting is officially open
<Rigoberto> nice that we chat together tonight...
<rick_777> Tonight we will discuss the progress so far and what's
expected for the next month
<Rigoberto> perfect
<rick_777> First, i have to announce that due to my new job, the
expected development time on Saya might become restricted to weekends
<rick_777> and occasionally on weekdays, depending on how heavy the workload is
<rick_777> Second, as you have seen in the mailing list, an IP lawyer
has volunteered to help us in anything legal.
<Rigoberto> ok
<Rigoberto> that's great
<nekohayo> oh, haven't seen that, but I haven't checked mail today
<nekohayo> I wonder why though
<rick_777> Also, Rigo and I have been working on the playback controls.
<Rigoberto> in case it turns out we violate a strange patent no one knows about
<rick_777> yup.
<rick_777> Anyway - I'm still undecided whether to do the fun and
entertaining GUI stuff, or to keep debugging the boring core stuff
<Rigoberto> yup Rich has been very helpful with that thanks again Rich
<rick_777> it might depend on my mood, but I'd really like to have
those nice round buttons to give the fans some eye-candy
<rick_777> that usually keeps them interested
<Rigoberto> what about both?
<rick_777> Good idea :)
<Rigoberto> :)
<rick_777> Anyway, I don't know how much time i'll be able to work.
The playback controls SHOULD become functional by january 2009.
<rick_777> which is unfortunate, as I see the deadline extending more
and more :(
<rick_777> Perhaps this would be a good time to encourage more recruiting ;-)
<nekohayo> rick_777: you mean actually controlling playback, not just
the visual widgets, I hope
<rick_777> nekohayo: Yes. Actually controlling playback
<rick_777> So we go to the Research and Development section
<rick_777> There's a library called libcairo, that is great for
drawing vector graphics. It might become useful in the timeline
<rick_777> and to modify effects
<nekohayo> cairo actually is part of gtk now, afaik.
<Rigoberto> afaik?
<nekohayo> as far as I know
<nekohayo> cairo is pretty much used a lot throughout the gnome desktop
<rick_777> But to keep my promise about the project, we'll need to
embed the cairo library in saya
<rick_777> to avoid dependency hell
<nekohayo> it's what draws pretty vectors, graphs, widgets, whatever
<rick_777> Rigo, how do you feel regarding your wxWidgets skills?
<nekohayo> dependency hell: hmm. is that really such a bad thing?
you're imposing yourself a ton of additional/unnecessary workload, no?
<rick_777> nekohayo: Dependency hell is what made it impossible for me
to install the kdenlive video editor on my machine. It was
<Rigoberto> Rich: improving... what's my next task?
<rick_777> I don't want to step on the same stone.
<nekohayo> you just have to properly document what are the dependencies<
<nekohayo> so that users can get it compiled easily. every last one of them.
<rick_777> nekohayo: The problem isn't knowing what the dependencies
are, but having to download them if your distro doesn't provide them.
<rick_777> having the source code in the same package is a big
productivity boost for users
<nekohayo> well, if you have some really obscure ones, yes you can embed them
<rick_777> ok
<nekohayo> but cairo is mainstream.
<rick_777> Rigo, here's your next homework:
<rick_777> we still need a jog control
<nekohayo> yeah I see your point
<nekohayo> but it's additional workload for you, possibly. anyway.
<Rigoberto> do we?
<rick_777> to avoid getting the "oh no, this is too complicated!
*brain block*" syndrome,
<rick_777> we'll split your task in various subtasks:
<rick_777> 1) Draw the widget using the wxwidgets functions. Just the
little circle with a tiny circle inside it.
<rick_777> 2) Make it more appealing, like perhaps adding a shadow and
background color
<rick_777> 3) Parameterize the drawing depending on a private variable
(like "angle")
<rick_777> 4) Capturing the mousedown event (the name may be
different) to switch on a "dragging mode"
<rick_777> and popping a messagebox saying "dragging enabled"
<rick_777> 4.1) Perhaps with that you could change some color in the
jog control, like making the little tiny circle glow red
<rick_777> like a LED light, that'd be cool
<rick_777> 4.2) When the mouse button is released, make the tiny
circle stop glowing
<nekohayo> is a jog control really that important?
<rick_777> yes, it is.
<rick_777> it's essential for professional video editing
<nekohayo> from my experience, I never needed one/even knew it
existed. it didn't in vegas.
<rick_777> and there are some hardware widgets that implement a jog
<nekohayo> the thing is
<Rigoberto> Rich: I tought we already discussed this point in the list
<rick_777> you connect them to usb, and the video editor (like Canopus Edius)
<rick_777> reacts
<rick_777> um, perhaps i didn't make myself clear.
<Rigoberto> Rich: and if I remember well we agreed not to include it
<nekohayo> isn't the jog control a bit premature?
<rick_777> i apologize for the confusion.
<nekohayo> when there is no rendering/playback/splitting/tracks
<rick_777> We agreed not to include it in the first "release" of the
controls - which we already have in SVN.
<rick_777> nekohayo: I need the jog control to test the playback engine
<nekohayo> ah
<nekohayo> oh, that explains
<rick_777> right now i'll be able to test it using limited features
<Rigoberto> Rich: have you seen avidemux?
<rick_777> like play, fast forward, etc. But jog control is much more precise
<rick_777> Once, I think. let me check.
<rick_777> ah, i see it. It's pretty basic IMHO
<rick_777> everyone, please look at this.
<nekohayo> why yes, it's the pro editing keyboard
<rick_777> see the jog control in there?
<nekohayo> here's a reality check, however.
<rick_777> oh?
<nekohayo> most linux users or home editors don't have this
<rick_777> but our plan is not to make a home editor
<rick_777> but to make a professional editor
<nekohayo> all things start up non professional though, unless you
develop behind closed doors for a few years :)
<rick_777> granted, small steps, but the jog is a step we can make,
and besides, making a jog control will become a great training for
Rigo. It's much easier than making the timeline controls
<nekohayo> alright
<rick_777> no pressure there :)
<rick_777> so, may I continue on your homework?
<Rigoberto> Rich: an important milestone is functional controls right?
<rick_777> Exactly!
<rick_777> and according to the development plans,
<rick_777> we need a functional player for version 0.1
<Rigoberto> Rich: Insted of the jog control can I help in implemeting
the control functions instead?
<rick_777> the wha?
<rick_777> please be specific, what do you mean with "the control functions"
<Rigoberto> making the controls work
<rick_777> OH!
<rick_777> Well...
<rick_777> the problem is that we don't know how functional the
playback engine is
<rick_777> so i need to do it step by step: Implementing one control,
<rick_777> and i'm still not sure what part goes where
<rick_777> so i'd rather have you doing something in a more controlled
(pardon the pun) environment
<rick_777> But if you want, you could work on the skeleton for the
control functions
<Rigoberto> I would feel like If contribution was more valuable if I
can help you making the controls work
<Rigoberto> my contribution I mean
<rick_777> actually, i think the jog is much more valuable
<rick_777> perhaps it turns out that the button control functions are
just one-liners
<rick_777> Ok, tell you what. This month we'll work together on that
<rick_777> if i beat you to it and end up doing it myself (because it
could be very easy), no hard feelings.
<Rigoberto> ok
<rick_777> But the jog control is something i really need, and i don't
have the background to do it
<rick_777> but there are tutorials on making your own widgets
<rick_777> so if you do that, your level would really increase
<rick_777> and your abilities would complement mine, and viceversa
<rick_777> besides, the real reason why i'm asking you to do it... is
<rick_777> i need someone to work on the timeline controls
<Rigoberto> what's the diference between the slider we already have
and the jogĂ‚¡
<rick_777> you know, moving clips around...
<rick_777> the slider should have a "spring effect" that when you drop it,
<rick_777> it goes back to the center and playback is paused.
<rick_777> Let's imagine that you implement a jog control using a
slider (which you won't).
<rick_777> if you drop the control,
<rick_777> the thumb bar goes back to the middle, but playback doesn't
change. Well, the moment you move it, playback is paused and frames
advance as long as you move the control
<rick_777> how should i put it...
<rick_777> jog control is like a car's wheel. You move it right, the
car moves right.
<rick_777> the shutter control (the slider we have) is like the
accelerator pedal
<rick_777> the more you push it, the faster it goes
<rick_777> so that's basically the difference between the jog and the shutter
<Rigoberto> If I understand correctly
<Rigoberto> avidemux does that with a single slider...
<Rigoberto> is there a program that implements your idea to see it clearly
<rick_777> yes, adobe premiere ^_^
<rick_777> let me find a youtube video
<Rigoberto> thanks
<nekohayo> I always thought the jog was a thing of the past that was
made to compensate for VCR/analog devices' lack of precision
<nekohayo> and irrelevant in the world of frames and keyframes
<nekohayo> I guess I'll have to see that video and see how it is
relevant nowadays
<Rigoberto> I like the way avidemux implements it
<Rigoberto> I think its intuitive
<rick_777> okay um....
<rick_777> the problem is, i haven't seen avidemux
<rick_777> but i'll try to install it so i can see how it works
<nekohayo> apt-get it
<nekohayo> :P
<rick_777> not in the repo :P
<nekohayo> wtf, it is
<nekohayo> at least in debian/ubuntu?
<nekohayo> ;)
<rick_777> not in mepis.
<rick_777> ugh.
<rick_777> ok, mind explaining how avidemux works?
<Rigoberto> why don't you install over your winblows installation
<rick_777> OK
<rick_777> booting it up...
<rick_777> downloading...
<rick_777> ah - here's the official adobe premiere explanation for the
jog/shuttle controls
<rick_777> and btw, i can see a situation where a professional editor
needs the jog control
<rick_777> the jog control not only works for input video playback, it
will also work to preview the output video
<rick_777> so imagine you're doing a lip-sync editing
<rick_777> and you need precise control over which frame goes where
<rick_777> (in premiere, you would move the jog control and you could
hear the corresponding audio - even if it's tenths of a second
<rick_777> Ok
<rick_777> i'm running avidemux now
<rick_777> i'm loading a .vob file from a dvd
* nekohayo slaps forehead at the overcomplexity of premiere's interface :)
<rick_777> ugh! I need to copy it to the HD
<rick_777> brb
<rick_777> Ok
<rick_777> loaded
<rick_777> so what's the part you want me to do?
<Rigoberto> use the jog disk
<rick_777> what jog disk?
<Rigoberto> beside the video slider
<Rigoberto> over the selection word
<rick_777> well that's not a jog
<rick_777> that's the shuttle
<rick_777> but yes, I see how it works
<rick_777> however it only works when trying to seek a determinate
instant in time
<rick_777> btw, i'd love the shuttle control in Saya to look like that
<rick_777> ;-)
<Rigoberto> yeah it looks nice
<rick_777> do you think you could copy it? ;-)
<Rigoberto> got to talk to the lawyer first
<Rigoberto> :p
<rick_777> lol
<rick_777> anwyay
<rick_777> i still i see no valid reason why NOT to implement the jog control
<rick_777> please enlighten me
<Rigoberto> can you please explain what the jog does
<rick_777> ok
<nekohayo> except development time, nope
<rick_777> imagine...
<rick_777> that the avidemux slider is a toothed like
<rick_777> line
<rick_777> like with gears
<rick_777> but flat
<rick_777> and imagine the jog control is a gear that goes just below it
<rick_777> and connects to it
<rick_777> so if you move the jog clockwise, the timeline slider goes forward
<rick_777> if you move it counterclockwise, the timeline slider (NOT
the shuttle! btw, but the main slider) goes backward
<rick_777> but in a very tiny scale
<rick_777> like one frame per 15 degrees change in the jog
<rick_777> can you see it?
<Rigoberto> so it has large resolutioin
<rick_777> yes
<rick_777> i've needed to use the jog in the past
<Rigoberto> I think I got it but I would like to try it. Do you know
whether there is a trial?
<rick_777> ?
<rick_777> OH
<rick_777> please watch this
<rick_777> it's an Edius Pro promotional
<rick_777> go to 1:34
<rick_777> and you'll see what i want to do
<rick_777> hmmmmmmmm perhaps i'm mistaking the jog with the shuttle
<rick_777> i need to document myself better
<rick_777> either way, see how the mouse is moving clockwise and the
video advances?
<rick_777> pardon me, it's 1:33
<rick_777> actually i think it'd be useful to watch the complete promo
<rick_777> go ahead, i can wait :)
<rick_777> btw, the promo was of course done 100% with Edius
<rick_777> this is where we want to go
<Rigoberto> wow nice piece of software
<rick_777> how does avidemux fare now? ;-)
<rick_777> anyway
<rick_777> did you see how the mouse moved clockwise and
counterclockwise and the video responded?
<Rigoberto> yup
<rick_777> well
<Rigoberto> I still why to try premiere tough
<rick_777> later we might be able to implement such gestures
<rick_777> but i have this idea
<rick_777> have you ever done this in MS Paint?
* nekohayo takes a look
<rick_777> you click on a point, and start moving the mouse clockwise
<rick_777> when in "select" mode
<rick_777> no, wait
<rick_777> better select the "line" tool
<rick_777> click on a point, and then start moving the mouse
<rick_777> clockwise
<rick_777> are you doing it?
<Rigoberto> yup
<rick_777> so, the line follows the mouse pointer
<rick_777> and the axis is constant
<rick_777> now if you draw an imaginary horizontal line....
<rick_777> the two lines would form an angle
<rick_777> the variation of that angle
<rick_777> corresponds to the playback speed when using the jog
(shuttle?) control
<rick_777> the little circle inside the knob
<rick_777> would follow the mouse
<rick_777> the little circle would be the equivalent of the spinning
line you just moved in mspaint
<rick_777> and as it spins clock/counterclockwise, the video advances
forward and backward
<rick_777> as i said, it's a control not so easy to make, but it's necessary
<rick_777> at least for professional users
<Rigoberto> isn't the jog control going to like premiere's?
<Rigoberto> going to look I mean
<rick_777> nope. Premiere's design is counterintuitive
<rick_777> you need to unclick, move the mouse to the left, click,
move it to the right, etc
<rick_777> it's a mess
<rick_777> if you make it circular, you could theoretically advance a
whole blockbuster movie just by moving the mouse in circles
<Rigoberto> I thought you said you wanted ours to look like it
<rick_777> the shuttle control, yes
<rick_777> but i think avidemux's is prettier :)
<Rigoberto> avidemux shuttle is very similar to premiere's jog
<rick_777> yes, but premiere has a shuttle, too!
<Rigoberto> yup just above the jog
<rick_777> it's the tiny slider just above the jog
<rick_777> as you can see, the style varies, but the functionality is
more or less the same
<rick_777> so here are my new requirements:
<rick_777> * Make the slider look like avidemux's shuttle control
<rick_777> or jog, or whatever it's called.
<rick_777> * Make the jog control circular, like a knob with a red
"LED" indicating the direction it's pointing to
<rick_777> * Make the buttons behave just like avidemux (i'll take care of that)
<rick_777> So I guess that sums up what we'll work on this month
<rick_777> k?
<Rigoberto> what about the steps you were saying...
<rick_777> that's all about the jog control
<rick_777> let's review them
<rick_777> 1) Draw the widget using the wxwidgets functions. Just the
little circle with a tiny circle inside it.
<rick_777> 2) Make it more appealing, like perhaps adding a shadow and
background color
<rick_777> 3) Parameterize the drawing depending on a private variable
(like "angle")
<rick_777> ) Capturing the mousedown event (the name may be different)
to switch on a "dragging mode"
<rick_777> and popping a messagebox saying "dragging enabled"
<rick_777> 4.1) Perhaps with that you could change some color in the
jog control, like making the little tiny circle glow red
<rick_777> like a LED light, that'd be cool
<rick_777> 4.2) When the mouse button is released, make the tiny
circle stop glowing, and the jog is released
<rick_777> 4.3) if you can, when the jog button is pressed, make the
mouse pointer invisible
<rick_777> 4.4) when the mouse button is released, also move the mouse
to exactly where the tiny red light was
<rick_777> oh, i guess i forgot step 4.1.5)
<rick_777> move the redlight along with the mouse
<rick_777> just get the coordinates of the mouse pointer and calculate the angle
<rick_777> 4.5) The hard part will be implementing a "step"
measurement to calculate how much the mouse was moving in a certain
time, and trigger an event
<rick_777> we can leave 4.5) for last.
<Rigoberto> ok
<rick_777> I'm sure you can do that with a little wxwidgets research
and practice
<rick_777> i KNOW you can do it.
<rick_777> grasshopper :P
<Rigoberto> :)
<Rigoberto> lol
<rick_777> well , that's all for today.
<rick_777> any other questions?
<Rigoberto> are you going to send the chat log?
<rick_777> yes, but my computer might crash and the log could get lost
<rick_777> better take precautions
<rick_777> any other questions?
<Rigoberto> noup
<rick_777> Ok then :)
<rick_777> This meeting (and log) is officially closed.
<Rigoberto> good evening folks


Billy said...

Would jog hardware be helpful? I have one of these things that I would be happy to donate:

I personally found it to be utterly useless for editing though... I dunno how people actually work with these things. I find the keyboard and mouse much easier to handle.

rick_777 said...

Thank you so much for the offer! Right now we're still trying to get the UI to work. Later we can focus on getting it to work with actual specialized hardware (that'll be for a much later stage).

But if you're throwing it away, tell us first ;-)

By the way - how did you learn about Saya?

Billy Clontz said...

Not sure, but I think I was looking for info on using Blender as an NLE, and then found a blog post or forum post or something that mentioned saya.