Should I create a custom VJing application based on Quartz Composer? [closed] - quartz-composer

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 6 years ago.
Improve this question
I'm thinking of creating a custom JVing application as a Quartz Composer composition controlled by a MIDI controller.
Tempo-aware
I want to use the track's tempo as data to affect the visuals - see below for details. That tempo will be input manually by the VJ, while listening to the music and figuring it out "by ear". In the app, it would be possible to input the Beats Per Minute number, and the app would also allow the VJ to (re)set the time of the "tick" by hitting a key/pad.
How this tempo would be used
Duration of animations: this tempo value will be used to set the duration of some of the looping animations, so that they loop at an interval of tempo * N.
Rendering on next "tick": Each time the VJ triggers a live change in the composition (for example changing from color A to color B, from image C to image D, or from animation pattern E to animation pattern F), that change is rendered on the next "tick" of the tempo.
I'm a total beginner with QC and VJing, but I'm an experienced programmer (Java, JavaScript). I have a decent amount of free time and I'm getting really interested in digital art. My question is the following: if you were in my situation, would you build the above custom VJing application based on QC? Or would you choose another software solution to achieve the same features?
Thanks for your time.

I work in a high school theatre. Just this weekend we had a live band come in as an act. I had some of our advanced students help me build a VJ software in QC to run visuals with a midi controller and iPad (via OSC). If we had a little less time we probably would have just purchased something like VDMX to control everything, but seeing as we had two weeks of free time before the show, we made it a learning opportunity.
If we had found something published in QC, we probably would have used it as a good base tool for what we had created to get a little more function out of what we got in the time we had.
If you are doing it for personal use/shareware, I say go for it. We had a great time making what we did with some fantastic results

I highly recommend you to use Quartz Composer for your needs. Despite some flaws in the application (nothing is perfect), QC is deeply integrated with OS, compared to other apps (such as Vuo, Derivative TouchDesigner, VVVV, Troikatronix Isadora, Cycling'74 MaxMSP, etc), supports JavaScript, has third party tools for working with XBox Kinect, can work with Catalyst Pixelmad and can be implemented via Swift or Obj-C.

Related

Confused on what license to choose [closed]

Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 9 years ago.
Improve this question
I have worked with my friend on a project and made a website. This is the website: TOFSIS
It's more or less like an Educational CMS. Now the thing is, it's in its initial stage. We still have to prepare more modules for the site as instructed by the college.
So, my partner and I thought of making it open sourced so that people in college can build on it. We want to choose from a pool of eligible developers who are really interested and give the codes only to them under certain conditions so that they can prepare a particular module for the site or fix the existing bugs. And for things like GPA calculator, attendance calculator, you don't need the codes for the site.
I read completely about licenses and I don't think we can choose open source license as yet because we are not giving out the codes now. But what about Creative Commons? Just adding a CC badge like SO.
I see that on SO footer there is a CC stamp. SO is not open sourced to my knowledge. But I also heard CC is not meant for softwares or codes. So when does a developer use CC license? And is it fair in my case to use a GPL without giving out the code now but put some more additional custom conditions?
What should I do in my case? I want to put up a license. I don't want anyone to commercialise and I want people to share back things too.
Thank You
The AGPL is possibly the best license choice if you want to make the source code open for people to improve, but also want to force people to share back their improvements.
It doesn't explicitly prevent commercialisation, but anyone who makes a commercial derivative work would have to share all their changes under the AGPL. In practice, this means that a commercial entity would have to find some other way of creating value, e.g. providing value-added services.
Note: The Open Source Definition, require that a license has "No Discrimination Against Fields Of Endeavour". This means that you can't go adding clauses that prohibit commercial use if you want to be classified as open source. You have to let businesses use open source code fairly on the same terms, just like everyone else.
Before I answer, first a question: why not make the code widely available? Since you appear to have no intention of commercializing it, why go through the hassle of using a non-OSS licence (which will spark discussions with your contributors).
Anyway, a good licence could be the Microsoft Reference Source Licence, which will allow viewing rights, but not modification / redistribution. You can make a separate agreement to allow specific people to contribute, ask a lawyer since this goes into contract-law territory (you need permission from them to re-license their code).
But I also heard CC is not meant for softwares or codes. So when does a developer use CC license?
A software developer should never use a CC license for a software program.
Creative Common licenses are fitting for works like images, photos, music, video or the text of documents.
They are less fitting for software because a software program has two forms: object code and source code. The CC licenses do not work well with these two forms. E.g you can edit a photo or a music quite well, that does not work well with software if you don't have the source-code.
CC on stackoverflow btw. is used for the content. So you can edit my answer now and improve it ;)

Any benefit/disadvantages to open beta vs. closed beta for webapp [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 3 years ago.
Improve this question
This isn't a question about code, but it's programming related. We have a web app that's ready for beta testing. Has anyone noticed any difference between open beta vs. closed beta in terms of the quality or quantity of feedback the testers give or any other factors?
With a closed beta, you can limit the number of users
This might not seem like a big deal but, consider this...
Closed Beta:
the user base is selected by requiring them to write a proposal in how they expect to use the app
you release a highly anticipated app to 100 users with no extra invites for the first month
those users use the program on a regular basis and pick through most of the really common bugs that slipped through the pre-beta release QC.
those users feel privileged to use the app so they brag to everybody about how much they love it (tons of free PR) and are less inclined to trash it because it's still a 'closed beta for a reason'
most of the commonly occurring bugs are identified in the first month and a limited number of invites are given to the first set of beta testers to progress into step 2 of beta
or, there are still a nightmarish number of bugs in the app and further invites are postponed for review until the next release cycle.
Open Beta:
you feel like your app is sufficiently polished so you release it to the masses as a public beta
the more objective users start to find and report bugs
unfortunately, the sheer number of bug submissions bloats the bug tracker so finding bugs becomes sufficiently difficult
since it's hard to find bugs, duplicates start popping up and the bug tracker bloats even more
you spend x amount of effort wasted trying to keep the bug tracker clean while also trying to fix bugs in the code
the less objective users give the app a shot and discover that 'not everything' works perfectly or works in a the way they expected (intuitive)
the less objective users run off to their little blogs and start making posts like 'OMG WTF srsly, [appName] sucks for reason [x] and reason [y] and [z]
all the little 'buzz bloggers' trample all over the name of your app because it makes them feel 'empowered' to publicly rant about any/everything
google indexes all of the blog rants because they contain a lot of indicative keywords related to your product so the top 2 pages that come up when you enter your apps name in google usually involve something along the lines of '[appName] sucks'.
One of the biggest benefits of a 'closed beta' is, you have the ability to control your work load based on how many users you allow and what types of users you allow.
You need an army of 'objective' users to back you up against the 'subjective' users because the ladder group's main purpose in life is to troll the web looking for an app to trash and create a lot of sensational anti-hype over; all in the name of attracting more traffic to their blog.
If you want a really good example of how to successfully run a closed beta look to Google.
with gmail they had a strictly limited closed beta to start
they fixed any obvious bugs discovered by the first round of beta testers
more invites are given out
then they start collecting new ideas of features to implement in their webapp from the beta users
they incorporate features while simultaneously fixing bugs
they dole out more invites
continue tracking features requests and bug submissions
when it's sufficiently polished they release it to open beta
GMail remains in open beta for 3 years
Why? Google is smart. If some random obscure bug pops up 2 years into open beta nobody can really trash google for it because it's still 'beta'. It's like Google's little way of saying, it's good but we're not completely satisfied with just good. Even if they didn't touch the codebase for the last 2 years of the beta, it still gives the impression of 'they're still perfecting it'.
Which leads me to the single most import point of why you'd want to limit the beta...
Once created, you can't change people's perceptions about your product
Watch this, "How to Ignore Marketing and Become Irrelevant in Two Easy Steps" to see what I mean. It's easily one of the most intriguing presentations I have seen.
Note: I've personally participated in multiple 'closed' betas. Namely, GMail, Google Wave, Boxee, Songbird, and a few others.
With a closed beta the people generally want to be there. They've either waited patiently in line to get an invite after signing up, or they've forgotten about it by the time it starts.
With an open beta, you get more people but they tend to be the "hey, this website is neat, I think I'll... OOH SHINY! runs off after a piece of tin foil" type.

How to begin with augmented reality? [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 7 years ago.
Improve this question
I'm currently an undergrad in computer science and I'll be entering my final year next year. Augmented reality is something I find to be a really interesting topic, but I have no idea where to start learning about it.
Where do you start learning about this topic and what libraries are available?
Being a quite popular buzz word, augmented reality can be build with some distinct algorithms which can be learnt separately. Usually it covers:
planar object detection (can be a marker or previously trained object).
SURF/SIFT/FAST descriptors, RANSAC for homography matrix calculation
store trained objects in DB (KD-trees)
camera position estimation
augmenting 3D model with custom objects (OpenGL)
To dive into this subject I would recommend this steps:
All of this is already implemented in OpevCV, you can start playing with its examples.
To understand what's happening under the hood, take probably the best book on this topic:
"Multiple View Geometry in Computer Vision" http://www.robots.ox.ac.uk/~vgg/hzbook/ .
If you are going to play with AR on mobile phones take a look on works of scientific labs
like http://mi.eng.cam.ac.uk/~sjt59/hips.html (FAST) and http://www.robots.ox.ac.uk/~gk/PTAM/ (PTAM).
If you're comfortable with Objective-C, downloading and playing with ARKit would be great place to start. It's based on magnetometer/accelerometer readings rather than pattern recognition.
If pattern recognition is what you're interested in, then start with artoolkit instead. But that library is a bit more intense, naturally.
Take a look at this augmented reality framework comparison table to select a suitable AR framework for your work.
qualcomm's vuforia AR api is a great place to start since it is free and it has all the AR features we can think of.
And also this book gave me a huge help to start building AR apps.
Developing AR Games for iOS and Android
by Dominic Cushnan, Hassan EL Habbak
Ben Newhouse, the man behind Yelp's augmented reality Monocle feature, gave a talk at Stanford about the process he went through when making it. It is available for free on iTunes U, at this location: https://podcasts.apple.com/us/podcast/iphone-application-development-winter-2010/id384233225
(The link won't work in Chrome, but it does in Safari. If it doesn't work, just search "Yelp Monocle" in iTune's search box, and download the iTunes U lecture.)
The lecture is about programming for the iPhone, but most of it is translatable to other areas. It is packed with valuable information, and has proved extremely useful for me in seeing all the components of what i want to make.
The Pragmatic Programmer AR book is pretty good, lots of code samples and exercises that get you involved, instead of just reading about it. It is a little dated, but it should be a pretty good starting point.
This was extremely helpful to me because of the step by step tutorials and sample code: http://dev.metaio.com/sdk/getting-started/
It takes you from setting up your phone/ dev account through to tracking configurations and 3D content.
I have spent a bit of time looking for AR code for the iPhone. If you want to do AR and locations then download this project
http://github.com/adascent/iPhone-AR-Toolkit
It based on ARKit mentioned above but improved and actually compiles. The orginal AR kit does not support device rotation. Someone else added it but there actual code never worked and so a 3rd person took it and fixed it.
I am currently added more features to this code.
augmented reality is combination of 2 skills: ability to code on smartphones + using all the input sources that the handset can provide to provide interesting applications. Computer vision is a major aspect, since the camera can be used in very many interesting ways. But you must know that knowing any one aspect of it is not good enough. for example if you use comp vis, alone to detect where you are based on the camera input of a shopping mall store it is not going to be easy at all. but if you couple up your gps location etc, the problem reduces to a very managable level. So the important thing is being able to couple ideas from different aspects and knowing a little bit about both aspects. Take a smartphone programming class and a computer vision class. that should get you started.
If you're an undergrad, you start by asking faculty about it (or grad students, if you're in a place with them). Even if they don't know much about it, they'll know where to find out.

Automatically tracking development time [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this question
I'm working on a personal project and I'd love to be able to say at the end:"I've spend X hours on this project". Now one way to solve this, is to use a manual time tracker (worked from: to:). I've ran into problems with this, because I only manage to use it consistently for the first week or two. So I'd like to track development time automatically.
One idea I had was to insert a short script into the build process that that would insert a time stamp into a log file every time a build process is called. Later, I could analyze the intervals between each build and hopefully calculate a somewhat accurate picture of what's going on.
Does anyone else have an idea of how such a time tracking tool could be implemented?
Quick follow up based on the answers already provided:
Stop/start trackers aren't bad, but require a lot of discipline, something that I perhaps should be working on. But they dont work for me.
Specific app-tracking programs are great, but I'm current on Mac OS X.
My opinion is that you would greatly benefit yourself in keeping a light-weight development journal. Notes, sketches, times, dates, etc, designs. It's not an answer to your question, but it is a discipline that few developers have and one that they desperately need.
Life is busy and people must learn to track / budget their time and discipline themselves to take on good behaviors and habits.
I encourage you to fight and win this battle. Don't compromise something so easy to automation when there are greater gains if you improve your skills. You might also want to check out LifeHacker for some ideas.
A bit of a non-answer, but I hope you find it helpful.
If you use source control you can use svn (or any other) hooks on commit and checkout that log timestamps to a db, etc when you check your project out and when you check it back in.
The trick to making this work - and it is easiest on single developer projects - is to MAKE SURE you check your work in when you are done working for a period of time, and that you check it out immediately prior to doing actual work.
This might not be feasible for your project. Build process checking etc suffers from the same issues - namely that you might work for 3 hours and then build 8 hours after that.
We wrote a plug-in for our IDE (IntelliJ in our case) that keeps track of time spent per project automatically. The IDE's API lets you list for events like edits, changing windows, etc., so we log a record every time something like that happens. The reporting module looks at this raw data and determines the total time spent per project by comparing timestamps between records. If the difference is greater than 5 minutes, it assumes no work was done during this time.
It's not perfect and it's not 100% accurate but you do eliminate all the overheard of manually tracking this stuff yourself through some external tool.

Handling paper documentation [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 4 years ago.
Improve this question
After every new program written a lot of paper documentation remains.
Apart from the usual scribble notes from the programmers there usually is a nice heap of papers containing physical model explanations, calculations and so on (equations, tables, graphs, little pictures describing variables ...)
We usually do numerically intensive calculations in console applications, which are not released to the public (remain in the house, only results go out). Before each project is finished all those papers have to be packed somehow with the application, so that one day, when someone will be reusing parts of it, has some idea what is what in there.
So far, we've been using the 'dirty' solution of just scanning all of it, and packing it up on the disc with the application.
So I was wondering ... for all science guys here in a similar situation ... how do you handle project documentation which is needed, but not released to the public ?
(the one that does, goes to the dtp laddies, and they make it nice and shiny - not our problem anymore :)
I use one of three options:
Keep everything in my lab notebooks, which I archive myself, for low-level stuff
Scan the paper document, and add to source control in pdf. It's ugly, but if someone needs it, it's there
Transcribe the equations, results, etc... in a clean format (usually Latex) for future reference, and again, add to source control. Official paper copy gets signed (I work in a highly regulated domain) and filed in a binder.
In the projects I've worked on we have done a lot of physics calculations in our programs and consequently we have a lot of whiteboard sessions with equations we are working on.
We keep a wiki for each major project and after each whiteboard session we physically photograph the whiteboard with a digital camera and upload/organize it within the wiki. We also scan in paper documents from developers notebooks if it is important and include it in the wiki as well.
Then, we back up the wiki on disc for storage. So our solution is pretty similar to yours, other than we use the project wiki for organization.
If it's important, it seems to me you should treat the internal documentation with the same care with which you treat the public docs.
I create UI paper prototypes when designing the UI of an application, which produces lots of A3-sized papers (in one project we had many desks covered with papers). When the design is ready or it needs to be mailed to somebody, I take pictures of it with a digital camera, so that I can produce a series of pictures showing how to perform some tasks on the UI, which serves as documentation of how the application is meant to work. This serves also as a backup, in case somebody steals/cleans away the original papers.
Here is some of the thoughts... Not so practical though :)
We can make it part of our Check-in notes. This may help the developers going to maintain the application.
Update the requirement document/Low level design document with these items