View Full Version : VJ Keyboard Commands.
Phat
16th November 2005, 17:49
Apparently there have been these keyboard commands I didn't know about that control things live in milkdrop. Apparently in older versions they where on the F1 command list.
Don't know why they got removed, but it would be good to put them back so people know about them.
q zoom in out video layer
a video echo balance
f video echo orientation
g gamma up/down
for each of those letters, shift + letter alters int he reverse direction
<> rotate left right
[] dx left right
{} dy up down
Phat
16th November 2005, 17:57
In the end keyboard commands and re-assignable midi controls would make milkdrop way more expressive live.
[The keyboard commands are already there, people just need to know about them]
Maybe even enough to warrant a full release at some point?
((I want to hear other people's thoughts on this also))
Edit: Does anyone know of anymore of these???
Rovastar
16th November 2005, 18:44
They are already in the documentation
"2. Preset Authoring - Basic
-----------------------
You can edit the properties of the current preset by hitting 'M',
which brings up the "preset-editing menu". From this menu you
can use the up and down arrow keys to select an item. Press
the RIGHT arrow key to move forward through the menu and select
the item (note: you can also hit SPACE or RETURN to do this);
***press the LEFT arrow key to go back to the previous menu.***
Pressing 'M' while the menu is already showing will hide the menu;
pressing ESCAPE will do the same thing. Press 'M' again to bring
the menu back.
Once you've reached an item on the menu whose value can be edited,
use the UP and DOWN arrow keys to increase or decrease its value,
respectively. Changes will register immediately. Use PAGE UP and
PAGE DOWN to increase the value more quickly. Hold down SHIFT
and use the UP/DOWN arrow keys to change the value very slowly.
Hit RETURN To keep the new value, or ESC to abort the change.
If the item you're editing is a text string, you can use the
arrow keys to move around. The Insert key can be used to toggle
between insert and overtype modes. You can hold shift and use
the arrow keys (home, end, left, right) to make a selection,
which will be identified by brackets []. You can then use CTRL-C
or CTRL-X to copy or cut text. CTRL-P pastes. When finished
editing, hit RETURN To keep the new string, or ESC to abort the
change.
You'll want to get into the habit of using SCROLL LOCK whenever
you're making changes to a preset that you intend to save;
otherwise, the preset is sure to keep randomly changing on you.
You might ask me, "why don't you just automatically lock the
preset while the menu is up?" I will answer you, "because in
the instant between exiting the menu and going to save the preset,
the preset might then switch, and you'd lose your changes." Then
you might ask me, "then why don't you just leave it locked
whenever the user makes a change from the menu?" and I will say
to you, "because I hate it when programs do things like that. You
have an idea in your brain about the state of the Scroll Lock key,
because you're the one setting that state. I want your mind to
always be up-to-date." And you might then ask me: "how large is
large?" And I will tell you: "thirty."
There are also some hotkeys that will allow you to change certain
common parameters to the current preset. These are listed below.
MOTION
i/I - zoom in/out
[ / ] - push motion to the left/right (dx)
{ / } - push motion up/down (dy)
< / > - rotate left/right (rot)
o/O - shrink/grow the amplitude of the warp effect
WAVEFORM
W - cycle through waveforms
j/J - scale waveform down/up
e/E - make the waveform more transparent/more solid
BRIGHTNESS
d/D - decrease, increase decay (fades image to black over time)
g/G - decrease, increase gamma (brightness)
VIDEO ECHO effect
q/Q - scale 2nd graphics layer down/up
a/A - decrease/increase alpha of 2nd graphics layer
F - flip 2nd graphics layer (cycles through 4 fixed orientations)"
Phat
16th November 2005, 19:06
That's cool. I think it would be beneficial to have those back in the F1 list.
So that if you forget them you don't have to jump out side of the program to get them back while VJing.
Also it just makes sence to have them listed in the program. (It's not really a long list)
redi jedi
16th November 2005, 20:09
i'm pretty sure i can add those in, not sure if theres room on the help page, but it couldnt be that hard. mabye make it two pages, hitting f1 to change between them or something... and i could prolly add in some more keyboard commands if you guys can think of anything usefull to add..
Phat
16th November 2005, 21:28
I was thinking about an X Y and Z sorta thing for custom waveforms. But I think the best way to do that is 4 re-assignable ones.
That would be really cool.
Eo.S.' Thoughts on the matter (Via AIM):
"it should be 4 keys, prefereably aligned in a arrow keys sort of fashion, liek controls for a video game
that way you can shift in any of the four directions, or use them for something else if you want
they should just return 0 when not pressed, 1 while being pressed, they could be k0-k3"
redi jedi
16th November 2005, 22:04
oh so you mean key strokes that control boolian varaibles that perset authors could use to add user input? that could be cool, and its deffently doable
Eo.S.
17th November 2005, 03:37
oops, i was at work when phat was describing his thoughts on the matter and was thinking x,y,z as just three keys, duh. Phat was saying a control for each of x, y and z.
So rather than 4 keys, make that 6 keys. The key variable for each changes from 0 to 1 when pressed. How exactly those are implemented is pretty open to the author, but 6 keys could give rotation on 3 axes, or forward/back, turn left/right, strafe left/right video game style navigation through a preset [yummmmmm]. Or entirely different behaviour.
4 of those keys should be next to each other in an arrow key style configuration, the other two could be separate but should be next to each other. I'm not sure what the best 4 keys are since i don't remember what's available, I nominate the keypad, but that doesn't work for VJs using a laptop without one. Maybe they should be configurable in an .ini file.
Eo.S.
redi jedi
17th November 2005, 05:45
not sure that we have 6 keys next to each other, i'll have to check... could put options for it in config panel, but i guess if we think about it, and set it up right there wont be much need to change it(if your not using them for navigation type stuff, you prolly dont care how the keys are arranged)
w,a,s,d would be best, and mabye ./ or something. we can always change a current hotkey if we need to
someusername
18th November 2005, 09:55
what about the mouse?
someusername
18th November 2005, 10:46
e.g.
x/y motion -> rotate around point of view
left button down + move -> camera pan
right button down + up/down -> move pov
mouse wheel -> zoom in/out, etc.
hmm? what do you think?
I must say though, I believe it's a little premature talking about such a 'nagivation' feature when we (authors) still make 3d presets with primitive means.
The mathematical calculations necessary to draw a 3d waveform with a custom projection are not that huge, but -with MD's limitations- you have to do them over and over and over and over (for each single frame, recalculating the very same numbers!)...
this brings any decent 3d preset to an unacceptable framerate.
One vector for the cam's position, one for the target's position, a couple of temp vectors to derive the projection/view matrix and finally another 4 (!) vectors to store that matrix... (And it's 3 variables for every vector!) Well you can definitely use some dynamic programming, but, having to do this 4 times in each waveform... is just lame!
So, what I have to propose, is *finally* vector variables/math support in MD. We need a couple of vector variables visible throughout the entire preset, (like q/w)
and be able to reference them directly as a whole, or any component we want (like q={1,2,3} or q.y = -5)
A global matrix variable is also necessary to precompute and store the projection in order to use it directly in custom waveforms. You can't compute the same result for every waveform and use all of your q/t variables to pass it to the per-point code!
We'll need 4D vectors however, instead of 3D to keep the compatibility with matrices.
A couple of dot/cross product functions would also come in handy, (however they're not that necessary if you can at least precompute the result and access it from any part of the preset)
I -personally- wouldn't even consider that 'navigation feature' you are talking about without *basic* 3d math support.
I mean, we have to bring a preset down to 30fps to display some basic 3d! What good is this navigation going to be? bring it down to 20?
Phat
18th November 2005, 15:23
I think you're over thinking this.
someusername
18th November 2005, 15:49
Maybe... But i've needed these features at some point or another and maybe so have others too. MD's primary target isn't realtime 3d, but this is a forum about its development,
so why not facilitate the use of 3D in the future?
edit:
I only suggested this when this 'navigation feature' came up.
It seems to me that most authors don't do 3d stuff because of MD's limitations. Reasonably imo, since you need three variables to describe a single vector. And what if you want to pass it to another section of the preset?
I suppose if there was a built-in way, like SetProjection(pos, lookAt) and v1=Project( someVec ) it would make things easier. (not to mention the computational overhead that would be saved)
I don't know, that's my 2 cents and maybe i *am* overthinking this. However, I'd like to know what all of you think
Eo.S.
18th November 2005, 15:59
whoa now, there's no need for vectors or matrix transforms to "navigate" through a 3d waveform. Just add values from the keyboard input to the position or rotation. Imagine taking your magic ride preset and using keyboard input to shift the view angle or control the speed of advancing through the "tunnel", we're just modifying variables that already exist, no impact on framerate at all.
It's just keyboard triggers than can modify whatever we want.
ex.
wave per frame
//rotation around object
yrot = yrot + (K1 * 0.03) - (K2 * 0.03);
t1 = yrot; //used as y rotation angle in wave per pixel
//move camera in and out
camz = camz + (K4 * 0.03) - (K4 * 0.03);
t2 = camz; //added to Z before doing camera perspective divide
no hit to framerate at all. The variables could easily be implemented with "acceleration/inertia" too to make for smooth movements.
//20 frames to go from no rotation to full rotation and vice versa
k1_smooth = if( K1, k1_smooth + 0.05, k1_smooth - 0.05 );
k1_smooth = max( k1_smooth, 0 );
k1_smooth = min( k1_smooth, 1 );
yrot = yrot + k1_smooth;
someusername
18th November 2005, 16:13
I see... I just thought this interaction would take place at 'milkdrop level', not within the preset. Anything new is always welcome :)
edit: I just believe that basic 3d support (just 2 or 3 predefined vector variables and a matrix, maybe some dot product too) would help boost 3d presets a lot.
Phat
18th November 2005, 16:29
"So why not facilitate the use of 3D in the future?"
I think we should if it is possable. I know if it is, I'll end up toying with it for hours...
I'm just saying in regards to this X Y Z you're overthinking. We don't need matrices/dot products/etc to do the 'navigation' stuff that me and Eo.S. are talking about.
I think what we are talking about can come before all that 'real' 3d stuff.
redi jedi
19th November 2005, 01:04
i *really* want 3d shapes and waves! right now i'm checking out this render engine OGRE (http://www.ogre3d.org/index.php?option=com_content&task=view&id=19&Itemid=79)
it can run directx9, OR openGL!! i might just be dreaming here, but i think i'm gonna try to integrate it.. not sure yet, but it looks like its pretty programer frendly, and some of the demos are sweet
humm i just thought of a really quick work around for 3d custom waves/shapes(mabye shapes), i could just add a z var(actualy i thinks its already there) then run x,y,z through one of those nifty 3d to 2d transion algoritems we currently use (x=x1/z1 or whatever), as far as the gcard is concerned its 2d, so it prolly wont be any faster, but it will be built in, so we dont have to copy paste all that code every time we want something 3d....
also, i was looking at MDs code, and found out that the support functions for 3d mode are already in place(function that sets up 3d when passed the matrices and what not), so i followed the directions in the code comments and made a call to prepare3ddrawing(...) or something, after setting up a few matrices with constant values. it compiled, and kinda looked funny, so i guess that means it works, i just need to figure out how to render in 3d, and there should be 3d objects flying around... i think.. i dunno
anyway one way or another, i want built in x,y,z for custom waves at least.... even if its not true 3d
oh and i updated my website, i think i fixed it for 800x600
Phat
20th November 2005, 23:54
"oh and i updated my website, i think i fixed it for 800x600"
Cool, I clicked on the add like 10 times or something.
redi jedi
21st November 2005, 03:13
SWEET thanks, i've been doing it on every computer i can find, dont rember what they said the minium was but if you dont stay above some level they'll just delete your shit, i dont even think they give you any warning. actualy now that i think about it the only good thing about my webhost is they have asp.net for free, i got sick of there page that shows the hits and what not, it took like 5 min.+ each time you changed your view(today, yesterday..), so i just made my own, pretty soon here i'll add a counter for each page, and if i can figure it out, the zips too
Aberration
21st November 2005, 15:22
Thanks for fixing your website resolutions guys. Makes them much more accessible. I'll go and look at that side banner Redi and click it also.
redi jedi
21st November 2005, 15:26
sweet! it doesnt even tell me how many people have clicked on it, so i know weither or not to worry...
vBulletin® v3.8.6, Copyright ©2000-2013, Jelsoft Enterprises Ltd.