<!-- mIv Decembre 2020 -->
<phyphox version="1.10">
    <title>Merry Christmas and Happy New Year 2022!</title>
    <category>New Year!</category>
    <description>Take your smartphone horizontally and draw a christmas tree. The garlands, the snowflakes and the salut are controlled by the acceleration sensor components x and z (© mIv 2020).</description>
    <icon format="string">N22</icon>
    <color>green</color>
    <data-containers>
	<container size="1001" static="false">z</container> <!-- chritmas tree -->
	<container size="1001" static="false">left</container>
	<container size="1001" static="false">right</container>
	<container size="51" static="false">h</container> <!-- 2 garlands (51) -->
	<container size="51" static="false">x1</container>
	<container size="51" static="false">x2</container>
	<container size="1001" static="false">Ax</container> <!-- accelerations x, y and z -->
	<container size="1001" static="false">Ay</container>
	<container size="1001" static="false">Az</container>
	<container size="1" static="false">sx</container> <!-- position of new snowflake -->
	<container size="1" static="false">sz</container> 
	<container size="71" static="false">Sx</container> <!-- 71 snowflakes -->
	<container size="71" static="false">Sz</container>
	<container size="6" static="false">n5</container> <!-- 5 end star -->
	<container size="6" static="false">x5</container>
	<container size="6" static="false">y5</container>
	<container size="1" init="0.0" static="false">sound</container> <!-- salut -->
	<container size="1" init="0.0" static="false">salut</container>
	<container size="1" init="0.0" static="false">go</container>
	<container size="40" static="false">n40</container>
	<container size="40" static="false">x40</container>
	<container size="40" static="false">y40</container>
    </data-containers>
    <input> <!-- x and z accelerations (with g) -->
        <sensor rate="0" average="false" type="accelerometer">
            <output component="x">Ax</output>
            <output component="y">Ay</output>
            <output component="z">Az</output>
        </sensor>
    </input>
    <output> <!-- white noise -->
        <audio rate="48000" loop="false" normalize="true">
            <noise>
                <input parameter="amplitude" type="buffer" clear="false">sound</input>
                <input parameter="duration" type="value">0.6</input>
            </noise>
        </audio>
    </output>
    <analysis sleep="0.5" onUserInput="false">
        <!-- Christmas tree -->
        <formula formula="[1_]-4"> <!-- height to draw -->
            <input as="in" clear="false">Ay</input>
            <output as="out" clear="false">z</output>
        </formula>
        <formula formula="[1_]*0.5"> <!-- right branch to draw -->
            <input as="in" clear="false">Ax</input>
            <output as="out">right</output>
        </formula>
        <multiply>                      <!-- left branch = -right -->
            <input as="factor" type="value">-1</input>
            <input as="factor" clear="false">right</input>
            <output as="product">left</output>
        </multiply> 
        <!-- Garlands -->
        <ramp>
            <input as="start" type="value">0</input>
            <input as="stop" type="value">4</input>
            <input as="length" type="value">51</input>
            <output as="out">h</output>
        </ramp>
        <formula formula="exp(-[1_])*cos([1_]*2+[2])"> <!-- garland 1 -->
            <input as="in" clear="false">h</input>
            <input as="in" clear="false">Ax</input>
            <output as="out">x1</output>
        </formula> 
        <formula formula="-exp(-[1_])*sin([1_]*2-[2])">  <!-- garland 2 -->
            <input as="in" clear="false">h</input>
            <input as="in" clear="false">Az</input>
            <output as="out">x2</output>
        </formula>
        <!-- Snow -->
        <formula formula="([1]*10-round([1]*10))*2">
            <input as="in" clear="false">Ax</input>
            <output as="out">sx</output>
        </formula>
        <formula formula="([1]*10-round([1]*10)+0.5)*4.23"> <!-- 4+star -->
            <input as="in" clear="false">Az</input>
            <output as="out">sz</output>
        </formula>
        <append>
            <input clear="false">Sx</input>
            <input clear="true">sx</input>
            <output>Sx</output>
        </append> 
        <append>
            <input clear="false">Sz</input>
            <input clear="true">sz</input>
            <output>Sz</output>
        </append>
        <!-- Star -->
        <ramp>
            <input as="start" type="value">0</input>
            <input as="stop" type="value">5</input>
            <input as="length" type="value">6</input>
            <output as="out">n5</output>
        </ramp>
        <formula formula="(sin((4/5)*3.14159*[1_]))*0.12">
            <input as="in" clear="false">n5</input>
            <output as="out">x5</output>
        </formula>
        <formula formula="(cos((4/5)*3.14159*[1_])+0.379)*0.15+4.03">
            <input as="in" clear="false">n5</input>
            <output as="out">y5</output>
        </formula>
        <!-- Salut -->
        <if less="false" equal="false" greater="true">
            <input as="a" clear="false">Az</input>
            <input as="b" type="value">4.0</input> <!-- Condition to start -->
            <input as="true" type="value">0.8</input>
            <input as="false" type="value">0.0</input>
            <output>sound</output>
        </if>
        <if less="false" equal="false" greater="true">
            <input as="a" clear="false">Az</input>
            <input as="b" type="value">8.0</input>
            <input as="true" type="value">0.01</input>
            <output>go</output>
        </if>
        <add>
            <input clear="false">salut</input>
            <input clear="false">go</input>
            <output>salut</output>
        </add>
        <if less="false" equal="true" greater="true">
            <input as="a" clear="false">salut</input>
            <input as="b" type="value">0.8</input> <!-- Condition to stop -->
            <input as="true" type="value">0.0</input>
            <output>go</output>
        </if>
        <if less="false" equal="true" greater="true">
            <input as="a" clear="false">salut</input>
            <input as="b" type="value">0.8</input>
            <input as="true" type="value">0.0</input>
            <output>salut</output>
        </if>
        <ramp>
            <input as="start" type="value">0</input>
            <input as="stop" type="value">39</input>
            <input as="length" type="value">40</input>
            <output as="out">n40</output>
        </ramp>
        <formula formula="(sin((1/20)*3.14159*[1_]))*[2]-0.0">
            <input as="in" clear="false">n40</input>
            <input as="in" clear="false">salut</input>
            <output as="out">x40</output>
        </formula>
        <formula formula="(cos((1/20)*3.14159*[1_]))*[2]+3.0">
            <input as="in" clear="false">n40</input>
            <input as="in" clear="false">salut</input>
            <output as="out">y40</output>
        </formula>
    </analysis>
    <views>
        <view label="2022">
            <graph label="NY 2022" aspectRatio="0.65" style="dots" lineWidth="1" color="ff7e22" partialUpdate="true" history="1" labelX="" labelY="" labelZ="" unitX="" unitY="" unitZ="" logX="false" logY="false" logZ="false" xPrecision="1" yPrecision="0" zPrecision="3" scaleMinX="auto" scaleMaxX="auto" scaleMinY="auto" scaleMaxY="auto" scaleMinZ="auto" scaleMaxZ="auto" minX="0" maxX="0" minY="0" maxY="0" minZ="0" maxZ="0"  mapWidth="0" >
                <input axis="x" color="red" style="lines" lineWidth="3">x5</input>
                <input axis="y">y5</input> <!-- star -->
                <input axis="x" color="red" lineWidth="2">x1</input>
                <input axis="y">h</input> <!-- garland 1 -->
                <input axis="x" color="yellow" lineWidth="2">x2</input>
                <input axis="y">h</input> <!-- garland 2 -->

                <input axis="x" color="white">Sx</input>
                <input axis="y">Sz</input> <!-- snow -->
                <input axis="x" color="ff7e22" lineWidth="2">x40</input>
                <input axis="y">y40</input> <!-- salut -->

                <input axis="x" color="00bb22" style="hbars">left</input>
                <input axis="y">z</input> <!-- tree -->
                <input axis="x" color="00bb22" style="hbars">right</input>
                <input axis="y">z</input>
            </graph>
        </view>
    </views>
    <export>
    </export>
</phyphox>