PDA

View Full Version : best languages for visuals???


billyblaze
16th May 2002, 01:26 AM
__ a few years back I was a designer and animator working a lot with Flash. as scripting was added in I learned. finally its gotten to the point were I'm actually programming in it. and of course its limitiations are pretty obvious.

__ time to move on.

__ the question is where.

__ what are peoples favorite programming environments when making visual programs?

__ I'm actually pretty happy with flash in some regards, but need something that is going to a lot faster, and will allow me to export movies. not sure what the best route is. MAX+NATO is interesting, but I'm on a PC at the moment (may switch back over to the mac at some point though). I've also had people recommend Python and Java to me. And of course C++ seems like the powerhouse. Not really sure what the best route is any suggestions?

krezrock
16th May 2002, 02:08 AM
mac route: max/msp with nato.0+55 video objects
http://www.eusocial.com

pc route:
http://www.vjcentral.com/software/show/205

billyblaze
16th May 2002, 10:58 PM
__ PD and Max both seem quite interesting. I still haven't found anything that really says what they do, and what makes them different then other programming environments though. I know the interface is completely different, I actually spent a week with MAX about 5 years ago. not sure how they are different in terms of what is produced though. i'm guessing they have way more internal support for sound, and through add ons, video. I have no idea how that sort of thing works in more traditional languages, I'm guessing is not easy?

__ the main question though is what makes PD and Max such great environments for visual work?

sleepytom
17th May 2002, 01:22 PM
Originally posted by billyblaze
__ the main question though is what makes PD and Max such great environments for visual work?

ease of use - max and PD are high level object based langauges that allow very quick dev of multimedia apps, this is both an advantage (people can get started quickly) and a disadvantage as development continues it is very difficult to create well optimized code and your tied into a set of libarys that are very specific and non standard (this is why there is almost no vjsoftware that works on mac OSX - the nato objects for max don't run under OSX so anyone who's used it to develop software is stuck with OS9)

most of the high performance video software around (resolume, arkaos,vjamm,visual jockey etc etc) has been written in one of C, C++ or Delphi / object pascal this allows the coders of these products much better control over there applications and thus higher performance and reliabilty.

if you want make crossplatform software then max / pd is a very bad idea as your stuck with non crossplatform objects- you'd be much better off using C and staying away from the platform specific APIs (directx - quicktime etc etc) SDL and open gl are looking like the best options for true crossplatform media layers.

if you just want to bodge something together quickly then use pd or max or director, but don't complain if your project becomes huge, unwieldy and unstable quite quickly.

billyblaze
18th May 2002, 06:53 PM
__ excellent, that's helps a lot. does anyone have any thoughts on Java or Python? both sound intriguing, a handful of people have told me Python is great. John Maeda has called it his favorite language, which is about as good a recommendation as you can get. a lot of the other media lab aesthetics and computation group people seem to use a lot of Java though.

__ from my research it seems C++ is significantly faster then Java which itself significantly faster then Python. ease of use seems to run exactly opposite though. Python seems like a breeze while C++ a nightmare.

__ I have no idea what sort of need for speed I have. right now ease of use sounds great, but a bit into a project I might be cursing the slowness. not sure how much speed is need to do what I want. not planning to do any 3D stuff, but I do want to push lots of static images onto the screen in rapid succession and manipulate them in real time. actionscript could handle most of what I wanted to do, so I'm hoping I don't need to go super low-level.

__ so how much extra power do I get out of C++, is it worth the longer learning curve and slower development process? Python just looks so elegent, but is it too slow for serious visual work?

eXhale
18th May 2002, 08:23 PM
C++ isn't so difficult to use, you just won't be able to use all the pre-made stuff that you can get with MAX, PD, Director, etc. The advantage of C/C++ is that you are more independant and it's also cross-plateform. [More in control... which, for me, is very important, especially when you dedicate a lot of time to a project]

Java is even more cross-plateform but it's not good for graphics, it's not made for this and also Java applications tend to be slower due to the need of a Java machine which interprets the code (Navigator 6.0 is a good example of how slow Java can be!)

I don't know about Python but I don't think that John Maeda does really graphic-expensive applications. At least all I saw was pretty simple (although interesting).

So it depends on what you want to do. If you want to play a bit, experiment, then go with PD, MAX, java, etc, and if you want to do something really serious, go with C/C++. Although it will take a bit longer, you'll learn more and you'll avoid having to rewrite all your code later (if you write good code, that is! heh). If you have time and dedication, you just can't go wrong with C/C++ :)

(Ooops reading tom's post, I now realize I repeated a lot of what he said...:o)

billyblaze
23rd May 2002, 04:22 PM
__ been learning a lot researching this. main thing I've learned is that there is a lot of room for improvements in programming... What is easy to do in Flash apparently is a huge project in C or using Python as a wrapper for C objects. At the moment it looks like going to keep developing in Flash, its got some issues, but matches up shockingly well with other environments in many ways. Just wish it had more developed ways of talking to the rest of the computer.... Probably will end up building some sort of framework in another environment that will add most of the functionality I want...

digitall
23rd May 2002, 08:14 PM
check:
http://www.onadime.com
It's like lego for VJs!
You need a Mac though. ;=)

Lingo/Director Shockwave Studio is a way more powerfull tool than Actionscript/Flash.

billyblaze
24th May 2002, 04:33 PM
__ very interesting looking program. will have mac access starting next we, will certainly be playing around.

__ been looking into Director as an option. really dislike it's price and closed source and don't really want to learn some random ass scripting language that only works in one closed app. might have to anyway. more interested in using it as a shell for flash at the moment, don't have any reason do more yet...

many2
24th May 2002, 05:45 PM
You will never get satisfying performance, from a VJing standpoint, out of an application coded in Lingo or Java in comparison to what you could get out of C or C++. It might be a good idea to use these high-level languages as learning tools before diving into full C / C++, but remember that generally the thicker the interface is between your code and the machine, the worse your performance will be.

A good idea might also be not to try to reinvent the wheel and try to expand the features of an already existing software, with the help of an SDK. If you decide to give C++ a chance and also want to learn some basic MFC skills, you might want to download the visualJockey R3 SDK. More and more third-party coders are programming free plugins for vJo, people like Black, Petewarden or Pdoom, exploring dimensions no eyes have seen before. Using a SDK let you concentrate on specific features and connect them to the main application, there even is a wizard to create your effect's interface.

Many-2

jansi
27th May 2002, 01:22 PM
I think that if you now action script switching to director shouldn't be too hard .
What you get is:


Midi input
Live video input (Dv, Vfw, and USB webcams)
You can use USB joysticks as controlers
access to individual pixel's color value - every effect is possible
Intel's 3d engine

Live sound input is not possible yet , but they are working on it

Output to Avi is a problem , but can be worked around

Spees is a problem (but you can still use it)

I've tried PD and I think that i'ts easier to use director (if you already can program in action script) and if you consider 2d and video speed seems to be comparable (3d engine in director is pretty slow)

If you work with 3d try www.wildtangent.com - it seems to work fast and looks not too hard to learn

By the way does anybody know a website with C/C++ graphic programming beginers tutorials?

phluxm
17th June 2002, 12:03 PM
I'm working in Director 8.5 to make custom software that can dish out video mixing, animation, 3Dgfx, text, filters and image mashing. I started getting into programming in Flash4 but Director pisses on Flash when it comes to versatile format handling and video manipulation. The code is not difficult and easy to get into. If you like Flash, you'll adore Director. Give it a try(?)!! I'd love to work in C++ but my meager brain can't hack it... }:-C Wow! Behold Ming the Merciless..!(?) :eek:

infopocalypse
18th June 2002, 12:53 AM
Try MMX assembly... now that's bad... especially considering it doesn't divide.

yoy
19th June 2002, 08:46 AM
elektronika is coded in C++, C, asm language
we use also mmx optimized code for blending op and other effects
but we thinks to use SSE code also...
to have a better precision in the internals..

silentplatform
22nd July 2002, 07:06 PM
Any one used realbasic on da mac ?

elout
10th August 2002, 03:24 PM
This 'easy' tutorial started me doing fast openGL in C again (on windows).

http://cone3d.gamedev.net/cgi-bin/index.pl?page=tutorials/ogladv/tut1c

First I use the GCC c/c++ compiler.
And I use the SDL-lib as well (a cross-platform multimedia library).
http://www.libsdl.org/index.php

Both are free/opensource software, and SDL has a large helpfull community as well.

I have writting fullscreen interactive VJ-visuals, in java, flash, lingo, but nothing goes like that fast then openGL/C.

steeley
29th November 2002, 09:43 PM
I've used this and it is a pretty good all rounder. Similar to VisualBasic on the PC. You can build on a Mac and save a version for Windows. Tey have just come out with a version that lets you develop on Windows as well. I guess it falls between full-on C++ and authoring environments like Director. You can build Plug-ins in C
, or access the system API's directly if RB does not have an inbuilt function.
Supports 3D, Quicktime and vector graphics reasonably well. There are plug-ins
available for MIDI: www.cabanis.com/realvision/index.php
and sound input: www.purplee.net/download.html
for example.

See www.realbasic.com. for general info.

krokodril
7th December 2002, 12:53 PM
Some time ago i met some developers creating a tool a lot like flash, it was called real.
This is in development, but it might be suitable. It was originally designed as a game platform on internet, consist of a set of instructions, like flash very short and 'natural', which on their engine creates c++
Because of its application it has a lot of 3d and natural(like fire water) effects
Besides this i recal they where, back then, just finishing their winamp plugin version, and this one could also handle avi and bitmap input.
the developers are as far as i know now associated with www.webpeppers.nl
its a kind of portal to play games, i'm don't think most of them run on this real, seems flash to me

Bluelive
26th December 2002, 10:20 AM
One language missing in this thread is c#.
Its alot like java in the way that it works, but its fast and you have direct access to the directx interfaces.
Im currently writting my own nato inspired vj program in c# and the performance doesnt seem to be horrible :)
Garbage collection and the large memory footprint of .net might turn you away, but c# is alot easier to write then c++.

infopocalypse
27th December 2002, 03:34 AM
A lot of these languages suit themselves to RAD (rapid development) applications, which is all fine and good for almost any type of app EXCEPT a performance app. VJ apps are performance apps at their worst, realtime video manips crunching #'s all over the place. This can only be done with C/C++/and assembly.

Bluelive
27th December 2002, 09:22 AM
No program is realtime on a modern os.
Performance in tight loops is comparable to c and thats what counts, if thats not enough its possible to include inline asm.
But the reason why i proposed c# is because its a lot easier to write and understand than c++, so that you can focus on the overall program and not local performance or code magic.

fluchtpunkt
27th December 2002, 11:25 AM
Originally posted by Bluelive
No program is realtime on a modern os.


what on earth is that supposed to mean???!
...

"programming with assembly is like sculpting with DNA"
modern day c/c++ compilers generate very efficient machine code. if you don't know what you're doing REALLY well, chances are that your hand-written assembly code will be slower than what a good c-compiler would have generated! if you're anything short of a pro: forget assembly language (unless you think it's fun :) )

also consider that if you're a less experienced coder you will introduce inefficiencies into any code by not using/knowing the correct algorithms, datastructures &/or design patterns. this performance loss will outweigh performance advantages of faster (yet more demanding) languages all too easily (the keyword here is 'asymptotic runtime behaviour').
if you want to develop 'fast' progs you need efficient code which requires knowledge of the fundamentals of algorithm, datastructure & pattern design.
if you're interested in this field i'd be glad to recommend you some reading to get smart :).

Bluelive
27th December 2002, 11:37 AM
what on earth is that supposed to mean???!
Just that every modern os takes time away from your program, to swap, to read the disk etc. And there is no reliable way to know when your going to get back to the program.

modern day c/c++ compilers generate very efficient machine code.
Just as true for the other modern languages :)

Design patterns and correct algorithm usage is what makes or breaks preformance, luckily for me im a CS student and ive been programming for a while. :D

Anyways, lets not troll.

HuoLong
27th December 2002, 03:44 PM
you could try http://vvvv.meso.net

won my interest over PD+GEM :)

cheers
-andre

infopocalypse
27th December 2002, 09:56 PM
First of all .NET generates some of the worst machine code known to man. Second of all the whole argument against assembly works only if you have prexisiting efficient multimedia libraries which DO make use of assembly. Sadly DirectX and OpenGL, without hardware acceleration, are pretty inefficient. Don't believe me... download the DirectX SDK and try running things in software mode. It isn't pretty. So you're left with option #3... build your own multimedia libraries, draws, etc.

James

elbows
27th December 2002, 10:38 PM
What about using directx or opengl to use the hardware? The way I see things going i more use of GPU for things that were previosuly done by the CPU. I started looking at these high level shader languages, looks interesting for the future.

I mean I agree that where possible ideally some low level highly optimised assembly code will obviosuly make better use of cpu etc, but in this day and age im looking at my 3D card with all its power and wishing some more of it were used by VJ software.

Bluelive
27th December 2002, 11:04 PM
Personally i find that the greatest bottleneck is memory bandwidth.
Raw cpu speed is seldom a problem.

Using gpu power, sounds like fun, but where to start ?
Something halfway between a game engine and a clip player ?
Is it worth the trouble and what would you output ?

elbows
27th December 2002, 11:53 PM
Ahh well this is where I will totally start to make an ass of myself because I havent programmed for 10 years and I dont know all the right terms for describing 3d stuff. But in a nutshell I am led to believe that some of the up-and-coming/existing features present in 3d hardware could be used to generate the kind of 2D effects which are currently done using the CPU and various features make this worthwhile from both a performance and looks perspective. I wish I could explain better but I cant, but I can imagine what will be happening in this area in the next 2 years and its gonna be nice :)

There is also the use of course of hardware 3D for 3D stuff in visuals software, which a few packages already let you do. Not of interest to all VJ's but to some, I think software that supports this will take a while to fully evolve as users gradually work out how best to use 3D in their shows, if at all. Using 3D in a subtle way can produce some interesting results for sure. The kind of cheesy 3D stuff you get with video editing software/hardware is an example of how not to use 3D from where I sit!

Going back to the question of what language is best etc, well I guess the reality is that people use whatever language they actually know! eg I doubt anyone picked director because it was going to give the best use of cpu, but rather because it was a choice of director or no software at all!

Agree about the bottleneck mostly it is RAM and fsb related, though there are a number of effects ive come across which are CPU hogs too.

Anyway wish me luck, Im going to very slowly start learning C++ so maybe in about 5 years I'll be able to do something useful with it :D Right now Im just looking at all the technology and SDKs I can to familiarise myself with forthcoming stuff that may be useful for VJ software.

eXhale
28th December 2002, 01:21 AM
3D hardware acceleration can be used to mix 2D layers more efficiently so that's at least one use for VJ softwares I guess.

t2k
4th January 2003, 04:23 PM
There is only *1* cross-platform programming interface for realtime hardware accelerated 2d/3d graphics:

OpenGL

There is only *1* programming language which interfaces directly with OpenGL:

C

C++ is "backwards compatible" with C, obviously, and C++ is my personal suggestion for object oriented programming.

There are other languages which interface indirectly with OpenGL, like Java, Visual Basic (?), etc - all are perfectly use-able if you prefer an indirect approach. It'll *all* be slower than if you'd used C though.

although OpenGL does not currently accelerate things like movie playback, its certainly capable of playing movies - in a somewhat indirect and inefficient way. It works alright in the software I'm designing, for instance. Eventually (a few years down the line) I predict accelerated movie playback and/or live video capture will be integrated into OpenGL or whatever OpenGL is replaced with.

Notice that Matrox has started selling graphics cards which accelerate movie playback / effects for FinalCut / Adobe Premiere...

Bluelive
4th January 2003, 05:00 PM
Why use opengl if your not interrested in leaving win32 behind?
Using DX will allow you to use a wider range of programming languages, while the actuall hard work will still be done by optimised precompiled libraries.
Such as movieplayback.

C is a assembly macro language, and indeed has the potential to write faster programs in.
More modern languages such as c# will make programming a lot easier.

Its a question of taste, i like to focus on the principles and algorithms, not using c means for me that i spend a lot less time debugging.

t2k
4th January 2003, 07:01 PM
If you are like me, you're developing a cross-platform platform for audio/visual programming. =)

This means that the foundation of the cross-platform platform cannot rest upon DirectX.

Rather, DirectX will somehow be "plug in"-able. This solves the foundation problem, but it creates unsolvable problems for people trying to view DirectX oriented media on a Macintosh.

DirectX support is something that I'll leave to those interested in publishing/using only DirectX oriented media.

Any takers? :)

Didnt think so.

http://www.treyharrison.com/salvation
http://www.treyharrison.com/salvation/pics
http://www.treyharrison.com/salvation/captures

Bluelive
5th January 2003, 12:34 AM
DirectX oriented media ? is there such a thing ?
Thought we were talking about software.

I dont own a mac, and im using linux as server only, so i dont have a problem with DX.

t2k
5th January 2003, 03:41 AM
In my software, you aren't just manipulating data, you're manipulating code as well. Thus within the framework of my software, is possible to create media which depends on the existence of code - DirectX code, for instance. It is also possible to create media which depends on the existence of OpenGL. Its even possible to create media which depends on the existence of 5 pieces code written by some obscure person in Russia...

t

GanjaSmokingDon
12th January 2003, 02:20 PM
I Recently Posted A Request On The Forum Reguarding : Importing Live DV Into Director

I Noticed Your Post....To Another Thead

Originally posted by jansi
I think that if you now action script switching to director shouldn't be too hard .
What you get is:

Midi input
Live video input (Dv, Vfw, and USB webcams)
You can use USB joysticks as controlers
access to individual pixel's color value - every effect is possible
Intel's 3d engine



Do You Know How Or Have U Imported Live Dv (via firewire) Into a Director Project???
I Would Really Appreciate Some Feed back If You WOuld Be So Kind As To Let Me Know If This Is REALLY Possible!

Thank You!

Bluelive
21st January 2003, 12:12 AM
Just to make things a bit more anoying, i used C# and DX9 and well, its just way to buggy, stupid new tech.
Going to have to polish up my rusty c++ to get going again, or wait two years on a bug fixed version.

Mattbot
21st January 2003, 12:45 AM
Anyone have any opinions on the Objective C/Cocoa/Quicktime route for making a switcher app for Mac OS X ala MotionDive? I've been considering tinkering with this.

jaw
7th June 2003, 06:58 PM
We don't deal with videos but instead focus on generating 3d stuff in realtime to the music. For that, C++ and OpenGL does the trick. Say hi to 80 frames per second!