<?xml version="1.0" encoding="ISO-8859-1"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
	<channel>
		<title>Forum du club des développeurs et IT Pro - Traitement du signal</title>
		<link>https://www.developpez.net/forums/</link>
		<description><![CDATA[Forum d'entraide sur le traitement du signal, ses fondements mathématiques et ses applications.]]></description>
		<language>fr</language>
		<lastBuildDate>Mon, 27 Jul 2026 11:43:57 GMT</lastBuildDate>
		<generator>vBulletin</generator>
		<ttl>15</ttl>
		<image>
			<url>https://forum.developpez.be/images/misc/rss.png</url>
			<title>Forum du club des développeurs et IT Pro - Traitement du signal</title>
			<link>https://www.developpez.net/forums/</link>
		</image>
		<item>
			<title>Code logiciel anti-mouche</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2184609&amp;goto=newpost</link>
			<pubDate>Sat, 11 Jul 2026 15:12:37 GMT</pubDate>
			<description><![CDATA[Je viens de coder avec l'aide...]]></description>
			<content:encoded><![CDATA[<div>Je viens de coder avec l'aide de Mistral un foethus de programme sous Linux pour faire fuir les mouches en générant des ultra-sons entre 30 et 50 Khz<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="40"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br />73<br />74<br />75<br />76<br />77<br />78<br />79<br />80<br />81<br />82<br />83<br />84<br />85<br />86<br />87<br />88<br />89<br />90<br />91<br />92<br />93<br />94<br />95<br />96<br />97<br />98<br />99<br />100<br />101<br />102<br />103<br />104<br />105<br />106<br />107<br />108<br />109<br />110<br />111<br />112<br />113<br />114<br />115<br />116<br />117<br />118<br />119<br />120<br />121<br />122<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;stdio.h&gt;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;stdlib.h&gt;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;math.h&gt;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;portaudio.h&gt;</span>
<span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;time.h&gt;</span>
&nbsp;
<span style="color: #339933;">#define SAMPLE_RATE 44100     // Fr&eacute;quence d'&eacute;chantillonnage (Hz)</span>
<span style="color: #339933;">#define NUM_CHANNELS 2       // St&eacute;r&eacute;o</span>
<span style="color: #339933;">#define AMPLITUDE 0.7         // Amplitude (0.0 &agrave; 1.0)</span>
<span style="color: #339933;">#define BASE_FREQ_1 30000.0   // Fr&eacute;quence 1 (30 kHz)</span>
<span style="color: #339933;">#define BASE_FREQ_2 40000.0   // Fr&eacute;quence 2 (40 kHz)</span>
<span style="color: #339933;">#define BASE_FREQ_3 50000.0   // Fr&eacute;quence 3 (50 kHz)</span>
<span style="color: #339933;">#define SWEEP_DURATION 1.0    // Dur&eacute;e d'un balayage (secondes)</span>
<span style="color: #339933;">#define MIN_PAUSE 0.1         // Pause minimale entre balayages</span>
<span style="color: #339933;">#define MAX_PAUSE 0.5         // Pause maximale entre balayages</span>
&nbsp;
<span style="color: #808080;">// Structure pour stocker l'&eacute;tat</span>
<span style="color: #0000ff;">typedef</span> <span style="color: #0000ff;">struct</span> <span style="color: black;">&#123;</span>
    <span style="color: #0000ff;">double</span> time;            <span style="color: #808080;">// Temps global (en secondes)</span>
    <span style="color: #0000ff;">double</span> pauseEndTime;    <span style="color: #808080;">// Temps de fin de la pause actuelle</span>
    <span style="color: #0000ff;">int</span> isPaused;           <span style="color: #808080;">// 1 si en pause, 0 sinon</span>
<span style="color: black;">&#125;</span> UserData;
&nbsp;
<span style="color: #808080;">// Callback pour PortAudio</span>
<span style="color: #0000ff;">static</span> <span style="color: #0000ff;">int</span> audioCallback<span style="color: black;">&#40;</span><span style="color: #0000ff;">const</span> <span style="color: #0000ff;">void</span> *inputBuffer, <span style="color: #0000ff;">void</span> *outputBuffer,
                         <span style="color: #0000ff;">unsigned</span> <span style="color: #0000ff;">long</span> framesPerBuffer,
                         <span style="color: #0000ff;">const</span> PaStreamCallbackTimeInfo *timeInfo,
                         PaStreamCallbackFlags statusFlags,
                         <span style="color: #0000ff;">void</span> *userData<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
    <span style="color: #0000ff;">float</span> *out = <span style="color: black;">&#40;</span><span style="color: #0000ff;">float</span> *<span style="color: black;">&#41;</span>outputBuffer;
    UserData *data = <span style="color: black;">&#40;</span>UserData *<span style="color: black;">&#41;</span>userData;
&nbsp;
    <span style="color: #0000ff;">for</span> <span style="color: black;">&#40;</span><span style="color: #0000ff;">unsigned</span> <span style="color: #0000ff;">long</span> i = <span style="color: #cc66cc;">0</span>; i &lt; framesPerBuffer; i++<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
        <span style="color: #808080;">// Si on est en pause, on g&eacute;n&egrave;re du silence</span>
        <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>data-&gt;isPaused<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
            <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>data-&gt;time &gt;= data-&gt;pauseEndTime<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
                data-&gt;isPaused = <span style="color: #cc66cc;">0</span>; <span style="color: #808080;">// Fin de la pause</span>
            <span style="color: black;">&#125;</span> <span style="color: #0000ff;">else</span> <span style="color: black;">&#123;</span>
                *out++ = <span style="color: #cc66cc;">0.0</span>f;
                *out++ = <span style="color: #cc66cc;">0.0</span>f;
                data-&gt;time += <span style="color: #cc66cc;">1.0</span> / SAMPLE_RATE;
                <span style="color: #0000ff;">continue</span>;
            <span style="color: black;">&#125;</span>
        <span style="color: black;">&#125;</span>
&nbsp;
        <span style="color: #808080;">// Temps local dans le balayage actuel (0.0 &agrave; SWEEP_DURATION)</span>
        <span style="color: #0000ff;">double</span> localTime = fmod<span style="color: black;">&#40;</span>data-&gt;time, SWEEP_DURATION<span style="color: black;">&#41;</span>;
        <span style="color: #0000ff;">double</span> progress = localTime / SWEEP_DURATION;
&nbsp;
        <span style="color: #808080;">// Balayage exponentiel pour les 3 fr&eacute;quences</span>
        <span style="color: #0000ff;">double</span> freq1 = BASE_FREQ_1 * pow<span style="color: black;">&#40;</span>BASE_FREQ_3 / BASE_FREQ_1, progress<span style="color: black;">&#41;</span>;
        <span style="color: #0000ff;">double</span> freq2 = BASE_FREQ_2 * pow<span style="color: black;">&#40;</span>BASE_FREQ_3 / BASE_FREQ_2, progress<span style="color: black;">&#41;</span>;
        <span style="color: #0000ff;">double</span> freq3 = BASE_FREQ_3; <span style="color: #808080;">// 50 kHz constant (ou balayage exponentiel si souhait&eacute;)</span>
&nbsp;
        <span style="color: #808080;">// G&eacute;n&eacute;ration des ondes sinuso&iuml;dales avec temps local</span>
        <span style="color: #0000ff;">double</span> sample = AMPLITUDE * <span style="color: black;">&#40;</span>
            <span style="color: #cc66cc;">0.4</span> * sin<span style="color: black;">&#40;</span><span style="color: #cc66cc;">2</span> * M_PI * freq1 * localTime<span style="color: black;">&#41;</span> +
            <span style="color: #cc66cc;">0.5</span> * sin<span style="color: black;">&#40;</span><span style="color: #cc66cc;">2</span> * M_PI * freq2 * localTime<span style="color: black;">&#41;</span> +
            <span style="color: #cc66cc;">0.3</span> * sin<span style="color: black;">&#40;</span><span style="color: #cc66cc;">2</span> * M_PI * freq3 * localTime<span style="color: black;">&#41;</span>
        <span style="color: black;">&#41;</span>;
&nbsp;
        <span style="color: #808080;">// &Eacute;criture dans les deux canaux (st&eacute;r&eacute;o)</span>
        *out++ = <span style="color: black;">&#40;</span><span style="color: #0000ff;">float</span><span style="color: black;">&#41;</span>sample;
        *out++ = <span style="color: black;">&#40;</span><span style="color: #0000ff;">float</span><span style="color: black;">&#41;</span>sample;
&nbsp;
        <span style="color: #808080;">// Mise &agrave; jour du temps global</span>
        data-&gt;time += <span style="color: #cc66cc;">1.0</span> / SAMPLE_RATE;
&nbsp;
        <span style="color: #808080;">// Si le balayage est termin&eacute;, d&eacute;clencher une pause al&eacute;atoire</span>
        <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>fmod<span style="color: black;">&#40;</span>data-&gt;time, SWEEP_DURATION<span style="color: black;">&#41;</span> == <span style="color: #cc66cc;">0</span> &amp;&amp; data-&gt;time != <span style="color: #cc66cc;">0</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
            data-&gt;isPaused = <span style="color: #cc66cc;">1</span>;
            data-&gt;pauseEndTime = data-&gt;time + MIN_PAUSE + <span style="color: black;">&#40;</span>rand<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> / <span style="color: black;">&#40;</span><span style="color: #0080ff;">RAND_MAX</span> / <span style="color: black;">&#40;</span>MAX_PAUSE - MIN_PAUSE<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>;
        <span style="color: black;">&#125;</span>
    <span style="color: black;">&#125;</span>
&nbsp;
    <span style="color: #0000ff;">return</span> paContinue;
<span style="color: black;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">int</span> main<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
    PaStream *stream;
    UserData userData = <span style="color: black;">&#123;</span><span style="color: #cc66cc;">0.0</span>, <span style="color: #cc66cc;">0.0</span>, <span style="color: #cc66cc;">0</span><span style="color: black;">&#125;</span>;
    srand<span style="color: black;">&#40;</span>time<span style="color: black;">&#40;</span><span style="color: #0080ff;">NULL</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>; <span style="color: #808080;">// Initialisation du g&eacute;n&eacute;rateur al&eacute;atoire</span>
&nbsp;
    <span style="color: #808080;">// Initialisation de PortAudio</span>
    Pa_Initialize<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
&nbsp;
    <span style="color: #808080;">// Ouverture du flux audio</span>
    PaError err = Pa_OpenDefaultStream<span style="color: black;">&#40;</span>
        &amp;stream,
        <span style="color: #cc66cc;">0</span>,              <span style="color: #808080;">// Pas d'entr&eacute;e</span>
        NUM_CHANNELS,   <span style="color: #808080;">// Sortie st&eacute;r&eacute;o</span>
        paFloat32,       <span style="color: #808080;">// Format 32 bits float</span>
        SAMPLE_RATE,     <span style="color: #808080;">// Fr&eacute;quence d'&eacute;chantillonnage</span>
        <span style="color: #cc66cc;">256</span>,            <span style="color: #808080;">// Taille du buffer (latence)</span>
        audioCallback,   <span style="color: #808080;">// Callback</span>
        &amp;userData        <span style="color: #808080;">// Donn&eacute;es utilisateur</span>
    <span style="color: black;">&#41;</span>;
&nbsp;
    <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>err != paNoError<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
        fprintf<span style="color: black;">&#40;</span><span style="color: #0080ff;">stderr</span>, <span style="color: #FF0000;">&quot;Erreur PortAudio: %s<span style="color: #800000;">\n</span>&quot;</span>, Pa_GetErrorText<span style="color: black;">&#40;</span>err<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>;
        <span style="color: #0000ff;">return</span> <span style="color: #cc66cc;">1</span>;
    <span style="color: black;">&#125;</span>
&nbsp;
    <span style="color: #808080;">// D&eacute;marrage du flux</span>
    err = Pa_StartStream<span style="color: black;">&#40;</span>stream<span style="color: black;">&#41;</span>;
    <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>err != paNoError<span style="color: black;">&#41;</span> <span style="color: black;">&#123;</span>
        fprintf<span style="color: black;">&#40;</span><span style="color: #0080ff;">stderr</span>, <span style="color: #FF0000;">&quot;Erreur PortAudio: %s<span style="color: #800000;">\n</span>&quot;</span>, Pa_GetErrorText<span style="color: black;">&#40;</span>err<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>;
        Pa_Terminate<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
        <span style="color: #0000ff;">return</span> <span style="color: #cc66cc;">1</span>;
    <span style="color: black;">&#125;</span>
&nbsp;
    printf<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;Diffusion du r&eacute;pulsif &agrave; mouches (30-50 kHz, balayage exponentiel, pauses al&eacute;atoires).<span style="color: #800000;">\n</span>&quot;</span><span style="color: black;">&#41;</span>;
    printf<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;Appuyez sur Entr&eacute;e pour arr&ecirc;ter...<span style="color: #800000;">\n</span>&quot;</span><span style="color: black;">&#41;</span>;
    getchar<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>; <span style="color: #808080;">// Attend l'appui sur Entr&eacute;e</span>
&nbsp;
    <span style="color: #808080;">// Arr&ecirc;t et nettoyage</span>
    Pa_StopStream<span style="color: black;">&#40;</span>stream<span style="color: black;">&#41;</span>;
    Pa_Terminate<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>;
&nbsp;
    <span style="color: #0000ff;">return</span> <span style="color: #cc66cc;">0</span>;
<span style="color: black;">&#125;</span></pre></td></tr></table></code><hr />
</div><br />
Ce n'est peut-être pas le code le plus efficace qu'il puisse exister mais les mouches ont rapidement désertées chez moi avec l'aide de clous de girofles plantés dans un demi-citron, d'une bouteille coupée remplie d'un mix eau/sucre/miel/bière/vinaigre/liquide vaisselle/levure avec le haut de la bouteille mis à l'envers sur la demie bouteille, et d'un ventilateur pour leur brouiller les pistes et mieux diffuser l'odeur citron/clous de girofles<br />
=&gt; je leur ai sorti le grand jeu là :D :D</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f2200/general-developpement/algorithme-mathematiques/traitement-signal/">Traitement du signal</category>
			<dc:creator>yannoo95170</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2184609/general-developpement/algorithme-mathematiques/traitement-signal/code-logiciel-anti-mouche/</guid>
		</item>
	</channel>
</rss>
