iPhone 5 in September, Design Similar to iPhone 4?

Reuters reports that Apple plans to begin iPhone 5 production in July and this next-generation of iPhone will be ready for shipping in September.

Apple Inc suppliers will begin production of its next-generation iPhone in July this year, with the finished product likely to begin shipping in September, three people familiar with the matter said on Wednesday.

The upcoming iPhone 5 is said to look similar to the current iPhone 4. The iPhone 5 is also rumored to have bigger screen, thinner bezel, 64GB model, dual-core A5 processor and graphics enhancements found in the iPad 2, and new cloud-based functionality through Apple’s upcoming iOS 5.

The new smartphone will have a faster processor but will look largely similar to the current iPhone 4, one of the people said. They declined to be identified because the plans were not yet public.

Analyst Ming-Chi Kuo with Concord Securities has heard that “the iPhone 5 will include the faster A5 processor already found in the iPad 2, as well as a higher resolution 8 megapixel rear camera. He has also been told that Apple will switch to a Qualcomm baseband for both GSM and CDMA models, along with an improved antenna design.”

If true, the iPhones are going to be grouped with iPods from now on. Apple typically holds a fall media event at the beginning of September for iPods. Apple promises to unveil iOS 5 at WWDC 2011, kicks off June 6th. [9to5mac]

You can follow us on Twitter, Join us at Facebook, and Subscribed to RSS Feed to receive latest updates.

Digg Twitter StumbleUpon Facebook Reddit del.icio.us

Real Racing 2 HD for iPad 2 Gets 1080p TV-out

Real Racing 2 HD gets full 1080p Video-out and dual screen gaming support for the iPad 2. With this update, just plug your AV cable into your iPad 2, and play Real Racing 2 on full 1080p (1920×1080) resolution.

Are you ready for the ultimate racing experience for iOS? Optimized specifically for iPad and iPad 2, Real Racing 2 HD is a heart-pounding, visually astounding 3D racer that puts the steering wheel directly in your hands. The expansive, 10-plus hour career mode and extensive, one-of-a-kind multiplayer means the fight for first place is never over.

What’s New In This Version:

  • Full HD 1080p TV-out and dual screen gaming support on iPad 2. Experience Real Racing 2 HD like never before in stunning, true 1080p while real-time racing telemetry is displayed on iPad 2
  • Enhanced visuals for Alkeisha Island and San Arcana tracks on iPad 2
  • Memory optimizations to minimize crashes
  • Various minor improvements and fixes

You can purchase an download Real Racing 2 HD from the App Store for $9.99. [Download Link]

You can follow us on Twitter, Join us at Facebook, and Subscribed to RSS Feed to receive latest updates.

Also checkout:

Digg Twitter StumbleUpon Facebook Reddit del.icio.us

Android App Development: Android Content Providers

In the last post we created a sqlite database android application. We saw that the database file is stored in the file system directories of that application meaning that the database cannot be accessed from another application. You can apply the same thing on any resources within your application (Files, images, videos, …).

But there is a method to expose your data across multiple applications: Content Providers.
Content Providers expose an application’s data across all other applications, you can use content providers to store or retrieve data of one application from any other application.

Android default content providers:

There are many built-in content providers supplied by OS. They are defined in the android.provider package, they include:

  • Browser.
  • Calllog.
  • Live Folders.
  • Contacts Contract.
  • Media Store.
  • Settings.

content providers basics:

The concept of content providers is pretty similar to the concept of ASP.NET Web Services they provide data encapsulation through exposing data by URis. Any content provider is invoked by a URi in the form of content://provider_name . for example the URi of the Contacts content provider that retrieves all contacts is in the following form content://contacts/people. If you want to retrieve a particular contact (by its ID) then it would be in this form: content://contacts/people/5.

You do not need to write the URis of the content providers manually as they are stored as constant values in their respective content provider classes.

The Uri of the Contacts phones content provider is defined in:

ContactsContract.CommonDataKinds.Phone.CONTENT_URI

(content://com.android.contacts/data/phones)

The Uri of the browser Bookmarks content provider is defined in

Browser.BOOKMARKS_URI

(content://browser/bookmarks)

The Media store (Video) stored in external device (SD Card) is defined in

MediaStore.Video.Media.EXTERNAL_CONTENT_URI

(content://media/external/video/media) and so on.

Content providers allow you to perform basic CRUD operations: Create,Read, Update and Delete on data.

Making Queries:

To retrieve data from a content provider we run a sql-like query using ManagedQuery object. The ManagedQuery object returns a cursor holding the result set.

To retrieve a list of all contacts and display them in a ListView
We first define our activity xml layout:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <TextView
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:id="@+id/txt"
  />
<ListView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/list"
/>
</LinearLayout>

And define the layout of each row in the ListView:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:orientation="horizontal"
  >
  <TextView
  android:layout_width="100px"
  android:layout_height="wrap_content"
  android:id="@+id/txtName"
  android:layout_weight="1"
  />
  <TextView
  android:layout_width="100px"
  android:layout_height="wrap_content"
  android:id="@+id/txtNumber"
  android:layout_weight="1"
  />
</LinearLayout>

Remember to add the following permission to the manifest.xml file

<uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>

To retrieve the contacts and bind them to the listView:

String [] projection=new String[]{ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME
,ContactsContract.CommonDataKinds.Phone.NUMBER,ContactsContract.CommonDataKinds.Phone._ID};
        txt.setText(ContactsContract.PhoneLookup.CONTENT_FILTER_URI.toString());
       Uri contacts =  ContactsContract.CommonDataKinds.Phone.CONTENT_URI;

        Cursor managedCursor = managedQuery(contacts,projection,null,null,null);
        //Cursor managedCursor =cr.query(contacts, projection, null, null, null);
        ListAdapter sca=new SimpleCursorAdapter(this,R.layout.listrow,managedCursor,projection,to);
        list.setAdapter(sca);

The above code retrieves all the contacts in the following steps:

  1. We first define the projection of our query, we define the columns we want to retrieve in the result set.We define a String array containing the names of the columns we want to retreieve.The contacts column names are defined in ContactsContract.CommonDataKinds.Phone class.Note that we need to retrieve the _ID column as the cursor that retrieves the data expects such a column to be there.
  2. We specify the Uri of the content provider ContactsContract.CommonDataKinds.Phone.CONTENT_URI
  3. We retrieve the data by a cursor
    Cursor managedCursor = managedQuery(contacts,projection,null,null,null);The cursor is retrieved by executing a managedQuery which has the following parameters: 

    1. The Uri of the content provider.
    2. A String Array of the columns to be retrieved (projection)
    3. Where clause.
    4. String array containing selection arguments values.
    5. String representing the order by clause, we can use it but here it will be null. If we want to sort the contacts by name it would be ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME +“ asc”
  4. Then we create a list adapeter using the cursor and bind the ListView to it.

The previous example retrieves all the contacts but what if we want to retrieve a certain contact by name:
There are two ways:

  1. Using the same code above but adding a where clause and selection arguments to the managed wuery so it becomes like this:
    Cursor managedCursor = managedQuery(contacts,projection,ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME+"=?"
  2. ,new String[]{"Jack"},null);

    This retrieves contact info of a person named Jack.

  3. The other method is to inject the query in the Uri, instead of using Uri
    contacts =  ContactsContract.CommonDataKinds.Phone.CONTENT_URI;

    we use:

    Uri contacts=Uri.withAppendedPath(ContactsContract.CommonDataKinds.Phone.CONTENT_FILTER_URI,
  4. Uri.encode("Jack"));

    This is equivalent to the following Uri content://com.android.contacts/data/phones/Jack.

Inserting,updating and deleting:

To insert data using a content provider there are two methods

First:
Using the Insert() method of your activity’s content resolver object. Like this example t insert a new bookmark to the browser:

ContentValues cv=new ContentValues();
      cv.put(Browser.BookmarkColumns.TITLE, "End Gadget");
      cv.put(Browser.BookmarkColumns.URL, "http://www.engadget.com/");
      cv.put(Browser.BookmarkColumns.BOOKMARK,1);
      Uri u= getContentResolver().insert(Browser.BOOKMARKS_URI, cv);

We create a ContentValues object and add to it all the required fields, then we call getContentResolver().insert method which returns the Uri of the newly inserted item.
It would be in this example content://browser/bookmarks/17
We can use the generated Uri to update or delete the item later.

Second:
We can replace the getcontentresolver().insert() method with bulkInsert method if we want to insert multiple items at a time.
The bulkInsert(Uri url,ContentValues[] values) method returns the number of new items created.

Updating info using Content Providers:

To update data using content providers, we use getContnetResolver.Update() method:
This code updates the title of an existing browser bookmark:

ContentValues cv=new ContentValues();
cv.put(Browser.BookmarkColumns.TITLE, "End Gadget mod");
      //uriBook= getContentResolver().insert(Browser.BOOKMARKS_URI, cv);
      getContentResolver().update(Browser.BOOKMARKS_URI, cv, BookmarkColumns.TITLE+"=?", new String[]{"End Gadget"});

the Update method has the following parameters:

  • Content Providers Uri
  • ContentValues object having the new values
  • Where clause
  • String array of the where clause arguments values

Deleting info using Content Providers:

To delete info we use getContentResolver.Delete() method
To delete a bookmark:

getContentResolver().delete(Browser.BOOKMARKS_URI,BookmarkColumns.TITLE+"=?", new String[]{"Mobile Orchard"});

The delete function has the following parameters:

  • Content Providers Uri
  • Where clause
  • String array of the where clause arguments values

Remember to add the following permissions to the manifest.xml to add and read browser bookmarks:

<uses-permission android:name="android.permission.WRITE_CONTACTS"></uses-permission>
<uses-permission android:name="com.android.browser.permission.WRITE_HISTORY_BOOKMARKS"></uses-permission>

That is it for todays tutorial, check back next week for my next Android App Development Tutorial.

Tight Typography Tips #6 – “Stay Consistent”

This entry is part 6 of 6 in the series Ten Tight Typography Tips

Personally, this is probably the most difficult tip for me to follow. I always start the project and begin formulating a style and theme, then as creativity takes over and I continue to experiment with what else I could include or “Oh, what would that look like…”, I find myself going down a creative rabbit trail. Next thing you know the project is done, but it looks like four different artists played “Tag, You’re up now!” with my comp. By this I mean that my last five seconds look nothing like my first five seconds.

Now, there isn’t a consistency police force who will take you away for this offense, in fact… the vast majority of viewers won’t even clue in to this. But this is something to watch for in order to grown as an artist and to raise the bar on what you’re putting out. Once you get started on a project, stop periodically and go back to the beginning. Look at the pacing, colors, layout, elements… try to keep at least one of those factors consistent throughout the entirety of the piece all the way till the very end. When you are intentional about maintaining a similar ending to the beginning, you’ll be surprised how much more impact the project will have in the viewers’ memory. Again, they might know it, but they’ll know it…


Tutorial

Download Tutorial .mp4

File size: 42.1 MB


Read More

Tight Typography Tips #5 – “I Like The Way You Move”

This entry is part 5 of 6 in the series Ten Tight Typography Tips

One of the biggest elements that will bump your animation from amateur to amazing is the movement. This is the ultimate yet simplest test of your abilities in the field of animation… how well you animate. We always know when we see a polished, professional piece. The goal is for your animations to feel natural and not be overly noticeable or distracting. I often refer to our Premium Tutorial about the “12 Basic Principles of Animation” as it has been quiet influential in my growth as an artist. I actually went out and bought the book this originated from just so I’d have my own copy.


Tutorial

Download Tutorial .mp4

File size: 70.9 MB

Additional Aetuts+ Resources


Read More

Clarifying Our Discount Membership Promotion

Hi everyone,

I’m sure you would have noticed the $0.99 membership promotion we ran yesterday.

Tuts+ has never tried Promotion of a membership in this way before. Ever. We are not internet marketers so we are still learning and still make mistakes. We didn’t know what would be received poorly and what would be taken positively.

In proofing the post I wasn’t as thorough as I should have been. I wasn’t clear that it would default to a regular $9 membership after the first month. Naturally, this caused anger. To make sure nobody is adversely impacted from this I will be individually emailing those who were fortunate enough to get the offer. If they don’t get the email then we’ll happily refund them.

There was some confusion around the discount code. There was only the one code for all of the sites, but it had many uses. It ran out very quickly, in 3.5 hours. Again, this was the first time we’ve ever done something like this, and there was no way to tell how popular it would or wouldn’t be. There’s a high likelihood that we’ll do this or something similar to it again, but we can be confident in saying the same mistakes wont be made again.

I’m sorry for any confusion or disappointment that was caused by this, we’ll know how to better handle it next time.


Read More

Outstanding Vector Art from Creattica


High-quality vector work always blows me away. Creattica, Envato’s gallery website of great design and inspirational imagery, is always a great source to find a little vector inspiration. Here’s a quick rundown of some of the awesome work that has been recently submitted to Creattica under the vector graphics category.
Continue reading “Outstanding Vector Art from Creattica”

Workshop #169: Mourning Raven by Excellion

At Audiotuts+ we regularly put up a reader track for workshopping and critique (find out how to submit a track). This is how it works: you upload your song, and every week or so we’ll publish one here and step away from the podium. The floor is yours to talk about the track and how the artist can fix problems in and improve upon the mix and the song.

This track has been submitted for your friendly, constructive criticism. They have put their track (and their heart and soul) in your hands to learn and get useful feedback.

  • Do you enjoy the song or track itself? Does it have potential?
  • Can the arrangement be improved?
  • How did you find the mix? What would you do differently?
  • What do you enjoy about the rhythm track? What can be done to improve it?
  • Is the choice of instruments relevant and effective for the style/song?
  • Are the lyrics (if any) effective? Does the style, arrangement and genre of the song suit them?
  • Can you suggest any specific techniques that might improve the track?
  • Do you have any other constructive feedback?

Mourning Raven by Excellion

Artist’s website: facebook.com/excellionband

Description of the track:

First track of Excellion’s new album “Welcome Home…My Son”.

Download audio file (MourningRaven.mp3)

Terms of Use: Users can stream the track for the purposes of giving feedback but cannot download or redistribute it.

Have a listen to the track and offer your constructive criticism for this Workshop in the comments section.


Submit Your Tracks for Workshopping

Need constructive criticism on your own tracks? Submit them using this form.


Read More

Sound Design: Falling Forever (The Shepard Tone)

Are you familiar with the sensation of falling or a heavy weighted feeling? Ever wonder how to create this sensation audibly but make it last forever? Well if you do then you will learn how to create this really cool effect called the Shepard Tone.

Download audio file (step_5.mp3)

Named after Roger Shepard, this cool effect relies heavily on psychoacoustics and utilizes the harmonic series in a rather strange way. If you have never heard this effect before then I strongly urge you to sit down the first time you hear it as some people may get slightly nauseous hearing it. This effect is like the audio equivalent of a barbers pole. If you are ready to jump into infinity then lets go!


Step 1: Understanding the Shepard Tone

Before you can really apply this effect you must understand how it works. The Shepard Tone fundamentally is based on sine waves. You start with a Sine wave say on note A4 which sits at 440 Hz and you have it glissando down to A3 at 220 Hz over a period of time. During the same time you have another glissando starting on A5 at 880 Hz and dropping down to 440 Hz.

If you were to repeat this cycle the glissando starting on 440 Hz would pick up where the glissando starting on 880 Hz left off. This creates the continued sensation of a falling pitch. However, if you repeat the cycle then you will quickly jump back to 880 Hz and will noticably hear it. So what do we do? In order to achieve a smooth and seemingly endless cycle we need to fade in the upper most glissando and fade out the lower most.

Here is an example with the jump back to the top at the repeat so you can better grasp the concept…

Download audio file (step_1.mp3)


Step 2: Setting Up Notes

To create the Shepard Tone we will first need to place the notes into our DAW. First create a region/pattern/block that starts on A5 and glissandos down to A4 over a period of 8 bars. Next copy this region/pattern/block and move both the starting pitch and the glissando down a octave so it starts on A4 and ends on A3. Repeat this process two more times so that your lowest glissando starts on A2 and ends on A1.

Very big note:

Make sure you can independently control the volume of each of the regions/patterns/blocks so that any volume automation does not affect the other regions/patterns/blocks. If you need to make multiple instances of your synthesizer to do so then so be it.

Next make sure each glissando is set to a sine wave patch. The point of using a sine wave patch is because it is so pure that lining up the harmonics on the repeat is much easier; since sine waves lack harmonics. Here is an what you should have so far…

Download audio file (step_2.mp3)


Step 3: Volume Automation

While having these octave glissandos is cool and all, it doesn’t give us the sense of a falling pitch because it is all falling evenly. To trick our brains into following the “center” pitch we need to fade the upper and lower most glissandos.

Start by making a volume automation clip for the top most glissando (the A5 gliss). Fade the volume from 0 to 100% all the way across the 8 bars we have the glissando happening. This way we will not hear the higher notes of the glissando but by the time we can audibly hear it, it will be somewhere closer to A4 before finally arriving at full volume at A4.

Next we will do the same thing to the lower glissando but in reverse. Create yourself a volume automation that starts at 100% and ends at 0. This glissando will pick up where the one above it left off at full volume and gradually fade away over the 8 bars so our ears shift focus back to the middle and upper range of the Shepard Tone.

Here is what we should have now. (Note the fade in is so it is a little more bearable to listen to.)

Download audio file (step_3.mp3)


Step 4: Looping and Adding Space

With our Shepard Tone created we need to loop it in order to get the full effect. Either duplicate all of your regions/patterns/blocks along with your automation or set a loop marker in your DAW so it goes indefinitely.

Next we need to make it sound a little more creepy to help get the full effect across. This is all a matter of preference but I recommend placing a either a flanger or a chorusing effect on the whole thing to add just a little movement and thicken it up. Afterwards a healthy amount of reverb to help smear the audio spectrum works very well with this effect.

Here is what I have come with…

Download audio file (step_4.mp3)


Step 5: Final Thoughts

You may have noticed a slight pop in the middle of the Shepard Tone, allow me to explain. This is a mathematically based effect that requires precision to sound flawless; part of this is that the sine waves must stay constant on the loop points. If a sine wave starts at null point (zero) then it must also end on a null point in order loop without any pops. However since we have sine waves moving at frequencies of 880, 440, 220, and 110, each one will have a different looping point. While we can mathematically line these up, doing so in a DAW is much harder of tempo and meter. If the small pop is extremely irritating then you are in luck!

There are plugins that will create the glissando Shepard Tone for you but you will be confined to pure tone waves. For those of you content with the DAW version then you can play around with more complicated waveforms to see how well they align and get different sounds.

One final note: Why should we have to use a glissando going down or a glissando at all? Try recreating this effect with the glissando going up an octave for a never ending lifting feeling or use rhythms and individual notes to align it to a beat. In addition, you do not need to strictly use a chromatic scale as any scale can work as long as it is consistent.

I hope you have learned something valuable from this tutorial and that this effect will come in handy. Until next time, cheers!

Download audio file (step_5.mp3)


Read More

Clarifying Our Discount Membership Promotion

Hi everyone,

I’m sure you would have noticed the $0.99 membership promotion we ran yesterday.

Tuts+ has never tried Promotion of a membership in this way before. Ever. We are not internet marketers so we are still learning and still make mistakes. We didn’t know what would be received poorly and what would be taken positively.

In proofing the post I wasn’t as thorough as I should have been. I wasn’t clear that it would default to a regular $9 membership after the first month. Naturally, this caused anger. To make sure nobody is adversely impacted from this I will be individually emailing those who were fortunate enough to get the offer. If they don’t get the email then we’ll happily refund them.

There was some confusion around the discount code. There was only the one code for all of the sites, but it had many uses. It ran out very quickly, in 3.5 hours. Again, this was the first time we’ve ever done something like this, and there was no way to tell how popular it would or wouldn’t be. There’s a high likelihood that we’ll do this or something similar to it again, but we can be confident in saying the same mistakes wont be made again.

I’m sorry for any confusion or disappointment that was caused by this, we’ll know how to better handle it next time.


Read More

Photoshop Celebrates 2 Million Likes: Giving Away Copies of Photoshop CS5 and iPad


If you follow Photoshop on Facebook you probably already know that they recently celebrated their 2 millionth like on Facebook. You may remember late last year when I reported that they had just celebrated their 1 millionth like. Back then, they were sending huge amounts of traffic to sites in the Photoshop community, often crashing a server or two in the process. Today, they are still linking to Photoshop-related sites like Psdtuts but are also a bit more focused on promoting the Photoshop brand.

As Photoshop’s biggest fan and advocate, we at Psdtuts would like to congratulate the entire Photoshop team for a job well done. We think they are doing a great job managing their social media presence and look forward to celebrating 3 million and beyond.

With that said, do you think that Photoshop is doing a good job maintaining their Facebook page? Is there anything that you’d like them to do differently?


Win a Free Copy of Photoshop CS5 and an iPad

In celebration of their 2 millionth like, Photoshop is now giving away several copies of Photoshop CS5 and an iPad on their blog. All you have to do is leave a comment on their blog and tell them what Photoshop means to you. So head over to their site and enter before it’s too late!

Read More

What Do I Need to Retouch Portraits?


Are you new to Photoshop? Have you been trying to teach yourself the basics of Photoshop but have found the amount of educational material available on the net a bit overwhelming? As the world’s #1 Photoshop site, we’ve published a lot of tutorials. So many, in fact, that we understand how overwhelming our site may be to those of you who may be brand new to Photoshop. This tutorial is part of a 25-part video series demonstrating everything you will need to know to start working in Photoshop.

Photoshop Basix, by Adobe Certified Expert and Instructor, Martin Perhiniak includes 25 short video tutorials, around 5 – 10 minutes in length that will teach you all the fundamentals of working with Photoshop. Today’s tutorial, Part 17: What Do I Need to Retouch Portraits? will explain a little about the Red-eye removal tool, Healing brushes, the Mixer Brush tool, and how to use them to retouch your photographs. Let’s get started!


Read More

Clarifying Our Discount Membership Promotion


Hi everyone,

I’m sure you would have noticed the $0.99 membership promotion we ran yesterday.

Tuts+ has never tried Promotion of a membership in this way before. Ever. We are not internet marketers so we are still learning and still make mistakes. We didn’t know what would be received poorly and what would be taken positively.

In proofing the post I wasn’t as thorough as I should have been. I wasn’t clear that it would default to a regular $9 membership after the first month. Naturally, this caused anger. To make sure nobody is adversely impacted from this I will be individually emailing those who were fortunate enough to get the offer. If they don’t get the email then we’ll happily refund them.

There was some confusion around the discount code. There was only the one code for all of the sites, but it had many uses. It ran out very quickly, in 3.5 hours. Again, this was the first time we’ve ever done something like this, and there was no way to tell how popular it would or wouldn’t be. There’s a high likelihood that we’ll do this or something similar to it again, but we can be confident in saying the same mistakes wont be made again.

I’m sorry for any confusion or disappointment that was caused by this, we’ll know how to better handle it next time.

Read More