Archive: AVS Wishlist


5th October 2001 18:14 UTC

AVS Wishlist
Huge wishlist for AVS, not sure if it should go here or in AVS discussion... Some ideas are more realistic than others, but all should be considered.

- Wrap-ability for dynamic shift (have to use a 1x1 DM now)
- XOR, bit-negation and bit-shifting operators (^, ~, >>, <<)
- Add built-in constants like pi, 2pi, pi/2, e, ln(2), log2(e), ... into the language.
- Ability to set dot-size for drawing (like line-width)
- Ability to change between dot/lines mode in a SSC dynamically per frame and per point
- A complete change out of resolution-dependent units. They are still used in line width, font size, ... Or provide the option for pixel-units or avs-units (0..1)
- Replace all color selectors by either a color-blender (like most are now) or add a piece of code to assign red/green/blue-values.
- Add "current" to the buffer-list for Buffer Blending an effect-list. This would be like placing a Buffer Save at the end of your effect list and using that as blend-buffer.
- Add a contrast slider to the buffer-blending mode for effect-lists. It would apply this contrast to the blend-buffer in order to provide a quicker transition from transparent into opaque.
- Document *all* functions :) (missing functions docs: atan2 and exp). Exp would probably not be used a lot, but atan2 is vital for conversion between cartesian and polar coordinates.
- Expand the 'language' with conditional jumps and returns. It would allow much better code to be written. Of course you would need to teach people things like "minimize the number of jumps" or "make sure that the lesser frequent outcome of condition causes the jump and not the most frequent outcome".
- Fix a dynamic movement not handling extremely large (both pos and neg) alpha values too well. Auto-clamping would be nice.
- An option to alternatively mirror movements and/or dynamic movements in both X and Y direction. Like the alternate buffer save/restore. Preferably separate for X and Y.
- An option to alternatively switch between 2 user defined movements, like alternate buffer save/restore.
- Even better: allow 'n' movements to be entered and let the presetter write an expression that sets a var to a value in the range 0 - (n-1) selecting the correct movement table.
- (this is hard to explain) A checkbox for the Dynamic movement that, when wrapping is on, chooses the nearest X,Y coordinates for a gridsquare (preferably separate checkbox for x and y). For example when one gridspot contains the coordinate (0.1,0.1) and the next contains (0.99, 0.99), then it would convert the second into (-0.01,-0.01). Or of course the first into (1.1,1.1), so that the 'shorter route' is taken instead of the long route for interpolating the pixels in between.
- A checkbox for the dynamic movement that, when wrapping is on, tiles the image mirrored at the edges so that you don't get non-matching edges. The same as using x=asin(sin(x*1.57))/1.57. Preferably separate for X and Y.
- Ability for APE's to use the built-in expression evaluation library...or make it publicly usable through a DLL.
- Ability for Render -> Bitmap to read JPEG and PNG (support is standard built-in into Windows98 and higher). No GIF, because GIF is bad (software patents suck) and PNG is a much better replacement.
- Improved beat detection. I've noticed that it performs bad even on techno tracks where there is a clear beat. Maybe AVS' b-detection is made for unclear beats and weird drums? (Idea: a simply "nudge" button that allows the user to indicate a beat... press the button a few times yourself in order to hint AVS in the right direction -> handy for VJ's)
- An explanation of just what those sliders in Colorfade mean... I think most people sorta get them, but a correct description would be nice :)
- Syntax hilighting and bracket colouring
- No length restriction on code (ok an 8K limit should be acceptable :)
- Multi-line editboxes everywhere... I like to space out my code. Perhaps adding tabs to the more complex effect-dialogs would help?

I think that's about it... for now :)


17th October 2001 17:32 UTC

AVS
An 'always on top' feture would be nice with AVS. Typing while watching AVS would be really cool, esp on Win2K! :D


7th December 2001 04:03 UTC

ah shit, it seems i posted my wish on the false place.
But it should be noticed so watch here:
http://forums.winamp.com/showthread.php?threadid=67912


7th December 2001 17:53 UTC

Wow! That's some wish list! While I wouldn't pretend to understand everything (without resorting to A-Level pure math which I've long forgotten!) I couldn't agree more with it...

On the beat detection, I made a post to this forum about that, but a button (mentioned in UnConed's post) is much better than my idea of just clicking the mouse - though a key binding would be useful for performing the same operation when in full-screen mode.

On the language side of things I'd love to see a full blown AVS language including all the usual gubbins like flow control operations (repeat..until, while..do, if..then..else, case..of), commenting (/*..*/, //..CRLF), sub-routine definitions (function cube(x)=x*x*x), additional unary and binary operators (div, mod, shl, shr, inc, dec, etc.). Possibly, expanding on UnConed's idea of a syntax highlighting editor, simply combine all the event boxes (OnInit, OnFrame, etc) into one large syntax highlighting editor in which one would write :


event OnInit { /* some code */ }

event OnFrame { /* some more code */ }

event OnPoint { /* yet more code */ }


I realise all of this sounds like a pipe dream, but it's not actually that complex. While I've no idea about graphics coding, I've got fairly extensive experience of language parsing and code-planting / compilation and it's not acutally that difficult! Once you've got some code that can parse your language, syntax highlighting becomes pretty simple and the compilation simply becomes a matter of knowing the architecture (potentially non-existant / imaginary if you build a virtual machine too) that you're translating to.

Anyway, enough of my insane ramblings and dreaming (OTOH - what is Winamp if not a dream come true? :D )

Dave.

14th January 2002 19:07 UTC

UnConeD,

Although requested could you explain what atan2 does as I am at a loss?

This would help me lots.

Cheers,

Rovastar


15th January 2002 11:34 UTC

BTW there is no built-in support for JPEG and PNG decoding in win98+.

MSDN says:

Starting with the Microsoft® Windows® 98 and Windows 2000 operating systems, the StretchDIBits and SetDIBitsToDevice functions have been extended to allow JPEG and PNG images to be passed as the source image to printer devices. This extension is not intended as a means to supply general JPEG and PNG decompression to applications, but rather to allow applications to send JPEG- and PNG-compressed images directly to printers having hardware support for JPEG and PNG images.

The BITMAPINFOHEADER, BITMAPV4HEADER and BITMAPV5HEADER structures are extended to allow specification of biCompression values indicating that the bitmap data is a JPEG or PNG image. These compression values are only valid for SetDIBitsToDevice and StretchDIBits when the hdc parameter specifies a printer device. To support metafile spooling of the printer, the application should not rely on the return value to determine whether the device supports the JPEG or PNG file. The application must issue QUERYESCSUPPORT with the corresponding escape before calling SetDIBitsToDevice and StretchDIBits. If the validation escape fails, the application must then fall back on its own JPEG or PNG support to decompress the image into a bitmap.


6th February 2002 22:13 UTC

I would like to add:
- builtin 3d/z-coördinate, would make coding a lot more easier!!!
- support for imaginairy numbers ( i=sqrt(-1) ) for fractals
- more options on render/moving particles, like being able to program their path
- ability to store your own presets for trans/movement, trans/dynamic movement and render/superscope
- source map on trans/dynamic movement? (not sure if it's possible)
- fix the bug in render/text additive blend which makes it look blueish
- better support for misc/svp's
- dynamic rendermodes, means to be able to write your own rendermodes: additive if red>0.5.


12th February 2002 17:52 UTC

some small things like.....
fix the irritating render/text bug, the backgrounds turns blueish when using render/text

muliple colors for the moving particle, always annoyed me that you can only have one color

some color codes for the dynamic movement, so you changec colors like superscope colors

a help file, i know everyone already said that but still it nead to be said

some more renders....


15th February 2002 01:14 UTC

For my upcoming pack, I've been writing some APE's that could implemented in AVS:
- Larger "Fast Brightness". Does *.125,*.25,*.5,*2,*4,*8.
- Infinite-root: any non-black pixels are white
- Infinite-square: any non-white pixels are black

(PS: Thanks to the mods for moving this old thread here. I'd already reposted it.)


15th February 2002 05:37 UTC

i would like to see:
- a presetmanager or so, to create a better directory-structur
example:
avs-El_vis-pack1
..........-pack2
...........-...
...-Whacko-pack1
..........-pack2
..........-...
...-...

- a save-button
- a refresh/reload-button
- a fadeout for effectlist (when i use the onBeat)
- colorus change onBeat(Oscilloscope Star, unique tone....)
- a possibility to save only superscopes(*.ss?), Dynamic Movement (*.dm)....
-a possibility to definie the presetchanges (change after time/n beats, the kind of change(fade in, mosaic...like it's on random, only that it's controled by myselfe)) per script
- maybe a german version, but that would maybe made by MPeX.net Staff


that's all for this moment


GreatWho


15th February 2002 12:49 UTC

I'd like to see a bit more control with AVI rendering - you can't force the aspect ratio like with pictures. It would also be nice to see 'skip n frames on beat' and 'change speed on beat' options. There is no play once, play backwards or ping-pong option either.

Also, why can't you cut/copy/paste the effects in the left pane? Its a pain in the arse when you want to copy chunks of one preset into another. Maybe even it could be an MDI app and we could drag effects around between presets?


15th February 2002 15:25 UTC

atan2(a,b) calculates atan(a/b) but returns an angle in the range of [-PI;PI] instead of [-PI/2;PI/2], depending on which quadrant the point (a,b) is in.

Y

^
|
a-|-*
|/
|/
|/.
|/.
|/
th.
----------------|---------->
X
|b

th
=atan2(a,b);
Note that AVS's axes are oriented differently, you'll most probably want to use atan2(x,-y); instead of atan2(y,x);.

(Now that we have a wishlist forum, why not post seperate threads instead of adding to this age-old post)

15th February 2002 16:43 UTC

UnConeD,

I presume that was for my benefit. You have already explained it to me before on another post to the general AVS forum when I started a new topic.

My post on this thread was from over a month ago.;)

But thanks again for the time spend. The more info the better. This time with diagram.;)

Cheers,

Rova

PS why not create a 'sticky' post so at the top of this forum with all current wishlist wishes. ANd lock it so only mods can add. ANd discuss the wishlist further in other posts wih the pros and cons of each. That every few weeks update the 'sticky' post at the top.


16th February 2002 04:56 UTC

I don't know if anyone mentioned this or not but maybe there should be a undo button. I just love it when I'm wizzin' through an AVS and I click [-] instead of [+], then loose either a 20 line scope or an entire Effects List. Just my 2 pennies.


16th February 2002 07:31 UTC

AAAAAA!
Okay,

I've said it before, but this is apparently the time and the place.. I don't have any unconed-type suggestions, because, unlike unconed, I still don't understand most of what I do.

However, I've used Avs pretty often with line-in and in a VJ-manner, and a few things could really make theplaying of AVS's a lot more practical and convenient.

My main suggestion? Apply the Winamp playlist to AVS... I don't know if it can be done, but being able to create avs playlists, AND use the hotkeys would be such a dream come true! Right now, I have to manually move the files around and create directories if I want to organise them... This would also allow the avs's to run in a mode other than random.. OOooo, linear fropm first to last and last to first! Think of all the fun we could have creating "sets"...

Also, I agree with unconed about the beat detection, with the line-in, I also noticed that it would occasinally seem to "freeze" , as if it just couldn't figure out what the heck was going on. I found that if I played an mp3 and got it going, then stopped the mp3 and went back to the line-in, it could carry on and would pick up the beat again. No clue what caused this, just noticed it while vj'ing.. It works great when playing the file, and I understand that asking it to be perfect working from a line-input processing in real-time would probably be unreasonable. Just give it what you can eh? please!

Anyways, you guys already do such a great job on most stuff, anything we can suggest is mere details towards the perfection of a tool/toy that we all love so much..

Anyone mind if I take this time to say thanks again to those who code endlessly so we may play around?


THANKS!


16th February 2002 11:23 UTC

a kind of "Unique Var" would be nice, so we could make any random vars and use it with the same value over the whole preset in diffrent SS,DM....
a debugger for any complex strings in SS, DM.. would also be nice, it could be heavy to find a forgotten character or var


17th February 2002 02:13 UTC

a timecounter var in SuperScope and DynamicMovement, so SS or DM could detect if the song has a high or low bpm

example:
the var "time" would count the seconds

init
:

beat=0;time=0
onBeat
:
beat=beat+1

counts the beat

per Poin:
PHP Code:
                
bpm=beat*60/time;


calculates the bpm
=if(equal(time,30),0,beat);

time=if(equal(time,30),0,time)
restes beat and time synchonously every 30 seconds, it also may reset all 15 seconds.. its only a question how exactly the bpm should be.

pleas make possible

17th February 2002 20:00 UTC

My suggestion
Allow subdirectories in the preset selection menu. I have too many directories and I don't want to take time scrolling down when they do off the screen.


17th February 2002 21:07 UTC

bigger fields to edit strings

to edit a SS with a lot of vars, sometimes the edit fiels are to small, above all "init", "onBeat" and "per Frame" but sometimes i must look, what a var i had tooken for what and it's pedantically to go to the end of the string. an editor would be nice


18th February 2002 12:22 UTC

Argh... just because this (old!) topic is named AVS Wishlist doesn't mean that everyone has to post here. We've got a whole Wishlist forum now. Please, stop posting to this topic unless it's a response to a comment in here!


10th March 2002 21:59 UTC

Liked your ideas, GreatWho...
Hmm, time function... that oughtta be great! remembering that different comps have different framerate...

I have some wishes :

-Fast Brightness is now in form of a text-box - Enter your percentage =)

-A sort of "wrap" function for SSCs...

-FireWurx - An option of blast size, amount of blasts/beat, location of blasts, and if posible, gradient color from inner to outer color (If possible, middle too)

-Buffer Save - OnBeat switch between save/restore.

-Custom BPM - Textbox, PLEASE!

-Set Render Mode - Perhaps percentage of blending, in any/most sorts of blending in sort of a textbox. 100% is max.

-Blur - Either a slider or textbox of blur-ishness.

-Invert, XOR, subtractive Blend 1 (or is it 2?) - Fix the bug that makes the AVS screen flicker like mad between Inverted and not-inverted - Happens most of the time. Only luckiness prevents that from happening...

-DM - The ability to use D and R movement and X and Y movement in the same DM... if possible.

-Mosaic - An option for width and height of the rectangular mosaics... in pixels.

-Water Bump - Possibly replaced by a ripple effect?

-Overall - A better help menu, that contains descriptions of things (What does the bars in Colorfade do? I'm confused...)


11th March 2002 07:41 UTC

This thread is very old... now that we have a whole FORUM for AVS Wishes, you should not add to it unless you're replying to a specific comment here. Despite earlier requests:

Post new wishes as new threads, not as replies here.

And please check the sticky titled 'Current AVS Wishlist' before posting here. I scrape together all the new ideas here once in a while and it would save time if people wouldn't post the same things over and over again :).

By the way:

Invert, XOR, subtractive Blend 1 (or is it 2?) - Fix the bug that makes the AVS screen flicker like mad between Inverted and not-inverted - Happens most of the time. Only luckiness prevents that from happening
This is NOT a bug, this is totally correct behaviour. If you don't understand why this happens, remember that usually, the previous frame is taken as input for the current frame (depends on your preset really). Let's consider a preset like this:

* Trans / Blur: heavy
* Render / Simple: color white
* Trans / Invert

The previous frame will be used as input for the next (i.e. 'clear every frame' is off). For frame #1, the input is all black. After it's done, we'll get a white spectrum on a black background, and then we invert it: we get a black spectrum on a white background. The next frame, we use this inverted frame as input. It is drawn on and inverted again. As this loop goes on, the preset will flicker. The blur will make it end up gray.

If you wish to observe this process more, set the performance slider to the lowest setting in Display settings, and/or add a dummy (input/output: ignore) effect list with lots of heavy effects in it to slow AVS down.

What you'll probably want is:

* Effect List: (input: ignore, output: replace)
--- Trans / Blur
--- Render / Simple
* Trans / Invert

Now, the preset will render normally inside the Effect List, but it'll be inverted at the end. Because Effect Lists are really 'presets-in-presets', the inverted frame is *not* used as input for the next frame, so there's no flicker.


Oh and if you want wrapping superscopes, try this hack in the meantime:

x=(abs(x)*500%1000/500-1)*sign(x);
y=(abs(y)*500%1000/500-1)*sign(y);

There's some precision loss, but unless you're running at more than 1000 pixels horizontally, you won't notice.