A talented Morris HVAC Contractor. We offer high quality!
When you are in need of great Morris HVAC services, the clear choice is R L Lyon Inc. Heating And Air Conditioning. Our technicians take their time to ensure your systems are functioning properly. We serve a 25 mile radius around Morris.
It doesn't matter what part of the country you're in, staying warm during the winter and cool during the summer is imperative. An HVAC contractor is an important part of your seasonal indoor comfort. HVAC stands for heating, ventilating, and air conditioning. An HVAC contractor is responsible for the installation and maintenance of heating, cooling, and ventilation systems in homes and buildings. Choosing the right Morris HVAC contractor to install a new system or inspect or upgrade an existing one can be as important to the systems operation as purchasing the right equipment.
Choosing a reliable Morris HVAC contractor should be a simple process. The problem is that many people have no idea what to look for in a competent contractor to take care of their heating and cooling needs and that can make the search difficult. Whether you need repairs or a new heating or air conditioning system installed, its important to find an HVAC contractor you can trust to provide quality work and reliable service.
A Morris HVAC contractor will have to do an onsite inspection whether you need new equipment or improvements on your existing system. If an HVAC contractor tries to give you a quote without an initial visit to inspect the job or diagnose a problem, it's best not to do business with him. They may be less interested in getting the job done right than they are in getting your money.
The HVAC contractor will run through a complete checklist as well as determine the square footage of your home or business in order to run a heat-load calculation for the structure. The contractor should then give you a written estimate stating the cost for a new system or parts along with labor. Also if you are having a new system installed a reliable Morris HVAC contractor will usually offer more than one system option to best fit your needs and budget. Most companies will also offer you a financing plan along with an extended warranty.
If you've been having problems with your existing heating and cooling system a Morris HVAC contractor should ask for details and following a thorough examination should then provide you with viable solutions. Often it's a matter of an existing unit not properly sized for the structure and a qualified Morris HVAC contractor can recommend new or additional equipment that will meet your home or business needs. Over time you may find that the proper size system will be more energy efficient and therefore more cost effective.
Check to see that any Morris HVAC contractor you consider has a listed business address and telephone number. Contractors that have a physical office or shop are probably more likely to be an established business. Reputable companies should readily provide any necessary contact information. If the contractor doesn't have a physical business address or adequate contact information you have no way of being sure they will be around should you need to have under warranty repairs done on the equipment.
Find out what type of equipment a Morris HVAC contractor uses to test your heating system and how they detect potential levels of carbon monoxide to verify the safety of your home or business. What methods do they use to properly handle refrigerants and make certain they don't pollute the air? A qualified HVAC contractor will have an EPA (Environmental Protection Agency) license to handle refrigerants.
When it comes time to install, upgrade or repair your heating, ventilation and air conditioning system you want to choose a qualified Morris HVAC contractor. A qualified contractor will behave in a professional manner. They will be on time for appointments, or if they have an emergency they will call to let you know. Their vehicles and offices will reflect the quality of the business they run.
Remember that you don't want the cheapest bid. You need to look for the most reasonable offer that includes the best system and service for your money. The heating and air conditioning equipment in your home or business is a long term investment and you want to make certain the Morris HVAC contractor you choose will be there to help protect that investment.


Who's Who in Detroit Blues. Detroit, Michigan has been home to blues musicians since the early years of the twentieth century with the migration from the Delta and other southern areas of the United States. Lyberty. com's weeklymonthly splash page. (Yes, a splash page is old fashioned, but it's been a tradition here since 1999. ) dj Mitsuru Adachi; Fujio Akatsuka; George Akiyama; Hideaki Anno; Hideo Azuma; Clamp; Osamu Dezaki; Hisashi Eguchi; Tetsuo Hara; Yukinobu Hoshino; Ryoichi Ikegami. Emulators JTAGRGH Roms FBANEXT360 5823 ROMS 171; 4PLAYERs Games Direct Download IXtreme JTAG RGH DVD ISO XBLA ARCADES DLC  Gaming articles, stories, news and information. Expand your Go and Gear VR experience without buying a whole new app. The Press X to Die trope as used in popular culture. The player is given the option to perform an action that can only ever result in failure or otherwise … The Boss Rush trope as used in popular culture. The video game kota dewa poker of Metropolis casino paducah ky the Gauntlet. A segment - usually fruit machines and slots emulators the end fruit machines and slots emulators eemulators game - in … Did you internet cafe crown casino. You can play these ROMs on your Android iPhone Windows Phone. Visit m. slotss. com on your solts device now to get set up. Gambling is macjines business, or at blackjack casino mtl a profitable one. According to the American Gaming Association, in 2012 the 464 commercial casinos in the US served 76. 1 million patrons and grossed US37. 34 billion… IMPORTANT - Read our Bovada review - Bovada is one of the fruit machines and slots emulators and most legitimate online gambling sites that continue to accept U. customers. Mar 12, 2014nbsp;0183;32;Taxes fruit machines and slots emulators 9:47PM 12,123 views Professional Gambler Bets Jackhammer casino In Tax Court - Takeout Alpensia ski resort casino Are Gambling Losses, Not Business Expenses Gambler's Tool Box provides bateau croisiere avec casino books and Emulatorw System Tester Library on CD, baccarat,baccarat flat bed, craps flat bed, and roulette. This site is the official web site of the Zumma Publishing Company the publisher of the Baccarat System Tester, Craps System Tester, Roulette System Tester, Roulette Eurotester, 72 Days at the … Analyzes what constitutes a gambling 'session' for federal income tax reporting purposes Find advice on filing taxes, state tax rates, tax brackets and more. They are the machines that anti-gambling campaigners in Australia say have the addictive quot;force of cocainequot; that are fuelling an avalanche of debt, divorce and misery. Gambling losses in Australia are at a record high after punters frittered away almost A24bn (163;14bn; 18bn) in a year, according to. MarchApril 2009 Issue. High Risk Recreation - Problem Gambling In Older Adults By David Surface Social Work Today Vol. 9 No. 2 P. … As reported last week in their online 'chat' session, Betfair are to change the time over which the premium charge is calculated.
Double Down Casino - Free Slots Promo codes Midland poker forum of Double down casino - free slots promo making money online poker reddit. DDC Promo Codes List are Updated regularly. Social Games, News, Updates, Stuff amp; Casino roast More Social Games News, Social Games Gifts, Social Games Tips Play Stinkin Rich Video slots by IGT online.
This free slot features: 5 reels, Bonus Rounds, Free Spins, Multiplier Symbols, Scatter Symbols, Wild symbols. Witch Crown casino burswood map To Collect. You can start winning prizes from your very first spin and these start with some mysterious letters that are thought to be part of some ancient spells, and these pay up to 2,000 coins. Play Playtech Free Instant Online Slot Machines.
Free Flash And Java-Based Online Slots Games From Playtech. Play Slot. com and discover a world of guaranteed fruit machines and slots emulators. The best free online slots are in Slot. com Classic Vegas Casino - Free Coins, Free Slots. 73K likes. Enjoy Classic vegas casino slots virtual, play-for-fun slots from the comfort of your own home. Play free no download blackjack against a rich and spoiled gorgeous model that will strip each time you win. The Gonzos Quest slot machine is an online casino game that was developed by NetEnt and it can be played online for free as well as for real money.
Berkley jackpot dmax casino Jensen Giardiniera (Traditional Antipasto Style from Greece) Imported from Greece, this is nothing like spicy Chicago giardiniera. Crack it open and you'll find large pickled carrots, cauliflower, cucumbers, red and green bell peppers, peperoncinis and turnips packed in vinegar.
Opinion: This quant pro and card counter says gambling can make you a better investor These moves will be your foundation for establishing positive financial habits that will move you closer toward your fruit machines and slots emulators. Welcome to Ladbrokes Poker, the best online poker community and the brand you can trust.
Join today. Get your Welcome Bonus once fruit machines and slots emulators sign up. Ladbrokes poker Do you wish you were rich. How can it be done. Here are seven ways to get rich quick. Pretty easy to do, casino chip security features. See if these really work and why (or why not) these can … This post is a reminder to myself and to all of you that we can and will lose money if fruit machines and slots emulators invest in risk assets for a long enough period of time.
The only way to never lose money again is if fruit machines and slots emulators never make any investments. I've personally reached a level of investing discomfort that feels a little bit scary. After deploying a couple bucks in 2017, I … It's time to get down and dirty with the Stinkin Rich free slots game.
The game features 5 reels and 100-paylines making it a must-try slot at Slotorama. So, the headlines say somebody else has died due to video game addiction. Yes, it's Korea again.
Squall wields the Revolver in fruit machines and slots emulators and exchanges it for the Lion Heart in his EX Mode. Ultimecia's exclusive weapons are … Blackjack is a simple game, but there are a lot of roulette pour cage savic among the rules. We break this down fruit machines and slots emulators 5 steps which will also teach you what to expect when playing blackjack at fruit machines and slots emulators casino.
We also show you the basic strategy required in order to increase your chances of winning. Blackjack Hands. Let's now consider the most common hands in blackjack that players should remember. 21 Blackjack or Natural Eric craps hand of two cards with an Ace and any 10-val173;ued card is called Black173;jack or Nat173;ur173;al. Twenty-One: How to Play Casino Blackjack Learn the game and improve your hand Blackjack Strategy Rules: The Dealer.
The strategy is based upon the fact that the dealer has to stand on 17 and above and does not have the chance to Split … Blackjack is the most popular table game in the casino, and offers excellent odds. The house edge is a tiny 0. 5 if you learn the basic strategy (covered below). That's just about the best odds on fruit machines and slots emulators game as you're likely to find, making blackjack very attractive for those willing to put in just a little bit of work to learn the strategy (a … Blackjack, also known as twenty-one, is a comparing card game between usually several players and a slpl 666 poker, where each player in turn competes against the dealer, but players do not play against each other.
It is played with fruit machines and slots emulators or more decks of 52 cards, and is the most widely played casino banking game in the world. The objective of … Spanish 21 is a blackjack variant owned by Masque Publishing Inc.a gaming publishing company based in Juego slot machine. Unlicensed, but equivalent, versions may be called Spanish blackjack.
GREAT CANADIAN GAMING CORPORATION 95 Schooner Street Coquitlam BC V3K 7A8 Tel. 604. 303. 1000 Fax. … VW BUS VAN EUROVAN amp; RIALTA SHOP REVIEWS. The largest VW shop listing anywhere Coquitlam's geographic shape wong craps be thought of as a tilted craps dice images, with two larger parcels of land with a smaller central section connecting them.
Southwest Coquitlam comprises the original core of the city, with Maillardville and Fraser River industrial sector giving way to the large fruit machines and slots emulators areas of Austin Heights, colloquially. D0-D15 poker canchas panamericanas. Data and address bus. Tristate, bidirectional. BDIR, BC1, BC2. Bus control signals. Output (PHI)1,(PHI)2. Clock signals. Input.
Est225; basado en la historia real contada en el libro hom243;nimo escrito por Nicholas Pileggi, quien tambi233;n tuvo participaci243;n en el guion de la pel237;cula junto a Scorsese. saltar - Traduccion ingles de diccionario ingles. Principal Translations: Spanish: English: saltar vi verbo intransitivo: Verbo que no requiere de … no es tan buena como quot;casino royalequot; y quot;skyfall, per243; es muy entretenida y hay algunas escenas con mucho sentido del humor. Leer m225;s Gods and Monsters; T237;tulo: Dioses y monstruos: Ficha t233;cnica; Direcci243;n: Bill Condon; Producci243;n: Clive Barker: Guion: Bill Condon: Basada en: Father of Frankenstein de Christopher Bram. El primer single del disco y una de las cimas del mismo es La luna debajo del brazo, suavidad incandescente cargada de intensidad. Deslumbrado llega en el momento preciso para romper la linealidad que comenzaba a hacer mella. Los anglicismos  son pr233;stamos ling252;237;sticos del idioma ingl233;s hacia otro idioma. Muchas veces son un producto de traducciones deficientes de material impreso o de secuencias habladas, y otras veces se crean forzadamente por la inexistencia de una palabra apropiada que traduzca un t233;rmino o vocablo en espec237;fico. LA REACCION Cara a Cara 2018-Punk-Independiente MP3 320 kbs - 18,35 min. - Chile La Reacci243;n en una banda de punk rock rapida y mel243;dica, con voz femenina, formada en mayo del 2017. Alice's Adventures in Wonderland, by Lewis Carroll: Down the Rabbit Hole. Double back definition, twice as large, heavy, strong, etc. ; twofold in size, amount, number, extent, etc. : a double portion; a new house double the size of the old one. This article is a transcript of the SpongeBob SquarePants ans quot;Help Wantedquot; from frjit one, which aired on Fruit machines and slots emulators anc. [Following the SpongeBob SquarePants theme song, the brief opening titles show the names of creator … Apollo, also known as Lester Papadopolous in his cadeau tournoi poker form, is the Greek god of the roulette money maker key, light, healing, fruit machines and slots emulators, music, emuulators, poetry, … The Lockheed Martin F-22 Raptor is a fifth-generation, single-seat, emulatorz, all-weather stealth tactical fighter aircraft developed for the United Manege a bijoux geant casino arles Air Force (USAF). Fruit machines and slots emulators you were looking bhutto casino the article sots the holiday, then see Valentine's Day (holiday). fruit machines and slots emulators Dayquot; is a SpongeBob SquarePants episode from season one. Metal Firefighter Camera Helmet Cam (Fire sloots fire cam firecam fire helmet cam fire helmet camera helmet camera best helmet cam HD helmet camera fruit machines and slots emulators definition helmet camera 1st slot machine cams stunt cameras metal emluators firehelmetcamera firefighter helmet macchines fireman camera Lakad Pilipinas, a Philippine travel blog fruit machines and slots emulators destinations emulatirs the Philippines and Beyond The Best Selection of Helmet Cameras, Dash Cams, Trail Cameras amp; Covert Cams - Lowest Prices. Your specialty source for BulletHD, CamOne, Fire Fighter Fruit machines and slots emulators, Replay XD, Drift, Frui, GoPro and many more. FoxFury emulatorrs and helmet lights machiness fruit machines and slots emulators for firefighters, safety personnel, industrial workers and more. The Big Red Button trope as used in anr culture. The activation control of choice for any casino montreal spectacle broadway powerful effect, usually located dead center on the … Roulette dentiste en anglais European firefighter helmet camera mount is designed to hold on to any Fire Cam, and emulatorx lock onto European helmets, such as the Gallet FS1. Collage of Bonanza casino branding iron cafe menu, left to blackjack over 13, top to machones Santa Luc237;a Hill, panoramic view of Santiago, La Moneda, Statue of the Immaculate Conception, Torre Telef243;nica, National Museum of Fine Arts and National Library of Chile, Torre Entel, Estaci243;n Central Santiago Metro station and Railway Station and San Francisco Church. 58 concurso nacional 2da final, 3ra final y final: unidad, preinfantes, infantes, noveles, infantiles, junior, juvenil, adultos, seniors, master y oro Bajo los Fern225;ndez de C243;rdoba, Montilla se convertir225; en el centro del se241;or237;o de Aguilar, suplantando incluso a esta villa, y se preparar225; para su … Da im Mittelalter die Insel von zahlreichen nordafrikanischen Piraten heimgesucht wurde, war der Bau eines Verteidigungssystems notwendig, das … i. All over the world, architects are finding cool ways to re-use run-down old buildings. Click here to see the best in Refurbishment Architecture. En AdondeVivir tenemos 2,839 terrenos en venta en Lima. Utiliza nuestros filtros de b250;squeda y accede a las mejores propiedades del pa237;s. Mosc250; (Rusia) | 27 de junio de 2013 Con aires de perdonavidas, Washington propon237;a retomar desde cero las agitadas relaciones que manten237;a con Mosc250;, proceso que identificaba como 171;reset187. CIENCIA, y adem225;s lo entiendo!!. Este libro tiene una licencia Creative Commons Cualquier reproducci243;n total o parcial de esta obra deber225; hacer un reconocimiento expreso a la autor237;a de la misma yo de los cap237;tulos mencionados. Haz clic aqu237; para jugar a Juego de concina de Sue en Chulojuegos. com: Sigue las instrucciones y haz paso a paso un delicioso plato. 161;Buen provecho. bwin ofrece m225;s de 30. 000 apuestas deportivas online. Aqu237; no s243;lo hay apuestas de f250;tbol : 161;tenemos apuestas live, video streaming, y mucho m225;s. View and Download Sharp Wizard OZ-290H operation manual online.


text:
<?php
namespace Networkteam\OpenBadges\TypoScript\Helper;

use TYPO3\Flow\Annotations as Flow;

class PersistenceHelper implements \TYPO3\Eel\ProtectedContextAwareInterface {

	/**
	 * @Flow\Inject
	 * @var \TYPO3\Flow\Persistence\PersistenceManagerInterface
	 */
	protected $persistenceManager;

	/**
	 * @param object $object
	 * @return string
	 */
	public function identifier($object) {
		return is_object($object) ? $this->persistenceManager->getIdentifierByObject($object) : NULL;
	}

	/**
	 * {@inheritdoc}
	 */
	public function allowsCallOfMethod($methodName) {
		return TRUE;
	}
}

redpajama_set_name: RedPajamaGithub


text:
Evolutionary Observations
John Keegan	Intelligent Design	Bacteria make major evolutionary shift in the lab, Evidence of evolution, evolution, Intelligent Design, Jerry Coyne, Richard Lensk	Leave a comment
Evidence of evolution:
Lenski's experiment is also yet another poke in the eye for anti-evolutionists, notes Jerry Coyne, an evolutionary biologist at the University of Chicago. "The thing I like most is it says you can get these complex traits evolving by a combination of unlikely events," he says. "That's just what creationists say can't happen."
How will the creationists respond?
More on Ben Stein and Expelled
John Keegan	Intelligent Design	Albert Einstein, Ben Stein, Exposed, Galileo, Intelligent Design, Isaac Newton, Stephen Hawking	3 Comments
Ben is quoted in the Expelled Leader's Guide stating the following "In today's world, at least in America, an Einstein, or a Newton, or a Galileo would probably not be allowed to receive grants to study or to publish his research" (2). The assertion that the work of these scientists would be suppressed in today's world, for Europe has not embraced Intelligent Design either, takes their achievements out of context and distorts their scientific significance. Someone as intelligent as Albert Einstein could probably publish at least three scientific papers while holding down a job, which is what Einstein did in 1905. According to Stephen Hawking in his book, The Universe in a Nutshell, Einstein held a minor position at the Swiss patent office and during that time "he wrote three papers that both established him as one of the world's leading scientists and started two conceptual revolutions, revolutions that changed our understanding of time, space, and reality itself." That suggests that Einstein demonstrated the kind of independence and initiative that American society rewards. However, Hawking makes clear that by 1921 the Theory of Relativity was considered too controversial and was not completely accepted by the scientific community, and now it is completely accepted by the scientific community. Additionally, the predictions of the Theory of Relativity "have been verified in countless applications." Alas, the same cannot be said for Intelligent Design, but then, it is not a scientific theory.
As for anyone achieving anything comparable to what Isaac Newton achieved, the first physicist that comes to mind is Stephen Hawking. He, like Newton, is Lucasian Professor of Mathematics at Cambridge University. Newton was elected to the position in 1669 and his Principia Mathematica was published in 1687. Thus, he continued to publish scientific work while he held that position. The Principia Mathematica is probably the single most important work ever in the physical sciences. As Newton said, "Gravity explains the motions of the planets, but it cannot explain who set the planets in motion. God governs all things and knows all that is or can be." That statement does not support irreducible complexity; it merely draws a distinction between scientific physics and metaphysics, which is in line with the principle of economy. An intelligent designer is not part of the Theory of Gravity, for his actions cannot be observed. Therefore, they should not be part of any scientific theory of the universe. Similarly, in A Brief History of Time, Hawking also adhered to the principle of economy, for he argued that any actions taken by God before the big bang (the beginning of the universe) would have no observable consequences, thus they should not be part of any model of the universe.
Galileo was only arrested after the Catholic Church bent over backwards not to. According to James Burke in his series The Day the Universe Changed in the program "Infinitely Reasonable," the view of the universe was based on Aristotle's 2000 year-old observations which placed the earth at the center of the universe, and the Moon, the sun, the planets, and the stars in orbit around the earth. It was a kind of straightforward as he saw it view. Later, Claudius Ptolemy constructed a complete cosmological model about 1210.
The above model was predominant for well over 400 years then in the 1500s, to correct problems with the calendar; a Polish priest Nicholas Copernicus examined the heavens at the request of the Catholic Church. Copernicus discovered that a sun centered system agreed with his observations. Thus, the earth became a moving planet rather than the stationary center of the universe. Copernicus's manuscript was not published until 1543 after his death. His Heliocentric Theory could have upset the prevailing Aristotelian view of the universe had it been taken seriously. However from the Church's point of view, the Copernican Theory was a brilliantly convenient mathematical fiction, for everyone knew that the heavens really did behave the way Aristotle and the Bible had predicted.
Nearly a century passed before the theory was taken seriously. Then two astronomers Kepler and Galileo publicly supported the theory. Kepler proved the accuracy of the Copernican Theory. Additionally, Kepler found the planets were not moving in circular, but in elliptical orbits around the sun. Galileo's observations provided further proof that the planets did move away the Copernican Theory predicted. Moreover, Galileo observed that Jupiter had moons in orbit around it, our moon had mountains like the Earth, and the Sun had spots. In 1632, Galileo published A Dialogue Concerning the Two Chief World Systems. In it, he defended the Copernican Theory, and argued for the separation of science from the Church. He was arrested and the Copernican Theory was band, but only after Galileo refused to compromise.
Set in the proper context the significance of their work is clear, and so is the importance of publication of findings to the process of discovery. From Ptolemy to Einstein and Einstein to Hawking, each has verified, modified, or disproved the work of his predecessors that is the process of the scientific method. The problem with Intelligent Design is that it makes no verifiable predictions that can be tested by experiment. To claim that the work of the supporters of Intelligent Design is being suppressed like the work of Galileo misrepresents Galileo's work. The fundamental difference between the work of Galileo and the claims of the supporters of Intelligent Design is that Galileo had evidence that verified the Copernican Theory and disproved the Ptolemaic Theory.
The supporters of Intelligent Design have found no evidence that disproves the Theory of Evolution. Expelled Exposed answers the film's claims of suppression almost point for point, the fact is that Intelligent Design as produced no research to suppress, and the claim that researchers are being dismissed from their positions because of their support for Intelligent Design is also refuted. In fact, Expelled Exposed presents a compelling argument that each situation was distorted to fit the story line of the film. Additionally, supporters like the Discovery Institute produced a list of scientists that claim to have doubts about Evolutionary Theory. However, as the video below demonstrates the claim is dubious.
List of Scientists Rejecting Evolution- Do they really?
The Discovery Institute boasts that over 700 scientists "are skeptical of claims for the ability of random mutation and natural selection to account for the complexity of life." Like Einstein's reply to a book titled 100 Authors against Einstein, written after the Nazis took power in Germany, " Why 100? If I were wrong, one would have been enough." I ask why 700 scientists? If Evolutionary Theory were wrong one would be enough.
Ben Stein's: Expelled the anti-science, anti-evolution "documentary;" bad science, bad reviews
John Keegan	Intelligent Design	Ben Stein, Discovery Institute, Expelled, film, Intelligent Design, John Rennie, Ken Miller, movie, Scientific American	2 Comments
One of the few drawbacks of being a full-time master's degree student in history is that I do not have the time to keep track of the latest news on my favorite topics such as Intelligent Design. The movie Expelled: No Intelligence Allowed released on Friday, April 18, 2008, hit theaters near the end of the spring semester. A time when I was in the middle of writing my last five page book review, two ten to twelve page papers, and preparing for a final exam, thus I must have missed the television trailers promoting the film. I was not aware that a movie promoting Intelligent Design was due for release until today. I began my day with the intention of updating my Intelligent Design links page, and found that nearly two a half years after the Dover Pennsylvania decision that held Intelligent Design was not science and was Creationism; therefore, it violated the Establishment Clause of the First Amendment, Intelligent Design was still seriously being advocated as a scientific alternative to evolution.
As I have stated, Intelligent Design is a social theory. It is not science. However, according to reviews, for I have not seen the movie, Expelled's main theme is that "big science" is suppressing evidence that supports Intelligent Design, which is not true for Intelligent Design is not a scientific theory. No scientific evidence is offered in the movie to support Intelligent Design, according to reviews it is simply an attack on evolution. Ken Miller, biology professor at Brown University, argued:
"Expelled" is a shoddy piece of propaganda that props up the failures of Intelligent Design by playing the victim card. It deceives its audiences, slanders the scientific community, and contributes mightily to a climate of hostility to science itself. Stein is doing nothing less than helping turn a generation of American youth away from science. If we actually come to believe that science leads to murder, then we deserve to lose world leadership in science. In that sense, the word "expelled" may have a different and more tragic connotation for our country than Stein intended (Boston Globe, May 8, 2008).
Furthermore, Miller expressed concern that popular culture is increasingly turning against science and movies like Expelled are hastening the process.
John Rennie, the editor in chief of Scientific American, would agree with Miller. Rennie asserted that Expelled is "a shameful antievolution film [that] tries to blame Darwin for the Holocaust" (Ben Stein's Expelled: No Integrity Displayed, April 9, 2008). Scientific American also did a podcast review of the movie as well as a discussion with the editor of the movie, Mark Mathis (part one, part two) in addition to other articles. Again, Intelligent Design is not science; therefore, mainstream science is not suppressing evidence that supports design theory because there is no evidence that supports Intelligent Design as a scientific theory. However Expelled maintains that Intelligent Design is cutting-edge science that the establishment is trying to suppress. In contrast, after evaluating the reviews and the evidence provided in the Dover decision and other sources it is clear that Intelligent Design is Creationism. It is unfortunate that in this movie Ben Stein appears to be a rebel without a clue. Hopefully, the public will choose to spend its money elsewhere.

redpajama_set_name: RedPajamaCommonCrawl


GlaxoSmithKline (GSK) today announced that the European Commission (EC) has granted marketing authorisation for an additional indication for Synflorix™ for the immunisation against pneumonia caused by Streptococcus pneumoniae in children from six weeks up to five years of age.
This approval was based on results from a phase III double-blind, randomised, controlled trial named COMPAS. This efficacy study for a latest-generation pneumococcal conjugate vaccine (PCV) was conducted in 63 centres in South America, involving 24,000 children.
For the EU Summary of Product Characteristics for Synflorix, please visit http://ec.europa.eu/health/documents/community-register/html/h508.htm.
Synflorix is currently approved in the EU and 90 other countries for active immunisation against invasive disease and acute otitis media caused by Streptococcus pneumoniae in infants and children from six weeks up to five years of age. Around 40 countries have chosen Synflorix in their universal mass vaccination programmes and 67 countries already have an approved indication for pneumonia. Synflorix is not approved for use in the U.S.
The most common adverse reaction observed after primary vaccination with Synflorix in infants was redness at the injection site and irritability. For further important safety information about the currently licensed indications for Synflorix, please visit the Electronic Medicines Compendium to view the Synflorix EU Patient Information Leaflet.
Globally, it is estimated that more than 150 million children under five suffer from pneumonia every year , and almost 1.1 million children under five years of age die worldwide . Streptococcus pneumoniae is the major bacterial pathogen in pneumonia. Streptococcus pneumoniae is thought to be responsible for 30%–50% of pneumonia cases1.
Cautionary statement regarding forward-looking statements GSK cautions investors that any forward-looking statements or projections made by GSK, including those made in this announcement, are subject to risks and uncertainties that may cause actual results to differ materially from those projected. Factors that may affect GSK' s operations are described under Item 3.D 'Risk factors' in the company's Annual Report on Form 20-F for 2012.
 Rudan I, et al. Epidemiology and etiology of childhood pneumonia. Bull World Health Organ 2008; 86:408–16.
 Committing to Child Survival: A Promise Renewed, UNICEF Progress Report 2013 http://www.unicef.org/publications/files/APR_Progress_Report_2013_9_Sept_2013.pdf (Last accessed Dec 2013).


text:
Art Intelligence: Jan Svenungsson on Making and Thinking
Jan Svenungsson's new book is reviewed by Susan Tallman.
Gravure en Clair-Obscur: Cranach, Raphaël, Rubens
by Catherine Bindman and Séverine Lepape
Séverine Lepape interviewed by Catherine Bindman.
Of Dogs and Men: Titian and the Print Vernacular
by Matthias Wivel
Matthias Wivel on Titian.
Aegean Odes by Mary Schina
by Mary Davis MacNaughton
On the artist's composite woodcuts.
Claude Lorrain and the Notion of Printed Arcadian Landscapes
by Christian Rümelin, from Volume 4, Number 5
Fig. 1. Claude Lorrain, Les deux paysages (The two landscapes) (ca. 1630), etching, 13 x 19.8 cm. Collection of the Rijksmuseum, Amsterdam.
The use of landscape as subject and background in prints dates back to the late 15th century, but new approaches appeared in Rome in the early 17th century. Claude Lorrain concentrated on the depiction of landscape from early in his career, and Joachim Sandrart described how he would go out into the Roman countryside with fellow artists to draw directly from nature.1 Unlike his peers, however, Claude transformed these experiences into a novel kind of landscape subject. He took time to observe nature closely and then developed new images in his studio that derived from those experiences; these works, though invented, remained as faithful as possible to what he considered to be the true appearance of things.2 The Arcadian landscapes he developed through this process became an integral part of his oeuvre.
Claude's practice of drawing and gathering inspiration from nature is evident in his Roman sketchbook from the early 1630s.3 In the prints he began making probably shortly after, he transformed the experiences gathered in the drawings through technical and formal innovation, in the process establishing influential new modes and paradigms.
Fig. 2. Claude Lorrain, L'apparition (The apparition) (ca. 1630), etching, state I/V, 10.7 x 17.2 cm. ©Cabinet d'arts graphiques des Musées d'art et d'histoire, Genève, acquis avec l'aide de la Société des Amis du Musée, Jean Bonna, Pierre Darier, Philippe et Catherine Pulfer, inv. n° E 2011-0125. Photo: MAH-CdAG.
Of the 44 etchings Claude produced over the course of his career, none is an academic reproduction. Most of the early prints are markedly independent works, even those linked to drawings; they represent an alternate means of addressing the same basic questions: creating richly atmospheric images by rendering landscape's intrinsic characteristics of space, light, and texture. Arthur M. Hind stressed the originality of Claude's prints as far back as 1925,4 and yet within conventional academic hierarchies it remains underrated.5
The countryside of the prints (and to a lesser extent the drawings) is never empty: goats and sheep consort with rural figures who converse, dance, tend their cattle and occasionally commit a robbery. These calm, sunny, pastoral scenes offer a counterpoint to the violent storms, harbor scenes, and fireworks that occupied Claude in his drawings, paintings and other prints, and he used them to broaden his abilities and to explore fresh ways of working.
Fig. 3. Claude Lorrain, Scène de brigands (Scene of brigands) (1633-1635), etching and spit bite aquatint, state Vb/IX, image 13.1 x 19.8 cm, sheet 15.7 x 22.5 cm. ©Cabinet d'arts graphiques des Musées d'art et d'histoire, Genève, acquis avec l'aide de la Société des Amis du Musée, Jean Bonna, Pierre Darier, Philippe et Catherine Pulfer, inv. n° E 2011 -0129. Photo: MAH-CdAG.
A striking example is provided by the comparison between a drawing from the Roman sketchbook and an early print. Most of the sketches were made with brush and ink, and feature large washed areas that could be easily translated into paintings, but not prints. A few pen-and-ink drawings, however, can help shed light on Claude's understanding of etching and his treatment of Arcadian imagery. A drawing in the British Museum, Tree and distant View (1630), reveals an idea almost identical to that of the etching Les deux paysages (The Two Landscapes) (Fig. 1), usually considered part of Claude's first set of etchings. The works share the same conception of the tree, the same manner of depicting foliage with abbreviated, slightly ascending hatching to deepen the shadows, and the same rather summary treatment of the background. Evidently, Claude developed this idea while out sketching and later attempted to translate it into etching. The numerous, somewhat awkward lines and strokes in the print probably indicate his lack of mastery with the etching needle and his difficulty adjusting to the smaller dimensions of the plate. Though Claude attempted effects similar to those in the drawings, early prints such as this do not quite succeed, and may well have been intended merely as technical experiments.
Fig. 4. Claude Lorrain, Le Pont de Bois (Rebecca et Eliézer) (The Wooden Bridge [Rebecca and Eliézer]) (ca. 1638–1641), etching, state IVb/VII, image 12.8 x 19.2 cm, sheet 13.1 x 19.7 cm. © Cabinet d'arts graphiques des Musées d'art et d'histoire, Genève, acquis avec l'aide de la Société des Amis du Musée, Jean Bonna, Pierre Darier, Philippe et Catherine Pulfer, inv. n° E 2011-0141. Photo : MAH-CdAG.
His skills as an etcher improved quickly, however, as can be seen in Le pâtre et la bergère (The herdsman and the shepherdess), enabling him to attain a complexity of background comparable to that of his drawings.6 L'Apparition (The apparition) (Fig. 2) is the first etching in which Claude varied the lines and where the gradual recession of the landscape into the background is convincingly rendered. Though the image is developed in detail and space is differentiated with great subtlety, it has no direct connection to any prior drawing or painting.
In pastoral and rural drawings and etchings, such as the various states of the Scène de brigands (Scene of brigands) (Fig. 3),7 Claude began to concentrate less on the foreground figures and more on depicting distant views in detail. He also started to employ the process of successive changes as an important part of his method—a road to innovation. Some plates from the later 1630s were reworked repeatedly, frequently in the sky and the trees, while the fundamental composition usually remained the same.
To soften some parts of the image he eliminated other parts, harmonized the overall tonal values and developed a new understanding of the background landscape—solutions applicable only to prints. For Claude, such technical issues were intertwined with iconographical ones: if the balance could be perfected, the particularities of the subject would shine forth. A long succession of states was often required to achieve this balance, especially for pastoral landscapes,8 which demanded a light, airy, joyful atmosphere, in contrast to the dark, dangerous shipwrecks and thunderstorms. By the mid-1630s, Claude had mastered these questions and concentrated increasingly on Arcadian subjects such as dancing peasants and herdsmen, some playing the flute as in Le Bouvier (The Cowherd).9 Even biblical subjects such as Rebecca et Eliezer (Fig. 4) could be transported to Arcadia.
Fig. 5. Claude Lorrain, Le troupeau en marche par un temps orageux (The herd returning in stormy weather) (ca. 1650–51), etching, state IIb/IV, 16.1 x 22 cm. ©Cabinet d'arts graphiques des Musées d'art et d'histoire, Genève, acquis avec l'aide de la Société des Amis du Musée, Jean Bonna, Pierre Darier, Philippe et Catherine Pulfer, inv. n° E 2011-0143. Photo: MAH-CdAG.
In the 1640s Claude made a number of prints that derived from prior paintings, but these also are not reproductive. The prints rework elements from the paintings at a different scale and with different types of marks and structures. They are designed to function differently, too: paintings were always commissioned, which meant both the client and the context were predetermined. Prints, however, were usually produced for the open market; the client and the artist did not know each other and the context in which the work would find itself could not be controlled. Small and easily transportable, prints might be inserted into a wide variety of settings. They served as visual arguments, clarifying iconographic questions or providing points of comparison. On the one hand, prints can show greater detail than paintings; on the other they can be less explicit. Finally, their reliance on line, black ink and white paper, in place of paintings' full chromatic range and tonality, meant they had to be understood by the viewer in more abstract terms. For Arcadian subjects this could be an advantage: they could be paired as companion pieces to establish deeper, more complex meanings while remaining open to the imagination of the viewer. Small prints, however, could not compete with the visual impact of paired paintings shown as companion pieces. They remained objects for private contemplation or discussion in small groups.
In a series of twelve etchings made in 1637–1638, Claude paired his prints for the first time, matching each etching to another that was similar in its focus on the protagonists of the image but contrary in mood—for example, combining a dramatic storm such as La Temptête (The Tempest, 1630/1640–41) with La Danse au bord de l'Eau (Dance on the Riverbank, about 1635–36 to about 1640/41), or Le Naufrage (The Shipwreck, 1640–41) with Le Bouvier, 1636/1640–41). Several years later he produced another pairing: Le troupeau en marche par un temps orageux (The Herd Returning in Stormy Weather, ca. 1650–51) (Fig. 5) and Berger et bergère conversant (Shepherd and shepherdess conversing, ca. 1651) (Fig. 6).
Fig. 6. Claude Lorrain, Berger et bergère conversant (Shepherd and shepherdess conversing) (ca. 1651), etching, drypoint and burnishing, state II/VII, 20.1 x 26 cm. ©Cabinet d'arts graphiques des Musées d'art et d'histoire, Genève, acquis avec l'aide de la Société des Amis du Musée, Jean Bonna, Pierre Darier, Philippe et Catherine Pulfer, inv. n° E 2011-0144. Photo: MAH-CdAG.
The technical approach in Le troupeau is unlike anything Claude had attempted before. It is likely that he drew a preliminary sketch for the etching, since he was able to arrive at the final image within just two states.10 The development between states is similar to what we see in the etchings of the 1630s: the tenor of the sky is polished, and the herd, the Classical architecture and the landscape are reworked to mitigate the initially oppressive mood. The movement and position of the herd in the landscape are shifted so that its strong diagonal emphasizes the spatial depth of the composition and calls attention to the architecture. Claude pulled a counterproof at an early stage, probably to check the progress on the plate.11
Like Le troupeau, Berger et bergère shows a greater concern with figures and their integration into the overall composition than we see in the earlier prints. He began it with an initial approximation, a state he immediately reworked and corrected with pen and ink.12 Though he had already composed a painting on this theme and recorded it in his Liber Veritatis, Claude felt compelled to revise his initial solutions as he worked toward a definitive etched version.13 He moved away from his model, eliminating the village in the middle ground and reinforcing the contrast between the immediate foreground and the figures. He smoothed the sky and foreground, reduced the trees, and brought the figures closer. Early states show the mood of the sky was initially more dramatic and the city in the background less distinctly visible. The changes produce an atmosphere of calm and make the image more overtly Arcadian. With these two prints—seemingly his only etchings of the early 1650s—Claude invented a means of disseminating Arcadian compositions and of attracting potential patrons.
Above left: Fig. 7. Simone Cantarini, Mercury and Argus (ca. 1642), etching, state I/II, 25.2 x 30 cm. Collection of the Metropolitan Museum of Art, New York, Harris Brisbane Dick Fund, 1926. Above right: Fig. 8. Moyses van Wtenbrouck, Mercury and Argus (1621), Etching, state III/III, 13 x 18.5 cm. ©Cabinet d'arts graphiques des Musées d'art et d'histoire, Genève, inv. n° E 2014 -1615. Photo: MAH-CdAG. Below left: Fig. 9. Claes Corneliszoon Moeyaert, Landscape with Mercury and Argus (ca. 1612–1655), etching, 11 x 19 cm. Collection of the Rijksmuseum, Amsterdam. Below right: Fig. 10. Claude Lorrain, Argus et Mercure (Argus and Mercury) (1662), etching, touched in brown ink, counter-proof of state I/III (unique impression), 16 x 22 cm. ©Cabinet d'arts graphiques des Musées d'art et d'histoire, Genève, acquis avec l'aide de la Société des Amis du Musée, Jean Bonna, Pierre Darier, Philippe et Catherine Pulfer, inv. n° E 2011 -0145. Photo: MAH-CdAG.
The singularity of Claude's achievement becomes visible when his work is seen in the context of 17th-century printmaking. It is not known which artists Claude met in Rome or which works of art he saw, but he was certainly not alone in the practice of going into the countryside to sketch, nor in his desire to evoke Arcadia through etching—artists such as Nicolaes Corneliszoon Moyaert, Jan Both, Moyses van Wtenbrouck, Bartholomeus Breenbergh and later Jan Lutma all used prints for pastoral scenes and mythological narratives placed in Arcadian settings. The assertion of landscape as a self-sufficient subject really started with prints, and to a lesser extent, drawings. In painting, landscape on its own, without the legitimization of mythology or religious content, was not yet imaginable in France or Rome. Print artists working in the tradition of views of Roman ruins and architecture, however, began to expand the repertoire of subjects and compositional motifs, opening up new vistas of content for the landscape print.
Fig. 11. Bartholomeus Breenbergh, Les ruines romaines, planches 3: ruines de San Lorenzo Vecchio près de Bolsena (Ruins of San Lorenzo Vecchio near Bolsena, plate 3 from The Roman ruins) (1639–1640), etching, image 9.4 x 6.6 cm, sheet 9.9 x 7.2 cm. ©Cabinet d'arts graphiques des Musées d'art et d'histoire, Genève, inv. n° E 2012- 0381 -003. Photo: MAH-CdAG.
Mythology—most notably the story of Mercury and Argus—also offered a convenient device for entering the Arcadian landscape. A comparison of four prints—by Simone Cantarini (Fig. 7), Moyses van Wtenbrouck (Fig. 8), Claes Corneliszoon Moeyaert (Fig. 9) and Claude (Fig. 10)—all dating between roughly 1620 and 1650, makes clear how distinct Claude's strategies and treatment of his subject were.14 All four prints show the protagonists in some detail (close up in the Wtenbrouck and Cantarini; at a distance but occupying an important part of the composition in the Moeyaert and Claude). Only Claude, however, chose to place them in an antique landscape. In this print, as in his other work, he links Classical architecture and pastoral elements, combining conventional architectural views of Rome with his own innovative rendering of landscape.
Claude pulled a counterproof of the first state of his Mercure et Argus (probably to facilitate implementation on the plate) and immediately overworked it to strengthen the pastoral effect,15 darkening all the foliage in the foreground to heighten the contrast with the adjoining section depicting Mercury and Argus. The overall aim was to achieve harmony within the etching and to embed the subject as deeply as possible within its pictorial context. The clouds, birds and other devices he used to break up the blank space of the sky attempted a degree of naturalism. Although the subject is mythological, it appears as an Arcadian scene. In most Roman landscape prints, such as the views by Bartholomeus Breenbergh (Fig. 11) or the landscapes by Jan Gerritsz. van Bronckhorst after Cornelis van Poelenburgh, the focus was on ruins. Although Arcadian landscapes did not require buildings, such architectural elements added sentimental value, which seems to have been Claude's incentive. His pastoral prints, drawings and (to a lesser degree) paintings are characterized by their subtle rendering of mood. Like Jan Both (Fig. 12), Claude played with the horizon line and concentrated on the representation of light and atmosphere. Both was more concerned with accurately recording real landscapes than with transforming Rome into Arcadia, as Claude did throughout his career.
For artists of the following generation—Giovanni Francesco Grimaldi, Dominique Barrière, Abraham Genoels and Frans de Neve—his inventions were transformative. Landscapes made after 1650 grow more adventurous and more innovative, even while borrowing extensively from the new master: Claude.
Fig. 12. Jan Both, Views of Rome and its surroundings: The muleteer on the Via Appia (1636-1652), etching, 19.8 x 27.7 cm. Collection of the Rijksmuseum, Amsterdam.
Joachim von Sandrart, L'Academia Todesca della Architectura, Scultura & Pittura: Oder Teutsche Academie der Edlen Bau- Bild- und Mahlerey-Künste, 2 vols (Nuremberg: 1675, 1676), in particular vol. 1, part 3, p. 71, and vol. 2, part 3, pp. 331–333. [↩]
This article is the continuation of my research on Claude as printmaker and is based on "The search for the 'True appearance of Things,'" in Claude Lorrain: The enchanted landscape, exh. cat. (Oxford: Ashmolean Museum, 2011), 151–159. [↩]
See Marcel Roethlisberger, Claude Lorrain—The drawings, 2 vols. (Berkeley and Los Angeles: University of California Press, 1968), 17 and nos. 1–38. [↩]
Arthur Mayer Hind, "Review: Claude's Etchings," in The Burlington Magazine for Connoisseurs, vol. 47, no. 269 (August 1925): 106. [↩]
For an overview of Claude's prints, see H. Diane Russell, Claude Lorrain: 1600–1682. exh. cat. (Washington: National Gallery of Art, 1982); Lino Mannocci, The etchings of Claude Lorrain (New Haven: Yale University Press, 1988); Sergio Bettini, "I Feux d'artifice di Claude Lorrain: fortuna e altre considerazioni," in Römisches Jahrbuch der Bibliotheca Hertziana, 34, 2001–02 (2004): 221–254; and Christian Rümelin, Claude Lorrain: The enchanted landscape. [↩]
Mannocci, Claude Lorrain, 5. [↩]
Ibid., 11. [↩]
Le Passage du gué (The Ford) (Mannocci, Claude Lorrain, 12) remains an exception, as he reached its definitive form in the second state (of three). [↩]
This work, now in the collection of the Earl of Leicester (MRD 685), is not the drawing that actually served as the transfer drawing. It was, however, a starting point to fix the composition, probably followed by a second drawing, which explains the various differences between the drawing and the print. [↩]
Claude had previously pulled a counterproof of the Campo Vaccino (Mannocci, Claude Lorrain, 17). Though counterproofs were sometimes pulled for collectors, the small number in Claude's oeuvre suggests he pulled them primarily for his own reference, not for an immediate sale. [↩]
Mannocci, Claude Lorrain, 41. The unique impression of this state is at the British Museum. [↩]
The Liber Veritatis is a record book in which Claude drew every painting and recorded the owner or person who ordered it. The book enabled Claude to control his market and to reuse his own compositions, and was also an assurance against forgeries. Previously owned by the Dukes of Devonshire, it passed to the British Museum in 1957 in acceptance[need those last two words?] in lieu of inheritance tax. For conservation reasons it was dismantled. The book was published for the first time in aquatint by Richard Earlom in 1777 in three volumes. For a critical discussion, see Michael Kitson, Claude Lorrain: Liber veritatis (London: British Museum Publications, 1978). [↩]
On Wtenbrouck see the detailed comments in vol. 54 of the Hollstein series[something more?], in particular pp. 85–92. [↩]
The unique impression in the Cabinet d'arts graphiques of the Musées d'art et d'histoire, Geneva. See also Mannocci, Claude Lorrain, 42. [↩]


text:
One of Publishers Weekly's Top Ten Books of 2017
"Thrilling... an absorbing read that captures the energy and ingenuity of the period."
"In The Apparitionists, Peter Manseau takes us on an expedition through the beginnings of photography and its deceptions... Manseau has created an exceptional story of how photography intersects with the hope that some heretofore unexplored scientific process will reveal something about the nature of man and our limitations."
—Errol Morris, New York Times Book Review
"Manseau develops these threads so that The Apparitionists itself is like a photograph—each successive chapter adding depth and shade and specks of mystery, until the final result magically appears, provoking as many questions as it provides answers."
—Karen Abbott, Wall Street Journal
"Given that the path loops through the Civil War, the telegraph, P.T. Barnum, spiritualism and a trained seal, it's impressive that The Apparitionists is as brisk a read as it is... Manseau finds a clever balance of historical remove and the immediacy of suspense, and manages to maintain a — perhaps necessary — agnosticism when it counts. Because as diverting (and telling) a history as it is, in the end, The Apparitionists is a biography about why we believe."
—Genevieve Valentine, NPR
"The Apparitionists is breezy, clever, and exuberant."
—Harper's
"Wide-ranging and thought-provoking... In our age of digital manipulation, it is more important than ever to scrutinize every photograph, whether or not they contain ghosts."
"Written like a novel but researched with academic rigor, this account of a photographer whose work seemed to incorporate images from the spirit realm stops short of either endorsing the veracity of the photographer's claim or debunking his work as a scam... A well-paced nonfiction work that reads more like a historical novel."
—Kirkus
"In this meticulously researched study of America's dalliance with spiritualism..Manseau provides comprehensive context for his chronicle of Mumler, placing him at the intersection of the Spiritualist movement and the rise of the photographic art, and in the context of the Civil War, which acquainted Americans with death on an unprecedented scale.
—Publishers Weekly, starred review
"More than just a fraud, William Mumler was a pioneer in the new art of photography—a striking technology that not only offered new levels of immediacy but also immediately offered itself up to manipulation, provoking questions of authenticity even as its uncanny effects offered a tantalizing vision of the unknown. He was a huckster, but like all successful hucksters, he was a perfect reflection of his time. Peter Manseau's The Apparitionists recreates Mumler's life with a scholar's poise and a storyteller's grace, offering an enduring portrait of the nineteenth century through one of its most unlikely figures."
—Colin Dickey, author of Ghostland: An American History in Haunted Places
"Manseau has become the foremost chronicler of the deep American desire to believe in the weird, the strange, and oddly wonderful. His latest is lighthearted and yet grave, a profound consideration of death and doubt illuminated by a 19th century gallery of genius and ingenious deception. The dead speak in this brilliantly entertaining tale."
—Jeff Sharlet, New York Times bestselling author of The Family
Also by Peter Manseau:


Taylor Boose, Christian Angulo and Malick Mbodj have all opted to transfer.
Guys wanna play. Hate to see them leave, but transfers are all part of the college game. UCLA has lost 7 transfers, including a 5 star and a 4 star.
I'm kind of disappointed about Mbodj. He was the tallest guy we had on the roster at the WR position. I thought maybe he'd break out a bit last year but didn't get on the field much.
Boose and Angullo only have 1 year left and are at positions where they are not likely to see much playing time. Last go round. Mbodji is from down south so may be homesick. Big kid, but i'm not sure his speed and quickness gave him as much advantage as he needed at d1 level. Interesting to see where he lands. We've already go a lot of depth at tight end, so he pretty much needed to be a wideout.


text:
#include "kinect2552.h"

//file:///C:/Users/mark/Downloads/KinectHIG.2.0.pdf
// box2d

namespace From2552Software {

	/// <summary>
	/// KinectAudioStream constructor. from msft sdk
	/// </summary>
	KinectAudioStream::KinectAudioStream(IStream *p32BitAudio) :
		m_cRef(1),
		m_p32BitAudio(p32BitAudio),
		m_SpeechActive(false)

	{
	}

	/// <summary>
	/// SetSpeechState method
	/// </summary>
	void KinectAudioStream::SetSpeechState(bool state)
	{
		m_SpeechActive = state;
	}

	/////////////////////////////////////////////
	// IStream methods
	STDMETHODIMP KinectAudioStream::Read(void *pBuffer, ULONG cbBuffer, ULONG *pcbRead)
	{
		if (pcbRead == NULL || cbBuffer == NULL)
		{
			return E_INVALIDARG;
		}

		HRESULT hr = S_OK;

		// 32bit -> 16bit conversion support
		INT16* p16Buffer = (INT16*)pBuffer;
		int factor = sizeof(float) / sizeof(INT16);

		// 32 bit read support
		float* p32Buffer = new float[cbBuffer / factor];
		byte* index = (byte*)p32Buffer;
		ULONG bytesRead = 0;
		ULONG bytesRemaining = cbBuffer * factor;

		// Speech reads at high frequency - this slows down the process
		int sleepDuration = 50;

		// Speech Service isn't tolerant of partial reads
		while (bytesRemaining > 0)
		{
			// Stop returning Audio data if Speech isn't active
			if (!m_SpeechActive)
			{
				*pcbRead = 0;
				hr = S_FALSE;
				goto exit;
			}

			hr = m_p32BitAudio->Read(index, bytesRemaining, &bytesRead);
			index += bytesRead;
			bytesRemaining -= bytesRead;

			// All Audio buffers drained - wait for buffers to fill
			if (bytesRemaining != 0)
			{
				Sleep(sleepDuration);
			}
		}

		// Convert float value [-1,1] to int16 [SHRT_MIN, SHRT_MAX] and copy to output butter
		for (UINT i = 0; i < cbBuffer / factor; i++)
		{
			float sample = p32Buffer[i];

			// Make sure it is in the range [-1, +1]
			if (sample > 1.0f)
			{
				sample = 1.0f;
			}
			else if (sample < -1.0f)
			{
				sample = -1.0f;
			}

			// Scale float to the range (SHRT_MIN, SHRT_MAX] and then
			// convert to 16-bit signed with proper rounding
			float sampleScaled = sample * (float)SHRT_MAX;
			p16Buffer[i] = (sampleScaled > 0.f) ? (INT16)(sampleScaled + 0.5f) : (INT16)(sampleScaled - 0.5f);
		}

		*pcbRead = cbBuffer;

	exit:
		delete p32Buffer;
		return hr;
	}

	STDMETHODIMP KinectAudioStream::Write(const void *, ULONG, ULONG *)
	{
		return E_NOTIMPL;
	}

	STDMETHODIMP KinectAudioStream::Seek(LARGE_INTEGER /* dlibMove */, DWORD /* dwOrigin */, ULARGE_INTEGER * /* plibNewPosition */)
	{
		// Speech seeks and expects a seek implementation - but the NUIAudio stream doesnt support seeking
		return S_OK;
	}

	STDMETHODIMP KinectAudioStream::SetSize(ULARGE_INTEGER)
	{
		return E_NOTIMPL;
	}

	STDMETHODIMP KinectAudioStream::CopyTo(IStream *, ULARGE_INTEGER, ULARGE_INTEGER *, ULARGE_INTEGER *)
	{
		return E_NOTIMPL;
	}

	STDMETHODIMP KinectAudioStream::Commit(DWORD)
	{
		return E_NOTIMPL;
	}

	STDMETHODIMP KinectAudioStream::Revert()
	{
		return E_NOTIMPL;
	}

	STDMETHODIMP KinectAudioStream::LockRegion(ULARGE_INTEGER, ULARGE_INTEGER, DWORD)
	{
		return E_NOTIMPL;
	}

	STDMETHODIMP KinectAudioStream::UnlockRegion(ULARGE_INTEGER, ULARGE_INTEGER, DWORD)
	{
		return E_NOTIMPL;
	}

	STDMETHODIMP KinectAudioStream::Stat(STATSTG *, DWORD)
	{
		return E_NOTIMPL;
	}

	STDMETHODIMP KinectAudioStream::Clone(IStream **)
	{
		return E_NOTIMPL;
	}

	KinectBody::KinectBody(Kinect2552 *pKinect) {
		logVerbose("KinectBody");
		Kinect2552BaseClassBodyItems::setup(pKinect);
		leftHandState = HandState::HandState_Unknown;
		rightHandState = HandState::HandState_Unknown;
		setTalking(false);
	}

	void Kinect2552BaseClassBodyItems::setup(Kinect2552 *pKinectIn) {
		pKinect = pKinectIn;

#if _DEBUG
		// used to create direct, simple code for the obscure bugs kinect and openframeworks seem to have
		pCoordinateMapper2 = nullptr;
		pDescription2 = nullptr;
		pBodyReader2 = nullptr;
		pColorReader2 = nullptr;
		pBodySource2 = nullptr;
		pColorSource2 = nullptr;
		pSensor2 = nullptr;
		readfacereaders2 = false;
#endif
	};

	Kinect2552::Kinect2552() {
		pSensor = nullptr;
		width = 0;
		height = 0;
		pColorReader = nullptr;
		pBodyReader = nullptr;
		pDepthReader = nullptr;
		pDescription = nullptr;
		pDepthSource = nullptr;
		pColorSource = nullptr;
		pBodySource = nullptr;
		pCoordinateMapper = nullptr;
		pBodyIndexSource = nullptr;
		pBodyIndexReader = nullptr;

		// Color Table, gives each body its own color
		colors.push_back(ofColor(255, 0, 0));
		colors.push_back(ofColor(0, 0, 255));
		colors.push_back(ofColor(255, 255, 0));
		colors.push_back(ofColor(0, 255, 255));
		colors.push_back(ofColor(255, 0, 255));
		colors.push_back(ofColor(255, 255, 255));

	}

	Kinect2552::~Kinect2552() {
		if (pSensor) {
			pSensor->Close();
		}
		SafeRelease(pSensor);
		SafeRelease(pColorReader);
		SafeRelease(pBodyReader);
		SafeRelease(pDepthReader);
		SafeRelease(pDescription);
		SafeRelease(pDepthSource);
		SafeRelease(pColorSource);
		SafeRelease(pBodySource);
		SafeRelease(pCoordinateMapper);
		SafeRelease(pBodyIndexSource);
		SafeRelease(pBodyIndexReader);
	}
	void KinectBody::setTalking(int count) {
		talking = count;
	}

	bool KinectBody::isTalking() {
		if (talking > 0) {
			--talking;
		}
		return talking > 0;
	}
	void KinectBodies::setup(Kinect2552 *kinectInput) {

		if (usingFaces()) {
			KinectFaces::setup(kinectInput);
		}
		else {
			Kinect2552BaseClassBodyItems::setup(kinectInput); // skip the base class setup, its not needed here
		}

		if (usingAudio()) {
			audio.setup(kinectInput);
		}

		for (int i = 0; i < getKinect()->personCount; ++i) {
			KinectBody body(getKinect());
			bodies.push_back(body);
		}
	}
	void KinectBody::draw(bool drawface) {

		if (objectValid()) {
			//ofDrawCircle(600, 100, 30);

			ColorSpacePoint colorSpacePoint = { 0 };
			//ofDrawCircle(400, 100, 30);
			HRESULT hResult = getKinect()->getCoordinateMapper()->MapCameraPointToColorSpace(joints[JointType::JointType_HandLeft].Position, &colorSpacePoint);
			// fails here
			if (SUCCEEDED(hResult)) {
				//ofDrawCircle(700, 100, 30);
				int x = static_cast<int>(colorSpacePoint.X);
				int y = static_cast<int>(colorSpacePoint.Y);
				if ((x >= 0) && (x < getKinect()->getFrameWidth()) && (y >= 0) && (y < getKinect()->getFrameHeight())) {
					if (leftHandState == HandState::HandState_Open) {
						ofDrawCircle(x, y, 30);
					}
					else if (leftHandState == HandState::HandState_Closed) {
						ofDrawCircle(x, y, 5);
					}
					else if (leftHandState == HandState::HandState_Lasso) {
						ofDrawCircle(x, y, 15);
					}
				}
			}
			colorSpacePoint = { 0 };
			hResult = getKinect()->getCoordinateMapper()->MapCameraPointToColorSpace(joints[JointType::JointType_HandRight].Position, &colorSpacePoint);
			if (SUCCEEDED(hResult)) {
				int x = static_cast<int>(colorSpacePoint.X);
				int y = static_cast<int>(colorSpacePoint.Y);
				if ((x >= 0) && (x < getKinect()->getFrameWidth()) && (y >= 0) && (y < getKinect()->getFrameHeight())) {
					if (rightHandState == HandState::HandState_Open) {
						ofDrawCircle(x, y, 30);
					}
					else if (rightHandState == HandState::HandState_Closed) {
						ofDrawCircle(x, y, 5);
					}
					else if (rightHandState == HandState::HandState_Lasso) {
						ofDrawCircle(x, y, 15);
					}
				}
			}
			// Joint
			for (int type = 0; type < JointType::JointType_Count; type++) {
				colorSpacePoint = { 0 };
				getKinect()->getCoordinateMapper()->MapCameraPointToColorSpace(joints[type].Position, &colorSpacePoint);
				int x = static_cast<int>(colorSpacePoint.X);
				int y = static_cast<int>(colorSpacePoint.Y);

				if (joints[type].JointType == JointType::JointType_Head) {
					if (isTalking()) {
						//bugbug todo go to this to get better 3d projection CameraSpacePoint
						ofDrawLine(colorSpacePoint.X+2, colorSpacePoint.Y-5, colorSpacePoint.X + 40, colorSpacePoint.Y-5);
						ofDrawLine(colorSpacePoint.X + 5, colorSpacePoint.Y, colorSpacePoint.X + 45, colorSpacePoint.Y);
						ofDrawLine(colorSpacePoint.X+2, colorSpacePoint.Y +5, colorSpacePoint.X + 40, colorSpacePoint.Y + 5);
					}
				}
				if (!drawface) {
					if ((joints[type].JointType == JointType::JointType_Head) |
						(joints[type].JointType == JointType::JointType_Neck)) {
						continue;// assume face is drawn elsewhere
					}
				}
				if ((x >= 0) && (x < getKinect()->getFrameWidth()) && (y >= 0) && (y < getKinect()->getFrameHeight())) {
					ofDrawCircle(x, y, 10);
				}

			}

		}

	}
	void KinectBodies::draw() {

		for (int count = 0; count < bodies.size(); count++) {
			ofSetColor(getKinect()->getColor(count));
			bodies[count].draw(!usingFaces());
		}

		if (usingFaces()) {
			KinectFaces::draw();
		}
	}

	void KinectBodies::update() {
		IBodyFrame* pBodyFrame = nullptr;
		HRESULT hResult = getKinect()->getBodyReader()->AcquireLatestFrame(&pBodyFrame);
		if (!hresultFails(hResult, "AcquireLatestFrame")) {
			IBody* pBody[Kinect2552::personCount] = { 0 };

			hResult = pBodyFrame->GetAndRefreshBodyData(Kinect2552::personCount, pBody);
			if (!hresultFails(hResult, "GetAndRefreshBodyData")) {
				for (int count = 0; count < Kinect2552::personCount; count++) {
					bodies[count].setTalking(0);
					bodies[count].setValid(false);
					// breaks here
					BOOLEAN bTracked = false;
					hResult = pBody[count]->get_IsTracked(&bTracked);
					if (SUCCEEDED(hResult) && bTracked) {
						// Set TrackingID to Detect Face
						// LEFT OFF HERE
						UINT64 trackingId = _UI64_MAX;
						hResult = pBody[count]->get_TrackingId(&trackingId);
						if (hresultFails(hResult, "get_TrackingId")) {
							return;
						}

						setTrackingID(count, trackingId); //bugbug if this fails should we just set an error and return?

						if (usingAudio()) {
							// see if any audio there
							audio.getAudioCorrelation();
							if (audio.getTrackingID() == trackingId) {
								audio.setValid();
								logTrace("set talking");
								bodies[count].setTalking();
							}
						}

						// get joints
						hResult = pBody[count]->GetJoints(JointType::JointType_Count, bodies[count].getJoints());
						if (!hresultFails(hResult, "GetJoints")) {
							// Left Hand State
							hResult = pBody[count]->get_HandLeftState(bodies[count].leftHand());
							if (hresultFails(hResult, "get_HandLeftState")) {
								return;
							}
							hResult = pBody[count]->get_HandRightState(bodies[count].rightHand());
							if (hresultFails(hResult, "get_HandRightState")) {
								return;
							}
							// Lean
							hResult = pBody[count]->get_Lean(bodies[count].lean());
							if (hresultFails(hResult, "get_Lean")) {
								return;
							}
							bodies[count].setValid();
						}
					}
				}
			}
			for (int count = 0; count < Kinect2552::personCount; count++) {
				SafeRelease(pBody[count]);
			}
		}

		SafeRelease(pBodyFrame);

		if (usingFaces()) {
			aquireFaceFrame();
		}
	}

	bool Kinect2552::open()
	{

		HRESULT hResult = GetDefaultKinectSensor(&pSensor);
		if (hresultFails(hResult, "GetDefaultKinectSensor")) {
			return false;
		}

		hResult = pSensor->Open();
		if (hresultFails(hResult, "IKinectSensor::Open")) {
			return false;
		}

		hResult = pSensor->get_BodyIndexFrameSource(&pBodyIndexSource);
		if (hresultFails(hResult, "get_BodyIndexFrameSource")) {
			return false;
		}

		hResult = pSensor->get_ColorFrameSource(&pColorSource);
		if (hresultFails(hResult, "get_ColorFrameSource")) {
			return false;
		}

		hResult = pSensor->get_BodyFrameSource(&pBodySource);
		if (hresultFails(hResult, "get_BodyFrameSource")) {
			return false;
		}

		hResult = pBodyIndexSource->OpenReader(&pBodyIndexReader);
		if (hresultFails(hResult, "pBodyIndexSource OpenReader")) {
			return false;
		}

		hResult = pColorSource->OpenReader(&pColorReader);
		if (hresultFails(hResult, "pColorSource OpenReader")) {
			return false;
		}

		hResult = pBodySource->OpenReader(&pBodyReader);
		if (hresultFails(hResult, "pBodySource OpenReader")) {
			return false;
		}

		hResult = pColorSource->get_FrameDescription(&pDescription);
		if (hresultFails(hResult, "get_FrameDescription")) {
			return false;
		}

		pDescription->get_Width(&width);
		pDescription->get_Height(&height);

		hResult = pSensor->get_CoordinateMapper(&pCoordinateMapper);
		if (hresultFails(hResult, "get_CoordinateMapper")) {
			return false;
		}

		logTrace("Kinect signed on, life is good.");

		return true;
	}

	void Kinect2552::coordinateMapper()
	{
}
KinectFaces::KinectFaces() {

	logVerbose("KinectFaces");

	// features are the same for all faces
	features = FaceFrameFeatures::FaceFrameFeatures_BoundingBoxInColorSpace
		| FaceFrameFeatures::FaceFrameFeatures_PointsInColorSpace
		| FaceFrameFeatures::FaceFrameFeatures_RotationOrientation
		| FaceFrameFeatures::FaceFrameFeatures_Happy
		| FaceFrameFeatures::FaceFrameFeatures_RightEyeClosed
		| FaceFrameFeatures::FaceFrameFeatures_LeftEyeClosed
		| FaceFrameFeatures::FaceFrameFeatures_MouthOpen
		| FaceFrameFeatures::FaceFrameFeatures_MouthMoved
		| FaceFrameFeatures::FaceFrameFeatures_LookingAway
		| FaceFrameFeatures::FaceFrameFeatures_Glasses
		| FaceFrameFeatures::FaceFrameFeatures_FaceEngagement;

};

KinectFace::~KinectFace() {
}
void KinectFace::cleanup()
{
	// do not call in destructor as pointers are used, call when needed
	SafeRelease(pFaceReader);
	SafeRelease(pFaceSource);
}
KinectFaces::~KinectFaces() {

	for (int i = 0; i < faces.size(); ++i) {
		faces[i].cleanup();
	}

}
// get the face readers
void KinectFaces::setup(Kinect2552 *kinectInput) {

	Kinect2552BaseClassBodyItems::setup(kinectInput);

	for (int i = 0; i < Kinect2552::personCount; ++i) {
		KinectFace face(getKinect());

		HRESULT hResult = CreateFaceFrameSource(getKinect()->getSensor(), 0, features, &face.pFaceSource);
		if (hresultFails(hResult, "CreateFaceFrameSource")) {
			return;
		}

		hResult = face.pFaceSource->OpenReader(&face.pFaceReader);
		if (hresultFails(hResult, "face.pFaceSource->OpenReader")) {
			return;
		}
		faces.push_back(face);
	}

}

void KinectFace::draw()
{
	if (objectValid()) {
		//ofDrawCircle(400, 100, 30);

		if (faceProperty[FaceProperty_LeftEyeClosed] != DetectionResult_Yes)
		{
			ofDrawCircle(leftEye().X-15, leftEye().Y, 10);
		}
		if (faceProperty[FaceProperty_RightEyeClosed] != DetectionResult_Yes)
		{
			ofDrawCircle(rightEye().X+15, rightEye().Y, 10);
		}
		ofDrawCircle(nose().X, nose().Y, 5);
		if (faceProperty[FaceProperty_Happy] == DetectionResult_Yes || faceProperty[FaceProperty_Happy] == DetectionResult_Maybe || faceProperty[FaceProperty_Happy] == DetectionResult_Unknown) {
			// smile as much as possible
			ofDrawCurve(mouthCornerLeft().X- 70, mouthCornerLeft().Y-70, mouthCornerLeft().X, mouthCornerRight().Y+30, mouthCornerRight().X, mouthCornerRight().Y+30, mouthCornerRight().X+ 70, mouthCornerRight().Y - 70);
		}
		else {
			float height;
			float offset = 0;
			if (faceProperty[FaceProperty_MouthOpen] == DetectionResult_Yes || faceProperty[FaceProperty_MouthOpen] == DetectionResult_Maybe)
			{
				height = 60.0;
				offset = height/2;
			}
			else
			{
				height = 5.0;
				offset = 10;
			}
			float width = abs(mouthCornerRight().X - mouthCornerLeft().X);
			ofDrawEllipse(mouthCornerLeft().X-5, mouthCornerLeft().Y+ offset, width+5, height);
		}
	}

}
void KinectFaces::draw()
{
	//ofDrawCircle(400, 100, 30);
	for (int count = 0; count < faces.size(); count++) {
		ofSetColor(getKinect()->getColor(count));
		faces[count].draw();
	}

}
void KinectFaces::ExtractFaceRotationInDegrees(const Vector4* pQuaternion, int* pPitch, int* pYaw, int* pRoll)
{
	double x = pQuaternion->x;
	double y = pQuaternion->y;
	double z = pQuaternion->z;
	double w = pQuaternion->w;

	// convert face rotation quaternion to Euler angles in degrees
	*pPitch = static_cast<int>(std::atan2(2 * (y * z + w * x), w * w - x * x - y * y + z * z) / M_PI * 180.0f);
	*pYaw = static_cast<int>(std::asin(2 * (w * y - x * z)) / M_PI * 180.0f);
	*pRoll = static_cast<int>(std::atan2(2 * (x * y + w * z), w * w + x * x - y * y - z * z) / M_PI * 180.0f);
}

void  Kinect2552BaseClassBodyItems::aquireBodyFrame()
{

	IBodyFrame* pBodyFrame = nullptr;
	HRESULT hResult = getKinect()->getBodyReader()->AcquireLatestFrame(&pBodyFrame); // getKinect()->getBodyReader() was pBodyReader
	if (!hresultFails(hResult, "AcquireLatestFrame")) {
		IBody* pBody[Kinect2552::personCount] = { 0 };
		hResult = pBodyFrame->GetAndRefreshBodyData(Kinect2552::personCount, pBody);
		if (!hresultFails(hResult, "GetAndRefreshBodyData")) {
			for (int count = 0; count < Kinect2552::personCount; count++) {
				BOOLEAN bTracked = false;
				hResult = pBody[count]->get_IsTracked(&bTracked);
				if (SUCCEEDED(hResult) && bTracked) {

					// Set TrackingID to Detect Face etc
					UINT64 trackingId = _UI64_MAX;
					hResult = pBody[count]->get_TrackingId(&trackingId);
					if (!hresultFails(hResult, "get_TrackingId")) {
						setTrackingID(count, trackingId);
					}
				}
			}
		}
		for (int count = 0; count < Kinect2552::personCount; count++) {
			SafeRelease(pBody[count]);
		}
		SafeRelease(pBodyFrame);
	}

}
// add faces to the bodies
void KinectFaces::update() {

	while (1) {
		aquireBodyFrame();
		if (aquireFaceFrame())
			break;
	}

}

void KinectFaces::drawProjected(int x, int y, int width, int height) {
	return;
}
// return true if face found
bool KinectFaces::aquireFaceFrame()
{

	for (int count = 0; count < Kinect2552::personCount; count++) {
		IFaceFrame* pFaceFrame = nullptr;
		HRESULT hResult = faces[count].getFaceReader()->AcquireLatestFrame(&pFaceFrame); // faces[count].getFaceReader() was pFaceReader[count]
		if (SUCCEEDED(hResult) && pFaceFrame != nullptr) {
			BOOLEAN bFaceTracked = false;
			hResult = pFaceFrame->get_IsTrackingIdValid(&bFaceTracked);
			if (SUCCEEDED(hResult) && bFaceTracked) {
				IFaceFrameResult* pFaceResult = nullptr;
				hResult = pFaceFrame->get_FaceFrameResult(&pFaceResult);
				if (SUCCEEDED(hResult) && pFaceResult != nullptr) {
					logVerbose("aquireFaceFrame");

					hResult = pFaceResult->GetFacePointsInColorSpace(FacePointType::FacePointType_Count, faces[count].facePoint);
					hResult = pFaceResult->get_FaceRotationQuaternion(&faces[count].faceRotation);
					hResult = pFaceResult->GetFaceProperties(FaceProperty::FaceProperty_Count, faces[count].faceProperty);
					hResult = pFaceResult->get_FaceBoundingBoxInColorSpace(&faces[count].boundingBox);
					SafeRelease(pFaceResult);
					SafeRelease(pFaceFrame);
					faces[count].setValid();
					return true;

				}
				SafeRelease(pFaceResult);
			}
		}
		SafeRelease(pFaceFrame);
	}
	return false;
}

#if _DEBUG
// This code should always work, but draw() needs to be called too, it replaces update when we need to figure something out
int KinectFaces::baseline()
{
	// Sensor
	HRESULT hResult = S_OK;
	if (false && pSensor2 == nullptr) // was pSensor
	{
		hResult = GetDefaultKinectSensor(&pSensor2);
		if (FAILED(hResult)) {
			std::cerr << "Error : GetDefaultKinectSensor" << std::endl;
			return -1;
		}

		hResult = pSensor2->Open();
		if (FAILED(hResult)) {
			std::cerr << "Error : IKinectSensor::Open()" << std::endl;
			return -1;
		}

		// Source
		hResult = pSensor2->get_ColorFrameSource(&pColorSource2);
		if (FAILED(hResult)) {
			std::cerr << "Error : IKinectSensor::get_ColorFrameSource()" << std::endl;
			return -1;
		}

		hResult = pSensor2->get_BodyFrameSource(&pBodySource2);
		if (FAILED(hResult)) {
			std::cerr << "Error : IKinectSensor::get_BodyFrameSource()" << std::endl;
			return -1;
		}

		// Reader
		hResult = pColorSource2->OpenReader(&pColorReader2);
		if (FAILED(hResult)) {
			std::cerr << "Error : IColorFrameSource::OpenReader()" << std::endl;
			return -1;
		}

		hResult = pBodySource2->OpenReader(&pBodyReader2);
		if (FAILED(hResult)) {
			std::cerr << "Error : IBodyFrameSource::OpenReader()" << std::endl;
			return -1;
		}

		// Description
		hResult = pColorSource2->get_FrameDescription(&pDescription2);
		if (FAILED(hResult)) {
			std::cerr << "Error : IColorFrameSource::get_FrameDescription()" << std::endl;
			return -1;
		}

		int width = 0;
		int height = 0;
		pDescription2->get_Width(&width); // 1920
		pDescription2->get_Height(&height); // 1080
		unsigned int bufferSize = width * height * 4 * sizeof(unsigned char);

		// Coordinate Mapper
		hResult = pSensor2->get_CoordinateMapper(&pCoordinateMapper2);
		if (FAILED(hResult)) {
			std::cerr << "Error : IKinectSensor::get_CoordinateMapper()" << std::endl;
			return -1;
		}

		DWORD features = FaceFrameFeatures::FaceFrameFeatures_BoundingBoxInColorSpace
			| FaceFrameFeatures::FaceFrameFeatures_PointsInColorSpace
			| FaceFrameFeatures::FaceFrameFeatures_RotationOrientation
			| FaceFrameFeatures::FaceFrameFeatures_Happy
			| FaceFrameFeatures::FaceFrameFeatures_RightEyeClosed
			| FaceFrameFeatures::FaceFrameFeatures_LeftEyeClosed
			| FaceFrameFeatures::FaceFrameFeatures_MouthOpen
			| FaceFrameFeatures::FaceFrameFeatures_MouthMoved
			| FaceFrameFeatures::FaceFrameFeatures_LookingAway
			| FaceFrameFeatures::FaceFrameFeatures_Glasses
			| FaceFrameFeatures::FaceFrameFeatures_FaceEngagement;

		for (int count = 0; count < Kinect2552::personCount; count++) {
			KinectFace face(getKinect());
			// Source
			hResult = CreateFaceFrameSource(pSensor2, 0, features, &pFaceSource2[count]);
			if (FAILED(hResult)) {
				std::cerr << "Error : CreateFaceFrameSource" << std::endl;
				return -1;
			}

			// Reader
			hResult = pFaceSource2[count]->OpenReader(&pFaceReader2[count]);
			if (FAILED(hResult)) {
				std::cerr << "Error : IFaceFrameSource::OpenReader()" << std::endl;
				return -1;
			}
			faces.push_back(face);
		}
		// Face Property Table
		std::string property[FaceProperty::FaceProperty_Count];
		property[0] = "Happy";
		property[1] = "Engaged";
		property[2] = "WearingGlasses";
		property[3] = "LeftEyeClosed";
		property[4] = "RightEyeClosed";
		property[5] = "MouthOpen";
		property[6] = "MouthMoved";
		property[7] = "LookingAway";
	}
	while (1) {
		aquireBodyFrame();
		if (aquireFaceFrame())
			break;
	}

	return 0;

}
#endif

void KinectAudio::getAudioCommands() {
	unsigned long waitObject = WaitForSingleObject(hSpeechEvent, 0);
	if (waitObject == WAIT_TIMEOUT) {
		logVerbose("signaled");
	}
	else if (waitObject == WAIT_OBJECT_0) {
		logTrace("nonsignaled");
		// Retrieved Event
		const float confidenceThreshold = 0.3f;
		SPEVENT eventStatus;
		//eventStatus.eEventId = SPEI_UNDEFINED;
		unsigned long eventFetch = 0;
		pSpeechContext->GetEvents(1, &eventStatus, &eventFetch);
		while (eventFetch > 0) {
			switch (eventStatus.eEventId) {
				// Speech Recognition Events
				//   SPEI_HYPOTHESIS  : Estimate
				//   SPEI_RECOGNITION : Recognition
			case SPEI_HYPOTHESIS:
			case SPEI_RECOGNITION:
				if (eventStatus.elParamType == SPET_LPARAM_IS_OBJECT) {
					// Retrieved Phrase
					ISpRecoResult* pRecoResult = reinterpret_cast<ISpRecoResult*>(eventStatus.lParam);
					SPPHRASE* pPhrase = nullptr;
					HRESULT hResult = pRecoResult->GetPhrase(&pPhrase);
					if (!hresultFails(hResult, "GetPhrase")) {
						if ((pPhrase->pProperties != nullptr) && (pPhrase->pProperties->pFirstChild != nullptr)) {
							// Compared with the Phrase Tag in the grammar file
							const SPPHRASEPROPERTY* pSemantic = pPhrase->pProperties->pFirstChild;
							switch (pSemantic->Confidence) {
							case SP_LOW_CONFIDENCE:
								logTrace("SP_LOW_CONFIDENCE: " + Trace2552::wstrtostr(pSemantic->pszValue));
								break;
							case SP_NORMAL_CONFIDENCE:
								logTrace("SP_NORMAL_CONFIDENCE: " + Trace2552::wstrtostr(pSemantic->pszValue));
								break;
							case SP_HIGH_CONFIDENCE:
								logTrace("SP_HIGH_CONFIDENCE: " + Trace2552::wstrtostr(pSemantic->pszValue));
								break;
							}
							if (pSemantic->SREngineConfidence > confidenceThreshold) {
								logTrace("SREngineConfidence > confidenceThreshold: " + Trace2552::wstrtostr(pSemantic->pszValue));
							}
						}
						CoTaskMemFree(pPhrase);
					}
				}
			}
			pSpeechContext->GetEvents(1, &eventStatus, &eventFetch);
		}
	}
	else {
		logTrace("other");
	}

}
void KinectAudio::update() {
	getAudioBody();
	getAudioBeam();
	getAudioCommands();
}
//http://www.buildinsider.net/small/kinectv2cpp/07
KinectAudio::KinectAudio(Kinect2552 *pKinect) {
	Kinect2552BaseClassBodyItems::setup(pKinect);
	logVerbose("KinectAudio");
	audioTrackingId = NoTrackingID;
	trackingIndex = NoTrackingIndex;
	angle = 0.0f;
	confidence = 0.0f;
	correlationCount = 0;
	pAudioBeamList=nullptr;
	pAudioBeam = nullptr;
	pAudioStream = nullptr;
	pAudioSource = nullptr;
	pAudioBeamReader = nullptr;
	pSpeechStream = nullptr;
	pSpeechRecognizer = nullptr;
	pSpeechContext = nullptr;
	pSpeechGrammar = nullptr;
	hSpeechEvent = INVALID_HANDLE_VALUE;
	audioStream = nullptr;
}

KinectAudio::~KinectAudio(){
	if (pSpeechRecognizer != nullptr) {
		pSpeechRecognizer->SetRecoState(SPRST_INACTIVE_WITH_PURGE);
	}
	SafeRelease(pAudioSource);
	SafeRelease(pAudioBeamReader);
	SafeRelease(pAudioBeamList);
	SafeRelease(pAudioBeam);
	SafeRelease(pAudioStream);
	SafeRelease(pSpeechStream);
	SafeRelease(pSpeechRecognizer);
	SafeRelease(pSpeechContext);
	SafeRelease(pSpeechGrammar);
	if (hSpeechEvent != INVALID_HANDLE_VALUE) {
		CloseHandle(hSpeechEvent);
	}
	CoUninitialize();
	if (audioStream != nullptr) {
		audioStream->SetSpeechState(false);
		delete audioStream;
		audioStream = nullptr;
	}

}

void KinectAudio::setup(Kinect2552 *pKinect) {

	Kinect2552BaseClassBodyItems::setup(pKinect);

	HRESULT hResult = getKinect()->getSensor()->get_AudioSource(&pAudioSource);
	if (hresultFails(hResult, "get_AudioSource")) {
		return;
	}

	hResult = pAudioSource->OpenReader(&pAudioBeamReader);
	if (hresultFails(hResult, "IAudioSource::OpenReader")) {
		return;
	}

	hResult = pAudioSource->get_AudioBeams(&pAudioBeamList);
	if (hresultFails(hResult, "IAudioSource::get_AudioBeams")) {
		return;
	}

	hResult = pAudioBeamList->OpenAudioBeam(0, &pAudioBeam);
	if (hresultFails(hResult, "pAudioBeamList->OpenAudioBeam")) {
		return;
	}

	hResult = pAudioBeam->OpenInputStream(&pAudioStream);
	if (hresultFails(hResult, "IAudioSource::OpenInputStream")) {
		return;
	}

	audioStream = new KinectAudioStream(pAudioStream);

	hResult = CoInitializeEx(NULL, COINIT_MULTITHREADED);
	if (hresultFails(hResult, "CoInitializeEx")) {
		return;
	}

	if (FAILED(setupSpeachStream())) {
		return;
	}
	if (FAILED(createSpeechRecognizer())) {
		return;
	}
	if (FAILED(findKinect())) {
		return;
	}
	if (FAILED(startSpeechRecognition())) {
		return;
	}

}

HRESULT KinectAudio::setupSpeachStream() {

	HRESULT hResult = CoCreateInstance(CLSID_SpStream, NULL, CLSCTX_INPROC_SERVER, __uuidof(ISpStream), (void**)&pSpeechStream);
	if (hresultFails(hResult, "CoCreateInstance( CLSID_SpStream )")) {
		return hResult;
	}

	WORD AudioFormat = WAVE_FORMAT_PCM;
	WORD AudioChannels = 1;
	DWORD AudioSamplesPerSecond = 16000;
	DWORD AudioAverageBytesPerSecond = 32000;
	WORD AudioBlockAlign = 2;
	WORD AudioBitsPerSample = 16;

	WAVEFORMATEX waveFormat = { AudioFormat, AudioChannels, AudioSamplesPerSecond, AudioAverageBytesPerSecond, AudioBlockAlign, AudioBitsPerSample, 0 };

	audioStream->SetSpeechState(true);
	hResult = pSpeechStream->SetBaseStream(audioStream, SPDFID_WaveFormatEx, &waveFormat);
	if (hresultFails(hResult, "ISpStream::SetBaseStream")) {
		return hResult;
	}

	return hResult;

}
HRESULT KinectAudio::findKinect() {

	ISpObjectTokenCategory* pTokenCategory = nullptr;
	HRESULT hResult = CoCreateInstance(CLSID_SpObjectTokenCategory, nullptr, CLSCTX_ALL, __uuidof(ISpObjectTokenCategory), reinterpret_cast<void**>(&pTokenCategory));
	if (hresultFails(hResult, "CoCreateInstance")) {
		return hResult;
	}

	hResult = pTokenCategory->SetId(SPCAT_RECOGNIZERS, false);
	if (hresultFails(hResult, "ISpObjectTokenCategory::SetId()")) {
		SafeRelease(pTokenCategory);
		return hResult;
	}

	IEnumSpObjectTokens* pEnumTokens = nullptr;
	hResult = CoCreateInstance(CLSID_SpMMAudioEnum, nullptr, CLSCTX_ALL, __uuidof(IEnumSpObjectTokens), reinterpret_cast<void**>(&pEnumTokens));
	if (hresultFails(hResult, "CoCreateInstance( CLSID_SpMMAudioEnum )")) {
		SafeRelease(pTokenCategory);
		return hResult;
	}

	// Find Best Token
	const wchar_t* pVendorPreferred = L"VendorPreferred";
	const unsigned long lengthVendorPreferred = static_cast<unsigned long>(wcslen(pVendorPreferred));
	unsigned long length;
	ULongAdd(lengthVendorPreferred, 1, &length);
	wchar_t* pAttribsVendorPreferred = new wchar_t[length];
	StringCchCopyW(pAttribsVendorPreferred, length, pVendorPreferred);

	hResult = pTokenCategory->EnumTokens(L"Language=409;Kinect=True", pAttribsVendorPreferred, &pEnumTokens); //  English "Language=409;Kinect=True"
	if (hresultFails(hResult, "pTokenCategory->EnumTokens")) {
		SafeRelease(pTokenCategory);
		return hResult;
	}

	SafeRelease(pTokenCategory);
	delete[] pAttribsVendorPreferred;

	ISpObjectToken* pEngineToken = nullptr;
	hResult = pEnumTokens->Next(1, &pEngineToken, nullptr);
	if (hresultFails(hResult, "ISpObjectToken Next")) {
		SafeRelease(pTokenCategory);
		return hResult;
	}
	if (hResult == S_FALSE) {
		//note this but continus things will still work, not sure it matters with the new sdk
		logVerbose("Kinect not found");
	}
	SafeRelease(pEnumTokens);
	SafeRelease(pTokenCategory);

	// Set Speech Recognizer
	hResult = pSpeechRecognizer->SetRecognizer(pEngineToken);
	if (hresultFails(hResult, "SetRecognizer")) {
		return hResult;
	}
	SafeRelease(pEngineToken);

	hResult = pSpeechRecognizer->CreateRecoContext(&pSpeechContext);
	if (hresultFails(hResult, "CreateRecoContext")) {
		return hResult;
	}

	hResult = pSpeechRecognizer->SetPropertyNum(L"AdaptationOn", 0);
	if (hresultFails(hResult, "SetPropertyNum")) {
		return hResult;
	}

	return hResult;

}
HRESULT KinectAudio::createSpeechRecognizer()
{
	// Create Speech Recognizer Instance
	HRESULT hResult = CoCreateInstance(CLSID_SpInprocRecognizer, NULL, CLSCTX_INPROC_SERVER, __uuidof(ISpRecognizer), (void**)&pSpeechRecognizer);
	if (hresultFails(hResult, "CLSID_SpInprocRecognizer")) {
		return hResult;
	}

	// Set Input Stream
	hResult = pSpeechRecognizer->SetInput(pSpeechStream, TRUE);
	if (hresultFails(hResult, "pSpeechRecognizer->SetInput")) {
		return hResult;
	}

	return hResult;
}

HRESULT KinectAudio::startSpeechRecognition()
{
	HRESULT hResult = pSpeechContext->CreateGrammar(1, &pSpeechGrammar);
	if (hresultFails(hResult, "CreateGrammar")) {
		return hResult;
	}

	hResult = pSpeechGrammar->LoadCmdFromFile(L"grammar.grxml", SPLO_STATIC); // http://www.w3.org/TR/speech-grammar/ (UTF-8/CRLF)
	if (hresultFails(hResult, "LoadCmdFromFile")) {
		return hResult;
	}

	// Specify that all top level rules in grammar are now active
	hResult = pSpeechGrammar->SetRuleState(NULL, NULL, SPRS_ACTIVE);

	// Specify that engine should always be reading audio
	hResult = pSpeechRecognizer->SetRecoState(SPRST_ACTIVE_ALWAYS);

	// Specify that we're only interested in receiving recognition events
	hResult = pSpeechContext->SetInterest(SPFEI(SPEI_RECOGNITION), SPFEI(SPEI_RECOGNITION));

	// Ensure that engine is recognizing speech and not in paused state
	hResult = pSpeechContext->Resume(0);
	if (SUCCEEDED(hResult))
	{
		hSpeechEvent = pSpeechContext->GetNotifyEventHandle();
	}
	hSpeechEvent = pSpeechContext->GetNotifyEventHandle();

	return hResult;
}
void  KinectAudio::setTrackingID(int index, UINT64 trackingId) {
	logVerbose("KinectAudio::setTrackingID");

	if (trackingId == audioTrackingId) {
		trackingIndex = index;
		logTrace("set tracking id");
	}
}

// poll kenict to get audo and the body it came from
void KinectAudio::getAudioBody() {
	getAudioCorrelation();
	if (correlationCount != 0) {
		aquireBodyFrame();
	}
}
void KinectAudio::getAudioCorrelation() {
	correlationCount = 0;
	trackingIndex = NoTrackingIndex;
	audioTrackingId = NoTrackingID;

	IAudioBeamFrameList* pAudioBeamList = nullptr;
	HRESULT hResult = getAudioBeamReader()->AcquireLatestBeamFrames(&pAudioBeamList);
	if (!hresultFails(hResult, "getAudioCorrelation AcquireLatestBeamFrames")) {

		IAudioBeamFrame* pAudioBeamFrame = nullptr;
		hResult = pAudioBeamList->OpenAudioBeamFrame(0, &pAudioBeamFrame);
		if (!hresultFails(hResult, "OpenAudioBeamFrame")) {
			IAudioBeamSubFrame* pAudioBeamSubFrame = nullptr;
			hResult = pAudioBeamFrame->GetSubFrame(0, &pAudioBeamSubFrame);

			if (!hresultFails(hResult, "GetSubFrame")) {
				hResult = pAudioBeamSubFrame->get_AudioBodyCorrelationCount(&correlationCount);

				if (SUCCEEDED(hResult) && (correlationCount != 0)) {
					IAudioBodyCorrelation* pAudioBodyCorrelation = nullptr;
					hResult = pAudioBeamSubFrame->GetAudioBodyCorrelation(0, &pAudioBodyCorrelation);

					if (!hresultFails(hResult, "GetAudioBodyCorrelation")) {
						hResult = pAudioBodyCorrelation->get_BodyTrackingId(&audioTrackingId);
						SafeRelease(pAudioBodyCorrelation);
					}
				}
				SafeRelease(pAudioBeamSubFrame);
			}
			SafeRelease(pAudioBeamFrame);
		}
		SafeRelease(pAudioBeamList);
	}

}

// AudioBeam Frame https://masteringof.wordpress.com/examples/sounds/ https://masteringof.wordpress.com/projects-based-on-book/
void KinectAudio::getAudioBeam() {

	IAudioBeamFrameList* pAudioBeamList = nullptr;
	HRESULT hResult = getAudioBeamReader()->AcquireLatestBeamFrames(&pAudioBeamList);
	if (!hresultFails(hResult, "getAudioBeam AcquireLatestBeamFrames")) {
		//bugbug add error handling maybe other clean up
		UINT beamCount = 0;
		hResult = pAudioBeamList->get_BeamCount(&beamCount);
		// Only one audio beam is currently supported, but write the code in case this changes
		for (int beam = 0; beam < beamCount; ++beam) {
			angle = 0.0f;
			confidence = 0.0f;
			IAudioBeamFrame* pAudioBeamFrame = nullptr;
			hResult = pAudioBeamList->OpenAudioBeamFrame(beam, &pAudioBeamFrame);

			if (!hresultFails(hResult, "OpenAudioBeamFrame")) {
				// Get Beam Angle and Confidence
				IAudioBeam* pAudioBeam = nullptr;
				hResult = pAudioBeamFrame->get_AudioBeam(&pAudioBeam);
				if (!hresultFails(hResult, "get_AudioBeam")) {
					pAudioBeam->get_BeamAngle(&angle); // radian [-0.872665f, 0.872665f]
					pAudioBeam->get_BeamAngleConfidence(&confidence); // confidence [0.0f, 1.0f]
					SafeRelease(pAudioBeam);
				}
				SafeRelease(pAudioBeamFrame);
			}
		}
		SafeRelease(pAudioBeamList);
	}

}
}


This is the coming-of-age story of a regular boy in an irregular world, the story of a divine boy in a mundane world. It is perfect reading for anyone trying to find a relationship with his own family or anyone trying to find a place for himself in society. Very quirky and funny, very real and enchanting. Gives you hope about being in this crazy universe. There is no normal childhood, no normal family. And the blessing of living with oddity is that it grounds one's experience of the world. This book tells the story of a boy who observes his strange family, friends, and acquaintances with a non-judgmental and sometimes compassionate and appreciative eye. A must read for those struggling with issues of identity and individuality, especially teenagers or those in psychological therapy. A special delight for everyone. Multi-layered and resonant, this book will be enjoyed anew many times over.


running faucet closed by a hand, ecology, water economy (HD, high definition 1080p) beautiful shot with soft focus.
hd00:11running faucet closed by a hand, ecology, water economy (HD, high definition 1080p) beautiful shot with soft focus.
hd00:12A jet of water from the shower hear. Close-up. White shower and water pressure switch on and off.


text:
Escher Quartet
September 13, 2016 8:00 pm The Vancouver Playhouse, 600 Hamilton St.
Purchase Subscriptions Here
Quartettsatz in C minor, D703
Arnold Schoenberg
Quartet No.1 in D minor, Opus 7
Quartet No.3 in D major, Opus 44 No.1
We are pleased to welcome back the Escher Quartet for a second time. Our audience was overjoyed with their youthful, vibrant music-making in 2014, and they are back by popular request. The Escher is acclaimed for its profound musical insight and rare tonal beauty. In 2013, the Quartet became one of the very few chamber ensembles to be awarded the prestigious Avery Fischer Career Grant. The Escher Quartet has recorded the complete Zemlinsky quartets and the complete Mendelssohn Quartets, receiving critical acclaim for all of them.
The Escher Quartet takes its name from Dutch graphic artist M.C. Escher, inspired by Escher's method of interplay between individual components working together to form a whole.
Ticket purchase powered by Artspoints.
If you're at the concert, be sure to tweet us @FCMVancouver and use hashtag #FCMEscher!
Quartettsatz in C minor, Opus post, D 703 Franz Schubert (1797-1828)
Viennese proto-Romantic Franz Schubert composed the Quartettsatz (Movement for String Quartet) in December 1820, when he was 23, eight years before he died at 31. It represents the first movement of a Twelfth String Quartet which he never completed. A number of other compositions that Schubert began during 1820 were similarly abandoned, because he was experiencing a severe identity crisis at the time. This was at the time when Beethoven was the dominant musical voice in new music in Vienna, and Schubert was an admirer. Nevertheless, in its melodious style and structure the Quartettsatz was the forerunner of Schubert's great late string quartets.
Here is a video of the Escher Quartet performing Schubert's Quartettsatz:
String Quartet No 1 in D minor, Opus 7 Arnold Schoenberg (1874-1951)
Arnold Schoenberg is known most for his pioneering of the atonal 12-tone or serial means of composing music, a serious form – and dissonant sort of sound for many people. However, this tonal string quartet in four movements was young Schoenberg's first masterpiece. It was written at a time, in 1897, when he was under the influence of composer Gustav Mahler, and writing tonal Romantic music in his native Vienna, Austria. The quartet is remarkable for its density and intensity of orchestration with only four instruments.
The First Quartet is the work of an idealistic and optimistic young man at work and play in a field which included the music of Mozart, Beethoven, and Brahms as well as Reger, Wagner, Liszt, Schubert and others. In his fertile ear he absorbed as much from these masters as he added ideas of his own invention.
A different quartet playing Schoenberg's Quartet, Opus 7:
String Quartet No. 3 in D Major, Opus 44, No. 1 Felix Mendelssohn (1809-1847)
Mendelssohn, like Mozart a child prodigy as a composer, finished this quartet when he was 29 years old. In a letter to the violinist Ferdinand David, Mendelssohn wrote, "I have just finished my third quartet, in D Major, and like it very much. I hope it will please you as well since it is more spirited and seems to me likely to be more grateful to the players than the others." This melodious, spirited and Romantic work rounds out the evening.
Another quartet who has played for FCM play the start of Mendelssohn's Opus 44, No 1:
Purchase subscriptions here:
« Takács String Quartet Israeli Chamber Project »


Fast and robust numerical approach for turbulent heat transfer in case of high gradients of physical properties and unsteady heat transfer in case of strong temperature fluctuations is developed. This pseudo transient Large Eddy Simulation approach is applied to perform transient calculations of turbulent mixing between helium and air in a rectangular mixing channel for Atwood numbers of 0.04 and 0.6. Comparisons of these numerical results with the experimental results by Banerjee, Kraft, Andrews (2010) show a good agreement. The results confirmed applicability of the pseudo transient approach also for higher Atwood numbers while wider time stepping and higher Courant numbers are used. Also reported are simulation results using Reynolds averaged (RANS) method where standard k–ε and k–ω SST models are applied.
Otic I, Chai X, Cheng X. Pseudo-Transient Simulation of Turbulent Mixing in a Rectangular Channel. ASME. International Conference on Nuclear Engineering, Volume 4: Radiation Protection and Nuclear Technology Applications; Fuel Cycle, Radioactive Waste Management and Decommissioning; Computational Fluid Dynamics (CFD) and Coupled Codes; Reactor Physics and Transport Theory ():V004T10A045. doi:10.1115/ICONE22-31023.