PDA

View Full Version : Silly idea about future of avisynth


vidiot
27th August 2002, 20:59
... just got the feeling that the people, who code for avisynth and plugins every day are on the same step with the two brothers who invented the Photoshop kernel...

Why?
Because Avisynth (AS)can do everything what my Ulead Media Studio 6 can do(except maybe some very special crossfadings or some audio related stuff).
So whats my point?
- There have been many discussions about guiīs for avisynth, and Iīm a strong believer - that is the missing link with it.

"My" MSP only conviences me because of itīs easy gui, mixed with powerful commands. But since AS can replace nearly any filter and is more advanced in special categories (denoising, PAL<->NTSC con. ect.)
it would be nice to see something evolving in that direction.

Like I said: I feel that is just one step ahead, but maybe Iīm wrong.

Wouldnīt it be nice to have a free (GPL) Videoeditor where people without to much knowledge could "tweak" filters just with sliders
(and the professionals can still tweak and code like before - like with the above mentioned Photoshop)-
I imagine a VD like Gui (only because itīs the best Iīve seen so far)
easy, fast , clean.:cool:

That has been discussed before, I know ...

Any other thoughts about it?


Harald

Boulder
27th August 2002, 21:49
A good idea in my opinion although I probably wouldn't need a GUI myself as the scripts I use are not very complex, mostly just deinterlacing and resizing.

hakko504
27th August 2002, 22:03
A good gui would make AVIsynth the most useful video application imaginable IMHO. I also think that a major step in making a gui work has already been taken, in that an autoloading of plugins is essential in this work. At least it will make some things much easier. Combine it with an installer and we have a full package that works both on its own and together with other applications.

It would of course be nice if a gui also could integrate the encoding, f.i. by starting a joblist in VD, but as a start it is more than enough if it creates a .avs and shows a preview.
If anyone wants to create a gui, I'm very much interested in helping out, mostly testing, but I do know how to find my way through some c/c++ code even though I do not consider my self a real coder.

sh0dan
28th August 2002, 11:23
@all: Completely agree! There are however a lot of considerations we should do before we begin a (perhaps too hasty) GUI efford.

The integration with the current filters should IMO be seamless, but we need to have a way for the filters to supply additional information. We need the filters to supply information about the parameter ranges, a description, and perhaps a more elabotate type definition (threshold or frame, color, position, text, filename (existing), filename (new), etc.). We can derive the number of parameters and if they are optional.

Multiclip handling should (in it's final state at least) be completely visual, like GraphEdit, so input to output path is completely visual. And with instant preview in all filter-stages.
We also need the filters to supply more information about colorspace before they are instatated. IMO you should NEVER be able to build an invalid filter chain.

GUI code is very foreign to me - I've only done algorithmic code in C++, and we could very much use folks who have actual GUI experience. We 'backend' people can give the best possible conditions for a GUI, but there's still a long way home.

When the 2.1 branch is created, we should try to look at possible backend implementations.

Ookami
28th August 2002, 23:32
Chanting:

GUI, GUI, GUI...

I would be, also, interested in beta testing for such a project...

Cheers,

Mijo.

Blight
28th August 2002, 23:44
I have GUI experience, and DirectShow experience. If the frame serving supported the frame-seeking method of directshow, it would even be frame-accurate.

However, I work in delphi, so I'm not sure it'll be optimal, even if everything would be open-source.

neily
28th August 2002, 23:56
My tupence worth:

As great as a GUI would be, surely the whole point of a scripting language is that it isn't a full blown app. It has advantages and disadvantages. A GUI that allows a quick preview and comparison between different function parameters is obviously very useful. I don't think a GUI'ed avisynth can ever be a Premiere replacement, but that is not what avisynth is about.

Scripting does have a great deal of versatility, and allows me to have a workflow that operates the way I think, and not the way another software developer thinks. I have had various stabs at automating writing scripts for my own benefit. What I have found though is that arriving at a general solution does rather detract from the simplicity of small purpose-designed routines for automating repetitive tasks. I am on about my 4th iteration, and each time I try to make it a more general solution, the interface gets more complex for individual specific tasks. I think it is fair to say that the various developers of avisynth have, quite understandably, adopted a similar attitude. Functions have been writen to suit the needs of the writer as those needs have arisen.

My personal experience has been that the greatest difficulties are:

1. Tallying input and output windows. If functions change the frame count of the output, deciding how to move along source and target is quite tricky, and really depends on the job in hand, and personal preference.

2. It is a pain that cropping works as left-top-width-height when often left-top-right-bottom seems more logical. An additional function that supports this latter mode might be helpful.

3. Making something that produces a working script is only 50% of the battle. The other "90%" is making a script that once saved can be read back in, and the GUI returned to the original state.

stax
29th August 2002, 00:21
2. It is a pain that cropping works as left-top-width-height when often left-top-right-bottom seems more logical. An additional function that supports this latter mode might be helpful.

Crop(left,top,-right,-bottom) works just fine, hakko pointed this out a few days ago, I use it already in DVX

bb
29th August 2002, 07:18
I'd love to have AviSynth support in VirtualDub, like a menu where you can add filters, show a preview, edit the script manually, etc.

Just my two (Euro-) Cents...


bb

johann.Langhofer
29th August 2002, 13:00
I can offer my experience in GUI programming, my vision is like shOdan's to edit the whole graph like GraphEdit with the possibility to preview all filter-stages. I've started with this job some weeks ago, but there is some need to extend the filter interfaces (for design time purposes) and this isn't a good practice without coordinating...
But the discussion in this thread encourages me to continue my work with the target to present the basic GUI-concept with a prototype.
Any suggestions are welcome...
best regards
johann langhofer

vidiot
29th August 2002, 18:42
Originally posted by bb
I'd love to have AviSynth support in VirtualDub, like a menu where you can add filters, show a preview, edit the script manually, etc.

Just my two (Euro-) Cents...


bb

That would be a big step ahead...

@neily:
Your point about scripting is true!
But think of my Photoshop example:
Isnīt PS a "full blown" software WITH scriptig features?

My intention was not to cut away the best thing of Avisynth, but to make it easy for beginners (they can lesrn scripting while having a quick success in using the application).

Imagine stii picture editing with just a commandline and to have to reopen your picture after every step...
Would you like to use that one if there a many other (with "nasty" gui)???
Even if those "command line" programm offers you much more extended capabilities??


@ ALL:
Nice to see this thread evolving a little...

Harald

Belgabor
29th August 2002, 23:02
Heres the first step into the direction bb proposed.


VirtualDubAVS 0.1 alpha, based on VirtualDub 1.4.10 by Avery Lee

- Added 'Refresh' menu item which reloads the current file to the same frame
- Changed Hotkey 'F5' to the new menu item


VirtualDubAVS 0.1 alpha2, based on VirtualDub 1.4.10 by Avery Lee

- Fixed bug mentioned by sherpya (i hope)
- Included Sync patch by Andreas Dittrich to remove the need for yet another binary.
WARNING! test first, I might have broken something (not that i found sth while
testing).
- Added greyed out "AVS Editor" menu item to tease you ;)


Source will follow asa i get what i have to do to make it GPL compilant.

Cheers
Belgabor

sherpya
30th August 2002, 03:32
A gui for avisynth? Sound so strange for me... Avisynth is a scripting language for avi not really an application

@belgabor
I've tried your modified vdub, the feature is nice. There is a bug when new avisynth output area is lesser. I think you just need a "refresh" on the main vdub area (add some InvalidateRect)

Bulletproof
30th August 2002, 08:43
I remember asking avery lee a couple of months ago about frameserving and he had told me that he was thinking of already implementing special AVS handling into his program, maybe you should e-mail him and ask him what he's doing about that now.

vidiot
30th August 2002, 08:56
@ Belgabor :

This refresh feature alone makes life easier for me!
1000 points for that!

I do have VD two times open to compare the changes made with my scripts.
"VD Refresh" is really a big step ahead!

Dankeschön
:)

Harald

vidiot
30th August 2002, 09:54
Originally posted by Bulletproof
I remember asking avery lee a couple of months ago about frameserving and he had told me that he was thinking of already implementing special AVS handling into his program, maybe you should e-mail him and ask him what he's doing about that now.

Done!
Waiting....:D

Belgabor
30th August 2002, 10:55
@sherpya: no problem, I'll do that when i get home this evening. (Well, in fact i had it in, but i thougt the routine which skips to the frame would do that ^^')

@vidiot: np =) would you plz tell me what avery said asa he answers? thx.

@all: glad you like it, I'm working on putting a simple editor into vdub itself, but thats harder than the 10 lines I had to add for the refrsh function. As I'm (still ;)) a Delphi guy, that may take some time.

Cheers
Belgabor

Belgabor
31st August 2002, 00:04
New version where the old one was ;)

dividee
31st August 2002, 03:06
@Belgabor:
This is nice :) I'll try to switch from my habit of launching vdub through an ultraedit macro. I thought some time ago about modding vdub to accept command-line switches for that purpose, but your way is simpler and works well.

@johann.Langhofer:
Tell us what extensions to the filter interface you need. We also already had some discussion about maintaining additionnal info about filters in an XML structure.
I like the idea of a graphedit-like GUI for avisynth.

Belgabor
31st August 2002, 06:16
Surprise Surprise!



VirtualDubAVS 0.2alpha1, based on VirtualDub 1.4.10 by Avery Lee

- Fixed another bug which prevented Refresh if you introduced an error into the avs
- :) Editor ready for testing (Tools menu) :)
- 'F5' in the editor SAVES THE CHANGES (NO BACKUP IS MADE!) and refreshes the image in vdub



BE WARNED! THIS IS ALPHA STUFF AND MAY GOBBLE YOUR SCRIPT! I TAKE NO RESPONSIBILITY!
Well in fact it shouldnt, but so far i didnt insert any foolproofing (no error checks, no is-the-file-already-there checks, no have-i-saved-my-changes check, no backups).
SO YOU'VE BEEN WARNED. DON'T COME WHINING AFTERWARDS! ;)

EDIT: Took it off, it has a bug and eats away the last byte of the script. Fix will be up soon.

Cheers
Belgabor

P.S: Nothing stops you from opening TWO (or even more) AVS Editor windows ;)

ErMaC
31st August 2002, 13:27
Ever since I realized the true power of the scripting language embedded in AVISynth I've been kicking around the idea of a full-fledged, non-linear video editing program based around AVIsynth. The idea of this kind of front end to a scripting backend is not far fetched at all - because that is exactly what Adobe Premiere does.

Premiere's save files, if you open them up in notepad, are nothing more than extremely long and complicated scripts which are interpreted by the GUI for display on the screen, and interpreted by the various export plugins for output to a file later. The same thing could be implemented with AVISynth, and I bet it would be better and faster, to boot.

But before anyone gets started on that kind of project the AVISynth backend itself needs to be prepared for that kind of usage. First off, as someone mentioned every filters needs to have some sort of Query function that returns a description of the plugin, all its parameters, descriptions of parameters, and their ranges. Also, there are several things AVIsynth cannot do which would be important to any video editor:

1) Keying and transparency. AVISynth already has some kind of functionality for combining two layers together (with the Layer functions and it's offspring like Subtract) but there needs to be full fledged functionality for dealing with Alpha channels, color keying, luminance transparency, etc. Adding alpha channel support throughout the backend may be quite a gargantuan task, I'm not sure.
Also with the ability to combine layers we will need to be able to specify points in time or frame #'s at which to start and end clips. For instance if I want to add a flashing white BMP at 50% opacity for 1 frame at frame 300 of the video, how would I do that in the current implementation?

2) Dealing with stills. Currently AVISynth only handles inputs of video streams and its own synthetic source filters. We need things like BMPSource, PSDSource, TGASource, BMPSequenceSource, or a more generalized ImageSource interface.

3) Motion and varrying framesizes. Currently in AVISynth, AFAIK, you cannot take two video streams which are different sizes and overlay them together, or take a frame and make its size change dynamically (like enlarge and shrink within a frame). Also, I know of no way to distort a frame (like making it look like it's falling over by taking the two top corners and moving them down and backwards thus warping the frame to trapazoidal shape). Adding the kind of functionality to abstract a clip from the actual output, or rather specifying a definitive output size ahead of time, is a necessary step. That might be a little hard to follow...
Basically as it stands, when I source a clip that's 700x460 at 29.97 fps, my output stream now becomes that size and resolution. Instead, what needs to happen is the ability to say "My frame size is 720x480 at 29.97fps" and then having other clips be managed within that framework, like importing the clip I mentioned earlier will either have black bars around its edges or it will be upsized to the target resolution.


These are the 3 biggest shortcomings of AVISynth that I see when it comes to turning it into a full-fledged video editor. The beauty of simplicity in its design hampers an editor's ability to do complex things later. The fact that AVIsynth has no abstracted sense of a "Timeline" will cause problems later when you start implementing multiple layers, and its built in reliance on getting properties from its input clips will also cause issues when trying to assemble multiple clips.

I think the idea of an editor wrapped around AVISynth is a fantastic idea. Being able to edit in such a program, saving out an AVS file as my project afterwards, and then being able to open it directly in VirtualDub and have a 100% lossless transfer from my source to destination stirs my loins it's so cool, but currently AVISynth is not ready for it.

vidiot
31st August 2002, 13:32
Downloaded and (quick) tested!
WONDERFUL!

Just loaded the script hit F5 and saw the changes!
I couldnīt believe how easy it can be...:)

Thanx a lot belgabor

.. and yes - if Avery is answering Iīll tell you ASAP.
(But maybe he response here directly...)

Harald


PS: ~ 6:00 ? Did you sleep that night?

vidiot
31st August 2002, 13:39
@ ErMaC:
Thanks for clearing up those things.
There are issues i couldnīt even think off... (cause I do not know).

But good to see that Iīm anything but wrong with this idea.

:D

OT: Lets go to the POVRAY Team and suggesting to make a CAD Kernel out of POVRAY... :p


Harald

dividee
31st August 2002, 15:21
@ErMaC:
Most of the things you mention can already be done in avisynth.

1) Layer has support for alpha channel. With the Mask and ColorKeyMask function, you can achieve everything you mentioned here.
Start and end points can be achieved by trimming the part you want to work with (even a single frame) and splicing afterward.

2) there is an ImageSequence plugin that can deal with most formats. It isn't GPL compliant that's why it hasn't been included in the core. But this functionnality will be included in the core eventually.

3) Surely you can overlay videos of different size. Layer supports it.
You can also dynamically change the frame size (such as zooming, if I understood what you're talking about), with the help of the Animate meta-filter. Indeed there is no way to distort a frame. Poptones said he was working on a rotate filter; geometric distortions are very similar so it shouldn't be difficult to add them once this is done.

I understand that you're pleading for a more abstract interface. Most of what you said can be achieved or will be adressed, but maybe it appears awkward if you're used to work with a timeline. But does these concepts really needs to appear in avisynth? Avisynth could be considered as a low-level rendering engine and these concepts could be implemented in a layer built ontop of it.

ErMaC
31st August 2002, 16:50
This is true, but the biggest thing I see is the timeline abstraction. As it stands, everything is relative between clips, and not in terms of time in space.

For instance, if I trim 100 frames off the end of a clip, and then splice a clip onto the end, if the first clip's length changes (for instance say I clip the file) then everything afterwards changes because all of it is relative. There's no way to say "Do such and such at this frame" as far as I can see, instead it's always "do such and such relative to these other factors". The only absolute time is frame 0.

Yes it could be possible to trim to specific # of frames instead of trimming relative to the end of a clip (i.e. trim 0,1000 instead of 0,-100 on a 1100 frame clip) but I've always found that syntax icky. And in the case where I would want to overlay that one image frame, the actual scripting would look really nasty. I'd imagine it'd go something like this:

source.trim(0,x) + layer(source.trim(x,1),imagesource(blah)) + source.trim(x+2,0)

That just seems really inelegant. If there was a way to say:
source
timeshift(x,layer.image)
wouldn't that be a far more elegant option?

When working with multiple video tracks, an abstraction of parallel video streams seems like a very good idea. With AVISynth you are essentially working with a single linear stream and doing lots of splicing into that stream, whereas a better paradigm would be multiple streams with switching and overlaying between them.

I'm sure that a lot of what I said CAN be done with AVISynth's current state, but none of it would be very readable to a human being and it would make the scripts overly complicated whereas a change in the way the basic structure works would generate cleaner, more elegant code.

WarpEnterprises
1st September 2002, 20:52
@belgabor: at last you made IT, thank you very much. I emailed avery some time ago, added a feature request at sourcefourge but no answer yet.
I found a little bug, the editor seems to cut off the last line if it's only 1 character (e.g. the } in a self defined function)

Once again I can only support dividee, AviSynth is a low-level thing and should stay one:
- separate Avisynth and GUIs in a way that independent development is possible
- maybe some kind of Avisynth "compiler" would be nice which lets you see ALL errors (syntax, colorspace, image size,...) at once and not one after one.
- to me Avisynth is like a programming language-you don't have a GUI for the language, only tools and to develop your code.

vidiot
1st September 2002, 22:24
WarpEnterprises,

as you might already know,
it is the same thing as (see example somewhere above)
with a cad kernel -> the gui and the kernel are (in most cases)
completely independent.

Look what ErMac already told us about premiere ect.!
-> Conclusion: Developement of a gui could be (nearly) independent.

I donīt want to say that over and over again:
The Photoshop engine could also work in a complete different gui,
and that doesnīt prevent it to be "programmed" by advanced users.

But even advanced users like guis - iīm sure about that - cause the gui makes a "killer" out of an application.
And one of the best reasons:
Even unskilled (?) people would easily get a grip with Avisynthīs advanced features -> simple: Avisynth will get more users.
Isnīt that nice?

Harald

poptones
1st September 2002, 22:55
This is true, but the biggest thing I see is the timeline abstraction. As it stands, everything is relative between clips, and not in terms of time in space.

For instance, if I trim 100 frames off the end of a clip, and then splice a clip onto the end, if the first clip's length changes (for instance say I clip the file) then everything afterwards changes because all of it is relative. There's no way to say "Do such and such at this frame" as far as I can see, instead it's always "do such and such relative to these other factors". The only absolute time is frame 0.

This is because you are approaching the project like a Premeire project, and not like an AVISynth project. And more generally, you are approaching the project like an individual working at a PC rather than a team member working on a project.

Large projects are not put together (initially) by some guy sitting in a cutting room. Each shot has to be conceived, implimented, developed, catalogued and edited into a work. And they are most always based on storyboards of the same process.

Now, approach it like a project that needs ot be managed and distributed among hundreds of people. Do you get hundreds of people into a room all shouting instructions at a reel editor?

No. You give each one a storyboard of their sequence and put them to work on it. As each develops their part of the project, you look at the project as a whole for continuity, but that does not require each individual to be aware of thw whole. All they need to worry about is their ten seconds of face time.

So how do you do it? You create a shot. Then you create another. Then another. Each is a separate entity. Then you put these shots together into a scene. Each scene is a separate entity. Then you edit the scenes together to tell your story. At any point along the way you can alter shots and edits without disrupting the project as a whole. You can delete entire scenes without distrupting the project. It's like stripping a paragraph out of a page; do you disrupt the flow? Slightly and temporarily - but it's not as if you have to rewrite the entire page.

This is the part I've been working on the most. I see something like the timeline editor we have now, but with a tree menu on the left. You click a selection, and the folder opens containing all the shots for that scene. It's like drilling down through a directory of folders - which is exactly how I've constructed the project files (Yes, I have put a good bit of work into this... but I'm not organized to the point I'm ready to share it.)

And having the filters "talk back" isn't terribly hard. It's one more thing a filter writer would need to do, but it's not as if one has to write yet another entire module. Here are some of my notes on the topic...

http://www11.brinkster.com/poptones/newcleus/ow.asp?NotesOnAVISynthXML

primitive
2nd September 2002, 01:04
poptones has this to say about a world where cyborgs rule with an iron fist:[url-amazing]

I think this would be fantastic. An elegant method for making avisynth's power available to higher-level applications.

-p

Belgabor
2nd September 2002, 01:43
VirtualDubAVS 0.2alpha2, based on VirtualDub 1.4.10 by Avery Lee

Mainly bug fix release

- last byte eaten bug fixed
- Changed behaviour a bit. If you open a faulty avs script, you can still open the editor, correct it and reload with 'F5'.


Warings of 0.2a1 still hold true!

thx for all bug reports :D

Cheers
Belgabor

WarpEnterprises
2nd September 2002, 08:24
@Belgabor: Would it be difficult or otherwise a bad idea to use ctrl-F5 for Refresh because at least me is using F5-Preview quite often.
And of course a shortcut (ctrl-E) for AVS-Editor would be nice.
(I really don't want to nag :) - but I like keyboard shortcuts in tools I WORK with and believe me - I instantly replaced VD with your version)

THANKS !

Belgabor
2nd September 2002, 10:09
@WarpEnterprises: The Ctrl+E thing is no problem. Alas I want to keep it 'F5', but I put that on the to-make-configurable-as-soon-as-I-find-out-how-to-save-configurations-in-vdub list ;)
It won't be too long I hope because I need to find out about that soon for some features I'm thinking about.

Cheers
Belgabor

$$$
2nd September 2002, 11:11
Belgabor, thanks a lot for this really cool VD mod. Would it be much of an effort to display the current cursor line number in the status bar of the editor? It would help to locate the faulty line when AVS detects an error.

$

johann.Langhofer
2nd September 2002, 23:22
http://members.nextra.at/johann.langhofer/avisynth/GraphAvi1.gif
As promised, here you can see my first experience of a "GraphEdit"-like GUI. Although I'm also believing that avisynth hasn't all necessary conditions for a full editor like premiere, I think the visualization of the filter graph is a good starting point.

OK, if someone will test this program (it's in a very, very alpha state), I'll put it on my homepage, together with a modified version of avisyth.

@ dividee: At the moment I've slightly expanded the IClip interface but I'm not sure if this expansion (RuntimeInfo) is sufficient. The more prototyping, the more the interfaces will be stable...

// Base class for all filters.
class IClip {
...
protected:
Rti runtime_info;
public:
#ifdef NEW_VERSION
IClip(Rti info) : refcnt(0),runtime_info(info) { }
#endif
IClip() : refcnt(0) { }
...
#ifdef NEW_VERSION
virtual Rti * GetRuntimeInfo() {return &runtime_info;}
#endif
};

What can you do so far with "GraphAvs":
-view your avs-file in the graph window
-select a filter stage
-view the selected stage in the video-preview (short film sequence)

I think the first basic step is done to view all filters in the graph, but how should it go further on? Next plans could be:
-removing cache filters from the graph
-adding filters graphically
-property dialogs for filters
-export to avs
any suggestions?


best regards
johann langhofer

Ezzelin
13th September 2002, 14:22
First, I love this tool. It's very useful. But I've found a little bug: if an avs file is loaded from the commandline, the avs editor is disabled. When file-open is used it works like normal. Thanks again for the great tool!

Edit: Loading an avs through drag 'n drop also doesn't activate the editor. Oh, and I second the request for an editor shortcut key! Thanks.

Second edit: Ok, more specific info here. It seems that the first file-open command on an .avs file activates the editor menu item. Afterwards, I can drag more avs files in and I can still use the editor for them. However, I can also drag in an .avi, and the editor menu item is still active. Selecting it then crashes the program. Opening an .avi with file-open disables the menu properly, BTW.

Emp3r0r
13th September 2002, 21:39
Originally posted by poptones
Filters need an interface. Each filter needs a control panel. Using XML is a natural way to lend flexibility here. If one wanted, the whole panel could be made to run in a browser. XML is an easy way to document and transport data while allowing virtually anyone to make use of the data how they see fit.

XML is a brilliant idea. I've thought of creating a XSL file that would create an AVS file from my own XML AviSynth scripts. Do you have any DTD or XSD files created? I'd love to add that support to VisualStudio.NET autocomplete such as you can do with XSL files.

poptones
14th September 2002, 04:15
Actually, I'm working on something very, very cool. I don't want to give away too much yet, but I'll leave you with these thoughts:

It won't be confined to Windows.

And it won't be confined to one machine...

ArdenDag
12th December 2002, 08:23
Hmm, was this idea completely dropped? Was browsing the forum and saw this, sounded like a cool idea!

scmccarthy
12th December 2002, 08:50
@ardgendog

No, you are right; it is a cool idea and no doubt still simmering in the background. I'm not convinced that AviSynth needs to be built to support it. Dividee pointed out that the gui could incorporate these features rather than AviSynth. The trick is to isolate what Avisynth can do that could never be implemented in the gui.

Unless I can play a Premiere script in WMP6.4, I am not buying the analogy. AviSynth frameserves the video on an avi wrapper. I want to see AviSynth extended to do anything an avi file can do. For instance, some players can play an ac3 in an avi. AviSynth should not decode it, but it should be able to serve it up to a player that can.

Maybe it already can do that. I am not keeping up on the audio side of AviSynth.

Stephen

ArdenDag
12th December 2002, 09:07
That's ArdenDag <--- a ;)

A lot of people just assume I'm being 'hip' by adding dog after my name, I'm not, that's the first 3 letters of my last name :D