While reading my news, I've stumbled on a new app called Plague. No, this is not the game about viruses but a new social network where you can share posts like Twitter or Google+.
What's so great about it? Each post will be shared automatically to 4 other users near your area. If those users do like your post, they can share it to 4 others also...
The basic idea of Plague is creating viral post. The interface is simple and nice. You can see stats about your own posts, where they were seen and how far they have spread. From what I could understand, each post can survive 7 days.
You can get it on the Apple Store:
Or on the Google Play Store:
If you're a musician, you probably already know that many songs often use the same chords. This will lead to some tune sounding a lot like others.
Mathematically, it is expected. With only 7 basic chords (C,D,E,F,G,A,B) to create a song, you will eventually reach all the possibilities even if you have variations, a different tempo and different words.
Almost all pop songs have a 4/4 tempo. This will translate into 4 chords at most for each lyric sentence. Of course you can have more or less but for a basic pop song, the number of chords for each sentence will vary between 1 and 4 chords.
Look around on the web for guitar chords and you'll be surprise how simple it is. For each lyric sentence, with 4 chords, you get a possibility of 2401 variations. But you can't just put random chords together to create a nice melody. Realistically, you may end up will only a hundred variation if you feel adventurous.
Last weekend, I was learning "All About That Bass" from Meghan Trainor on my guitar. Not really my kind of song but it's catchy and my daughters are crazy about it. I usually play classic rock and blues. Seeing me trying one of their favourite songs was a family event. :)
As I was learning the tune, I was having a hard time singing as I was always confusing with "What's Up" by 4 Non Blondes. Both songs do use the same basic chords (A, Bm, D/G). When you listen to both of them, you can clearly hear that they sound alike, "What's Up" being a bit slower.
We finally decided to create a mashup of both songs, just for fun.
Next time you hear the new hit on the pop chart and have a feeling of "Deja Vu", you now know why!
As you know, I have been working on WebcamStudio and ScreenStudio in the last few years. The main issue I faced while developing those projects was ensuring that audio and video would be synchronized.
You have to keep in mind that you are always limited by the power of the CPU. A faster machine means that you will be able to capture larger displays and encode into a more compressed format. Capturing a webcam at 320x240 is actually quite easy to do. Capturing your whole desktop is another thing. The video format is also putting a lot of stress on the CPU as you need to encode the video source (and audio) in realtime.
Assuming that the capture is done at 30 fps, you will have less than 33 milliseconds to capture one frame, apply any video effect on the image and encode it into the video stream. I'm telling you, 33 milliseconds is really not a long time to do all this work. For each frame, WebcamStudio has to:
Capture a single frame from all videos sources (Screen, webcam, image, etc...)
Apply effects on each frame
Merge all capture frames into a single frame by compositing each image one over the other in the proper order
Push the final output frame image to the encoder buffer
Encode the image frames from the buffer into the video file.
Synchronize captured audio with the video stream in the video file.
The same goes on with audio in WebcamStudio. Frankly, a lot is happening in a 33 milliseconds timespan.
ScreenStudio has a simpler approach. It relies on FFMPEG or AVCONV to execute the desktop capture into a video stream. Where WebcamStudio is doing all the job, ScreenStudio is relying on FFMPEG/AVCONV to do that job.
The biggest issue when capturing audio and video is synchronizing them. Look around the web, the issue of unsynchronized audio and video is everywhere. Why is it so hard to do?
At the low level, when you capture a single image frame from a video source or a single audio frame from an audio source, a timestamp is set to the frame. This timestamp (PTS: Presentation TimeStamp) is used to tell the encoder when to use this frame in the final video stream. The software executing the capture will rely on the driver used to set the proper timestamp on each frame. Sadly, each driver (video or audio) will provide two kinds of value:
Zero based: The first captured frame is 0, the second is 1, and so on...
Time based: Each captured frame is using the current clock time.
When using multiple capture sources (audio and video), it becomes harder to synchronize them is they are using different timestamp values. So you might think that we just need to use a conversion to set every input stream to the same type of PTS... Wrong! Technically is would work in an ideal world but its not.
For example, when capturing images from a webcam, you are totally dependant on the webcam driver. The first image provided by the driver can have the right timestamp if it's based on the clock time but by converting this timestamp to a Zero Based, you are loosing the exact time of that frame. There is no way to know if the first image was captured by the webcam as of now, a few milliseconds ago or a whole second ago. This is due to the fact that the driver is buffering a few frames before making them available to the capturing software.
Have you noticed that when displaying your webcam with any software (Cheese, PhotoBooth, etc...), there is a slight delay before seeing the first image? In some case, you can even see a really small delay between what you are doing and what is actually displayed on your computer screen. Just showing the webcam on the computer screen does not required a lot of processing power. Capture the image and paint it on the screen. Easy, right?
Just do this simple test: Display your webcam on your screen, and count to 5 with your voice and fingers at the same time. You will see a small delay between what you hear from your voice and what is displayed on your computer screen. The difference for this live capture is always around 100 milliseconds. It's not really big and it's almost unnoticeable but it can be a real pain when developing a software that will capture your computer screen, you webcam, the microphone in realtime.
To achieve a perfect synchronization when doing a realtime audio and video capture, many technics can be used. And frankly, sometimes, it's almost impossible to do...
For the last year, I've been working on a small project called ScreenStudio. It lets you record your desktop to create your own screencast on a Ubuntu/Linux computer quite easily.
More than that, ScreenStudio is also able to stream your desktop directly to Ustream/Youtube/Twitch.tv/Hitbox over RTMP to share your gameplay with the world.
A new milestone has been reached this week as I found out that it was possible to port ScreenStudio over OS X for our Apple friends. Yes, you read it right! ScreenStudio does support OS X! As of writing this post, a BETA version is available for you to try it out.
Expect a few bugs and a few issues. But overall, it should work. This video was entirely recorded on an old Macbook 2009 with ScreenStudio. Just make sure that Java 8 is installed and follow the video instructions.
ScreenStudio is getting more and more popular. I'm quite happy about that as the project is getting more followers,
If you are following me on Youtube (http://youtube.com/patrickballeux), I often release screenscasts recorded with ScreenStudio. Today, I've moved to a dedicated Youtube channel for those videos made with ScreenStudio.
At the same time, if you are also featuring videos related to screencasting on Ubuntu (Linux), share the link with ScreenStudio's G+ page and your channel will be featured on ScreenStudio's Youtube channel.
If you own a blog or a website, you may have integrated banners and ads to make a bit of money from your content.
Everybody knows about Google Adsense (adsense.google.com). Did you know that there are other alternatives?
I've created a website where I collect Ads Services and compare them with each other. As I found out while registering with them, they may have requirements that may prevent you from using their services.
Often the type of website is a major issue. The traffic generated by your content may also be another hurdle as some providers to require more than a thousand visits per day.
Visit ads.crombz.com to view the ads providers that can be easily integrated in your website.