Most Flashes
Digital Camera Accessories – The Remote Flash Trigger
As photographers we spend a lot of time playing with light. Light is our medium, we talk about its color, its quality, its size and its softness. And a lot of our talk is about how to change it. One of the first things that a novice photographer tires of and wants to change is the boring, flat light that their camera flash produces. While there are any number of devices that can filter or shape light one of the biggest groups of light changers are the remote flash triggers.
At the most basic level one of the fastest ways to change flash light from flat and boring is to move its position. If instead of having our flash shoot a head-on beam of light into the subjects face what would happen if we moved the flash up and to the right or left of the subject? The answer is that we get better and more flattering light. However once the flash is moved off of the top of our camera it loses the vital connections required to make it fire. This is where Remote Flash Triggers come to play.
While there are dozens of varieties of flash triggers available they all have one chief purpose: to cause the flash to fire at the precise moment that the camera's shutter is open. This process is what we call "flash synch" and it has been around for about as long as cameras themselves.
Corded flash triggers attach to the top of the camera and have an electrical communications cord of from six inches to over 30 feet which on its other end connects to the flash through either a shoe or a plug of some sort. A flash cord is pretty much error free – if it works it's good, if it doesn't work throw it out and get a new one. However there is now a cord draped across the floor and the photographer's movements are limited by how movable this cord is in its environment.
Here is an important detail to remember: while a flash cord may limit movement or present a slight trip hazard, with the right match of camera, cord and flash full TTL automatic exposure is maintained. With only a very few exceptions, remote flash triggers don't offer automatic exposure.
One of the earliest remote flash triggers is the "electric eye" slave sensor. The slave sensor is still a popular accessory today. A slave sensor requires at least two flash units. The first flash unit sits atop the camera just as it usually does. The second flash is positioned where it is needed and a slave sensor is attached or plugged in. Multiple sensor equipped slave flashes may be used. The slave sensor remote trigger is simplicity itself; so long as the slave sensor's electric eye can see the camera mounted flash, it will trip the slave flash every time that it "sees" the camera flash go off.
Another variation on the original slave sensor is a sensor system built around infrared (IR) controls. Why would anyone go to the expense of using an IR control? The photographer wants to trip one or more slave flash units without adding any flash light from the camera's position. In the previous flash to flash slave setup the camera mounted flash is a part of the exposure and if the photographer is working handheld and change in position changes the main light in the exposure. With an IR controller rather than a master flash on the camera the photographer can roam at will.
Slave sensor flash triggers work pretty well in a studio or living room where there isn't a lot of distance or interference. But what is the answer for the photographer who wants to position a flash out of sight? Electric eye sensors require line of sight to the master flash or IR controller or they won't fire. So much for illuminating a back wall with a flash hidden behind a sofa, or using multiple flashes to fill every dark corner of a church.
To solve this need we take the next step up the ladder and use a radio frequency flash trigger. All the setup is the same with a radio trigger, a controller attached to the camera and a sensor attached to each slave flash. However with radio we now have a system for just about any need. From one camera position it is possible to fire as many flash units as desired at ranges of from 100 to 1,600 feet. Around corners, behind couches, in every dark spot of a church it is possible to add flash light with a radio remote flash trigger.
The effective range of radio communication is one of the attributes that contributes to cost. A basic radio trigger from Promaster that can reach out to around 100 feet may cost less than $80.00 while a system from PocketWizard that can range up to 1,600 feet can hit the wallet for over $400.00 (prices are per remote flash by the way).
If you are attracted to remote flash triggers I suggest going directly to the radio type triggers. They are more versatile and may be used in the studio, in a gym or in a church. There is more cost up front but the photographer won't need to repurchase and upgrade later.
Anytime that the flash is not physically attached to the camera the photographer will need to be shooting in Manual exposure mode. Without the multiple connections that are made between the flash foot and the camera hotshoe automatic exposure is impossible – with two pricey exceptions.
There are two different systems from three manufacturers that permit in-camera exposure control (Program Mode, Aperture (Av) Mode or Manual Mode) of a flash that has no direct connection to the camera. One type uses optical means as seen in the original Nikon CLS Multi Flash System.
CLS used either a camera mounted flash or the built-in flash as a controller that would fire remote flashes while maintaining automatic exposure control over those flashes. By sending out coded 1/10,000 second emissions from the camera flash the remote flashes were told both when to fire and just how much. All of the flashes used must support the CLS system which pretty much confines flash purchase choice to the Nikon brand.
Canon uses a similar concept but the controller is an infrared emitter, the STE-2, rather than a camera flash. Nikon also offers an IR emitter option for its CLS system, the SU-800. Flash controlled or IR controlled these optical trigger systems have an operational range of under 45 feet.
PocketWizard announced a radio remote flash controller that supports camera-based exposure control. Unlike the Canon / Nikon optical systems, the PocketWizard system offers the very large range of radio systems complete with TTL flash control. The PocketWizard system was first made available for Canon digital cameras and in late 2010 a Nikon version was added.
In conclusion: Remote flash triggers are an important accessory for those looking to improve their flash photography. Optical trigger systems such as those that are flash based or infrared based work well in studios, living rooms and other like-sized spaces. Radio trigger systems are more expensive but offer versatility such as the ability to fire a flsh that isn't in line of sight. For the majority of remote flash trigger systems Manual exposure mode is required, a few select systems can add TTL auto-exposure but at a premium price.
About the Author
Stu Eddins is blogger, instructor, merchandiser, and is generally in charge of a lot of things for Porter's Digital Cameras and Imaging. Visit their site at www.porters.com. Years of experience over the counter and in classrooms have turned Stu into an evangelist for image preservation, capturing and sharing memories, and helping people understand digital cameras, digital camera lenses.
What flashes are the best for certain shots?
Please name the best flashes for SLR cameras for most certain shots, like..
What's the best flash for action shots, nature shots, modelling shots etc..
Thank you!
Do you want to know about the various flashes available in the market that you can use for different situations or do you want to know about the various modes that your flash has ?
Give more information including your camera model and the flash unit that you have or your budget if you plan to buy.
Most Flashes
Rosario Dawson & Fat Guy Flashes the President
|
|
Bright Flashes $9.92 Steeped in hardcore but progressive enough to try and pull punk in a new direction, Snapcase hasn't always succeeded and in fact, its back catalog is pretty flawed. But after a decade of daring to be different, Bright Flashes finds the band for the most p |
|
|
Flashes In The Dark $14.89 Flashes In The Dark |
|
|
Hot Flashes $21.99 Hot Flashes - T-Shirt |
|
|
Kent State Golden Flashes Riddell Mini Helmet $31.99 The Riddell Replica Mini football helmet has been a standard in the collectibles industry for years. This Kent State Golden Flashes Replica Riddell Mini Helmet is 6x4.5x5 inches (approximately half the size of a real football helmet)- but with all of the detail. It’s ideal for display in a Den- T.V. Room or Bar. Also one of the most popular items ever for autographing by your favorite player. Item is made of ABS plastic- and features the official team decals- a quarterback style facemask- chinstrap- and internal foam padding. Comes in a stackable- clear dome package that showcases the helmet beautifully. Officially Licensed by the NCAA |
|
|
Flashes of Light LP $12.31 Flashes of Light LP |
|
|
KIPPLE: FLASHES OF IRRATIONAL HAPPINESS $16.39 KIPPLE: FLASHES OF IRRATIONAL HAPPINESS |
|
|
GRANNIES: HOT FLASHES $12.93 GRANNIES: HOT FLASHES |
|
|
Hot Flashes [Original Cast] $17.49 Hot Flashes [Original Cast] |
|
|
Women's: Hot Flashes $21.99 Women's: Hot Flashes - T-Shirt |
|
|
MPS Sticky Filters - Self Adhesive Flash Gel Filters - Large for most flashes $49.99 .Introducing Sticky Filters, a simple filter system that will forever change the way you take flash pictures. Sticky Filters are a little more sticky than a 3M Post-It note and are used to correct for the strange background colorcast of photos taken when using a flash - empowering you, the photographer, over the final look of your photos. Today's computerized exposure control systems balance fill flash exposure with ambient light exposure very evenly, giving rise to a mixed color temperature ... |
|
|
Lightning Flashes in the Sky of Bangkok $49.99 Lightning Flashes in the Sky of Bangkok - Framed Photographic Print |
|
|
Father Flashes $9.67 Father Flashes reimagines what the novel can be or do. Composed of stunning vignettes that capture the deterioration of a father’s mind and body, this novel provides poetic insight into the complex workings of a father-daughter relationship. As the |
|
|
Flashes [Expanded] $24.99 Track Listing: (DISC 1: FLASHES EXPANDED:), (DISC 2: FLASHES EXPANDED:), 1. Ill Wind, 1. Walkin' and Singin', 2. All Over Love Is One, 2. People of the Night, 3. I Can See You, 3. Little Man, 4. Dark World, 4. I Tell You I Know, 5. L.A.P.D., 5. Tomorrow You'll Come Back, 6. High Flying Bird, 6. You're All I See Now, 7. Are You Right?, 7. Hung Up Chick, 8. People of the Night, 8. Sleep, 9. Full Cycle, 9. It's Your Life, 10. Flashes, 11. Water Is Wide, The, 12. Mauti, 13. Waking in the Water, 14. 1 and 100, 15. Frosted Summer Drink |
|
|
Cold Flashes $16.39 As the old adage goes, "if you can't say it in a few pages, you won't in a hundred." The selections in Cold Flashes—very short prose and black-and-white photographs—embody perfectly this transparency, thrift, and restraint. Found here are hi |
|
|
The Most $15.11 The Most |
|
|
Lightning Flashes over a Stand of Trees $39.99 Stephen Alvarez Lightning Flashes over a Stand of Trees - Photographic Print |
|
|
Dramatic Lightning Flashes Over Water $49.99 Bill Curtsinger Dramatic Lightning Flashes Over Water - Photographic Print |
|
|
Whale Flashes His Fluke at Sunset $39.99 Ralph Lee Hopkins Whale Flashes His Fluke at Sunset - Photographic Print |
|
|
Britannica Guide to the 100 Most Influential Scientists $10.41 When Isaac Newton claimed that he only saw further because he stood on the shoulders of giants, he alluded to the long list of geniuses who came before him. The history of science is the story of great discoveries, flashes of intuition that changed the wa |
Adobe Flash: from the Web into a Nokia's Qt
In this section, we explain the benefits of using Qtitan components for the Qt framework and provide valuable usage tips. A component package called Qtitan Multimedia enables Qt developers to tightly integrate various multimedia components, such as Adobe Flash, Microsoft Silverlight movies or Adobe Reader documents, into their applications.
Last time, we integrated a Silverlight banner into a Qt application. Not only did we make the banner show up in a desktop application, but also integrated it on a fairly low level:
we managed to call a function defined in the banner and pass our name to it.
as well as to make the interactive banner call a function defined in the program to process voting results.
More details can be found in our previous post here: Integrating Silverlight into Qt applications. Today, we'll talk about setting up at "working relationship" with Flash movies.
Adobe Flash
We hope there is no need to explain what Flash is. Some associate it with ubiquitous annoying banners, some with browser games, some with Flash videos on various "tube" sites. One fact is obvious - Flash is everywhere, it has conquered the Internet. Macromedia happened to be in the right place on the right time with their new technology called Flash and this "flash" instantly filled the entire Internet, appearing on virtually every site. Simplicity of animation, compact size, powerful development tools - all of these factors made the popularity of this technology go up. A number of alternative Flash editors (working with SWF files) appeared on the market, many featuring ready sets of special effects, which made complex explosions and object morphing a piece of cake. For more complex logic - for instance, game logic - developers can use a built-in programming language called ActionScript. Adobe was also in the right place on the right time and added its name to the name "Flash", so the technology was renamed into Adobe Flash. It was under Adobe's brand that the company released Adobe Flex, a new technology for creating Rich Internet Applications (RIA). This technology allows developers to adapt any desktop application for online use. A number of applications are already available only online, such as the Google Docs text editor. This makes it unnecessary for users to install several versions of many applications on their computers.
It's still hard to tell what benefits this migration of offline apps to the web may bring us. One thing is clear, though - desktop apps are alive and will be around for a good while. So while the industry giants are busy making regular apps go online, we'll do the exact opposite - we'll apply the most advanced Internet technologies in our small and modest desktop Qt application.
Creating an example
Here what we'll need for a sample integration of a Flash movie into a Qt application:
We'll need an Adobe Flash editor to create our movie. Let's use Adobe Flash Builder - its trial version can be downloaded here: adobe.com/products/flashbuilder
To create a Qt application, we'll need Visual Studio C++ 2008 SP1 and a Qt framework version 4.6.x and above built in it.
Finally, we will need Qtitan Multimedia components that can be obtained here: devmachines.com/downloads/free-demo-version.html
What are we going to do today? We'll create a user interface entirely built in Flash that will interact with a Qt application. The second part of our example will deal with a reverse task - sending data from a Qt application to a Flash movie.
Creating a Flash movie
Adobe Flash Builder provides everything necessary for creating Flash applications using the Flex technology. Flex is a large set of classes (Flex SDK) containing many components that were not originally included in Flash. The cool thing about Flex is its declarative MXML interface description language that is structurally very similar to XML. If we compare it with Microsoft Silverlight, we'll see that MXML and Silverlight have an almost identical purpose. We work with XAML last time and now we'll spend some time with MXML. So, Adobe Flash Builder has been downloaded and installed, it's high time we started. Let's create a new project in Adobe Flash Builder using the File -> New -> Flex Project command. We'll enter the name of the project - FlashForm - in the new window. This concludes the project configuration stage, so you can press the Finish button.
devmachines.com/images/article_flash/image0.png
As the result, we have a project ready to be worked on. On the left hand side, in the Package Explorer window, is the project tree. Below the project tree is the Components window with a selection of available interface elements. The center of the window is a work area where our Rich Internet Application will be created.
devmachines.com/images/article_flash/image1.png
Creating an interface is very easy - just drag the elements from the Components tab to the work area and align them on the layout. Let's create something like that:
devmachines.com/images/article_flash/image2.png
Here we applied the Zen style to our application.
Form components have the following names (IDs):
Switches (RadioButton): "mr" and "ms"
Input fields (TextInput): "txtFirstName", "txtLastName", "txtEmail", txtLastName
Text area (TextArea): txtComments
Button (Button): "btnSubmit"
Our next step is the creation of a click handler. Let's pick a button in the designer and select the Generate Event Handler option in the On Click field on the Properties tab. We'll create the following button click handler:
protected function btnSubmit_clickHandler(event:MouseEvent):void{
var mrMs:String;
if (mr.selected == true) mrMs = "Mr.";
if (ms.selected == true) mrMs = "Ms.";
var fn:String = txtFirstName.text;
var ln:String = txtLastName.text;
var em:String = txtEmail.text;
var cm:String = txtComments.text;
ExternalInterface.call("Submit", mrMs, fn, ln, em, cm);
}
Here we collect the input field values from the form and pass them to the call function of the ExternalInterface object. The first parameter of the call function will be the name of a JavaScript function called "Submit". It is followed by the function arguments. In fact, the "Submit" function will be simulated by our Qt application, but everything will look like regular work with regular JavaScript functions on the side of the Flash movie. The ExternalInterface class is used to link the movie with a Flash player container - for instance, a web page or, in our case, the Qtitan::FlashPlayer widget.
We could actually start integrating the movie into our Qt application at this point. However, just to make sure we don't need to go back to the Flash Builder again, we'll fulfill the reverse task - that of passing data from the application to the movie.
Let's open the source code of the movie and add an extra function to the CDATA section.
private function init():void{ExternalInterface.addCallback("Submit", submit);}
We'll add an external container callback function that will enable us to call this function from our Qt application. Let's create this callback function.
private function submit(arg1:String, arg2:String, arg3:String, arg4:String, arg5:String):void{if (arg1 == "Mr.") mr.selected = true;else ms.selected = true;txtFirstName.text = arg2;txtLastName.text = arg3;txtEmail.text = arg4;txtComments.text = arg5;}
This function accepts 5 arguments and uses them to fill out the fields in the Flash movie. In order for this callback to be set each time the movie is loaded, we need to define it in the xmlns:mx section.
xmlns:mx="library://ns.adobe.com/flex/mx" creationComplete="init();"
Therefore, when the movie is loaded, the Flash Player will call the init() function, which will set the necessary callback.
For now, we are done working with the Flash move, so let's export the results and proceed to creating a Qt application and integrating the Flash movie into it. You can export the result of your work from Adobe Flash Builder using the Project -> Export Release Build command.
Creating a Qt application
Let's start our project by creating a project file:
TEMPLATE = appDESTDIR = binHEADERS = mainwindow.h
SOURCES = main.cpp
mainwindow.cpp
RESOURCES = flash.qrc
include($$(QTITANDIR)/src/shared/shared.pri)
Let's add our movie called FlashForm.swf to the resource file:
<!DOCTYPE RCC><RCC version="1.0"><qresource><file>res/FlashForm.swf</file></qresource></RCC>
Run the qmake -tp vc to generate a .vcproj file for Visual Studio. Then open the project and the mainwindow.h file. Let's define the MainWindow class:
class MainWindow : public QMainWindow{
Q_OBJECT
public: MainWindow(QWidget *parent = 0);
static QScriptValue submitFromFlash(QScriptContext *, QScriptEngine *);
protected slots: void submit();
void getUrl(NPluginStreamArgs& args);
protected:
Qtitan::FlashPlayer * m_flashPlayer;
QRadioButton* mr;
QRadioButton* ms;
QLineEdit* txtFirstName;
QLineEdit* txtLastName;
QLineEdit* txtEmail;
QTextEdit* txtComments;
QWidget * makeWidget();
};
We use this class to define a static function called submitFromFlash intended for fetching data from the Flash movie. We define a submit() slot, that will send data from the Qt application to the Flash movie. We'll also need a getUrl() slot for interacting with the movie. Let's take a look at the class constructor:
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent){ setWindowTitle("Flash Qt Exchanger"); // Create a Flash Player m_flashPlayer = new Qtitan::FlashPlayer(); m_flashPlayer->setSource(":/res/FlashForm.swf"); connect(m_flashPlayer, SIGNAL(getUrl(NPluginStreamArgs&)), this, SLOT(getUrl(NPluginStreamArgs&))); m_flashPlayer->setMinimumSize(450, 300); // Register a function m_flashPlayer->registrScriptableFunction("Submit", SubmitFromFlash);
// Create a central object QTabWidget * widget = new QTabWidget(this); setCentralWidget(widget); // Add FlashForm widget->addTab(m_flashPlayer, "Flash App"); // Add a Qt form widget->addTab(makeWidget(), "Qt App"); // Activate the movie m_flashPlayer->setActive(true); // Check the activation result if (!m_flashPlayer->isActive()) { // If the movie is inactive, send a notification QMessageBox::about(this, tr("Adobe Flash Demo"), tr("The <b>Adobe Flash</b> is not installed at your PC.")); }}
Here we load our Flash movie in the same manner we did with Silverlight, register the Submit function to fetch data from the movie and create the user interface. The user interface is created in the form of a QTabWidget - one of the tabs will accommodate the Flash movie and the other one will have our Qt application. The Qt application is identical to the one we created in Flash.
devmachines.com/images/article_flash/image3.png
The interface is created by the makeWidget() function of the MainWindow class:
QWidget * MainWindow::makeWidget(){ // Create the central widget QWidget * widget = new QWidget(this); QGridLayout * gLayout = new QGridLayout; gLayout->setContentsMargins(32, 16, 32, 32); widget->setLayout(gLayout); // Create components QLabel * lbl = new QLabel("<h2>Personal Information</h2>", this); QLabel * lblFirstName = new QLabel("First Name", this); QLabel * lblLastName = new QLabel("Last Name", this); QLabel * lblEmail = new QLabel("Email", this); QLabel * lblComments = new QLabel("Comments", this); mr = new QRadioButton("Mr.", widget); ms = new QRadioButton("Ms.", widget); txtFirstName = new QLineEdit(widget); txtLastName = new QLineEdit(widget); txtEmail = new QLineEdit(widget); txtComments = new QTextEdit(widget); // Create a control button QPushButton * btn = new QPushButton("Submit", widget); connect(btn, SIGNAL(clicked()), this, SLOT(submit())); // Put them on the GridLayout gLayout->addWidget(lbl, 0, 0, 1, 2); gLayout->addWidget(mr, 1, 0); gLayout->addWidget(ms, 1, 1); gLayout->addWidget(lblFirstName, 2, 0); gLayout->addWidget(txtFirstName, 2, 1); gLayout->addWidget(lblLastName, 3, 0); gLayout->addWidget(txtLastName, 3, 1); gLayout->addWidget(lblEmail, 4, 0); gLayout->addWidget(txtEmail, 4, 1); gLayout->addWidget(lblComments, 5, 0); gLayout->addWidget(txtComments, 5, 1); gLayout->addWidget(btn, 6, 1, Qt::AlignRight); return widget;}
The code of the function responsible for receiving values from the Flash movie and pasting the values into input fields is given below:
QScriptValue MainWindow::submitFromFlash(QScriptContext* context, QScriptEngine *){ int count = context->argumentCount(); if (count == 5) { QString mrMs = context->argument(0).toString(); QString firstName = context->argument(1).toString(); QString lastName = context->argument(2).toString(); QString email = context->argument(3).toString(); QString cmnts = context->argument(4).toString(); if (mrMs.contains("Mr")) mr->setChecked(true); else ms->setChecked(true); txtFirstName ->setText(firstName); txtLastName ->setText(lastName); txtEmail ->setText(email); txtComments ->setText(cmnts);}
Below is the code of the function that passes field values from the Qt app's tab to the Flash movie.
void MainWindow::submit(){
// Get access to the movie's functions QScriptValue flashObject = m_flashPlayer->pluginScriptValue();
// Get access to the submit function QScriptValue func = flashObject.property("Submit");
// Fill the list of arguments
QScriptValueList args;
QString mrMs = mr->isChecked() ? "Mr." : "Ms.";
QString firstName = txtFirstName->text();
QString lastName = txtLastName->text();
QString email = txtEmail->text();
QString cmnts = txtComments->toPlainText();
args << mrMs << firstName << lastName << email << cmnts;
func.call(flashObject, args);
}
The only thing we still have to do is to write the code of the getUrl slot:
void MainWindow::getUrl(NPluginStreamArgs& args){
QFile * data = new QFile(":/res/FlashForm.swf");
data->open(QIODevice::ReadOnly);
args.setIODevice(data);
}
We can now pass data from the Flash App tab to the Qt App tab and vice versa.
devmachines.com/images/article_flash/image4.png
Conclusion
So what's the bottom line? As you can see, integrating a Flash application into a Qt application is even simpler than doing this with a Silverlight movie. On the Qt app's side, there were almost no modifications - we only changed the object type from Qtitan::Silverlight to Qtitan::FlashPlayer. Therefore, you can develop interactive movies using any platform, Microsoft Silverlight or Adobe Flash - Qtitan Multimedia will work with either of them equally well.
About the Author
Product manager at Developer Machines
|
|
The Best Of Parliament: Give Up The Funk $4.50 For legal reasons too complicated to dive into, George Clinton forged two bands, Parliament and Funkadelic, out of what had just been one. In loose terms, Parliament was thought to be the more commercially viable of his insane clown posses, so it's not surprising that most of the tracks on this essential package made it to the radio. And radio never had it so good, since Parliament's idea of Top 4... |
|
|
The Best Of SugarHill Gang: Rapper's Delight $7.30 It's not quite the first rap record, or the best, but Rapper's Delight--15 glorious minutes of the bass line from Chic's "Good Times," with a New Jersey crew spieling goofy routines about Superman and bad food on top--is one king hell of a party-starter. After that, they could have filled the rest of the disc with crowd noise and gotten away with it, but the Sugarhill Gang had a bunch of other par... |
|
|
Flashback: Best of $16.49 This band of "Wild Eyed Southern Boys" (to quote one of their album titles) was led by Skynyrd lead singer Ronnie Van Zant's younger brother, Donnie. They released their first album in 1977, the year the elder Van Zant died in a plane crash, and while their early work centered on swaggering boogie-rocker Van Zant trying to carry his fallen brother's torch, it was co-lead guitarist and chief songwr... |
|
|
Nikon School Presents How To Get The Most From Your Nikon SB-24 Speedlight + set of flash cards Hour long video with accompanying set of flash cards for Nikon SB-24 Speedlight. Many tips and techniques can be adapted to other brands and types of flash equipment.... |
|
|
Preschool Prep & Sight Words 7 DVD Pack (Meet the Letters, Meet the Numbers, Meet the Shapes, Meet the Colors, Meet the Sight Words 1, Meet the Sight Words 2, Meet the Sight Words 3) $53.99 Preschool Prep & Sight Words Pack - 7 DVD Boxed Set (Meet the Letters, Numbers, Shapes & Colors, Sight Words 1, 2 & 3)Learning Has Never Been This Easy!A study of over 50 babies and toddlers, who watched Meet the Letters, resulted in over 90% of these children having complete upper and lowercase letter recognition. Many learned in less than two weeks! Numbers, shapes and colors and sight words ... |
