<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=47&amp;t=9338&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-11-20T23:15:06+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=47&amp;t=9338&amp;mode</id>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2014-11-20T23:15:06+01:00</updated>
<published>2014-11-20T23:15:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9338&amp;p=105232#p105232</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9338&amp;p=105232#p105232"/>
<title type="html"><![CDATA[Re: Odtworzenie MIDI na piezo.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9338&amp;p=105232#p105232"><![CDATA[
Witam<br />Jeśli ktoś napisał program, który z formatu *MIDI potrafi wyłuskać potrzebne informacje dla uC ( w najbardziej okrojonej formie to wysokość dźwięku i czas jego brzmienia ) to jest możliwe odtwarzanie ( cokolwiek to znaczy ze względu na jakość ) melodyjek podawanych z PC'ta. Nawiasem mówiąc są też same klawiatury - na &quot;Twoim&quot; filmie wirtualna - do wysyłania takich komend. Zarys wiedzy możesz znaleźć tu:<br /><br /><a href="https://pl.wikipedia.org/wiki/Formaty_plik%C3%B3w_d%C5%BAwi%C4%99kowych"  class="postlink">https://pl.wikipedia.org/wiki/Formaty_plik%C3%B3w_d%C5%BAwi%C4%99kowych</a><br /><br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 20 lis 2014, o 23:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[hunger]]></name></author>
<updated>2014-11-20T20:51:12+01:00</updated>
<published>2014-11-20T20:51:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9338&amp;p=105183#p105183</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9338&amp;p=105183#p105183"/>
<title type="html"><![CDATA[Re: Odtworzenie MIDI na piezo.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9338&amp;p=105183#p105183"><![CDATA[
Po zagłębieniu się w temat bardziej, trochę już załapałem o co chodzi z tymi nutkami.<br /><br />W poszukiwaniach znalazłem poniższy filmik i zainteresował mnie.<br />Rozumiem, że odtwarza on dźwięk prosto z tego programu więc zapewne dało by się przechwycić te dane i dalej działać, bez konieczności używania komputera. Ale to już w przyszłości. <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Jest ktoś w stanie przybliżyć jak działa komunikacja pomiędzy programem w filmie a arduino? <br />Nie znalazłem opisu tego projektu.  <img src="https://forum.atnel.pl/images/smilies/icon_e_confused.gif" alt=":?" title="Boi się" /> <br /><br /><!-- m --><a class="postlink" href="http://www.youtube.com/watch?v=uWL7rrJNuw4" >http://www.youtube.com/watch?v=uWL7rrJNuw4</a><!-- m --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1079">hunger</a> — 20 lis 2014, o 20:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2014-11-19T21:14:34+01:00</updated>
<published>2014-11-19T21:14:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9338&amp;p=105008#p105008</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9338&amp;p=105008#p105008"/>
<title type="html"><![CDATA[Re: Odtworzenie MIDI na piezo.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9338&amp;p=105008#p105008"><![CDATA[
Witam<br /><div class="quotetitle">hunger napisał(a):</div><div class="quotecontent"><br />Wybrałem sobie taką melodyjkę w formacie MIDI i wkleiłem do programu<br /></div><br />Jeśli masz taki program, to klikając odpowiednią nutę w zapisie powinna Ci się wyświetlić nazwa tej nuty np.:A i jej odpowiednik &quot;częstotliwościowy&quot; 440hz. W programie masz zdefiniowane częstotliwość/dźwięk więc możesz sam do tego dojść. Ten Twój zapis nutowy jest dźwiękiem polifonicznym (kilka dźwięków w tym samym czasie ) a to nie jest takie proste. Program natomiast gra w systemie monofonicznym. Przerwy pomiędzy dźwiękami służą do wyraźniejszego zagrania następujących po sobie nutek. Wyobraź sobie kukułkę kukającą bez pauzy pomiędzy jednym KU a drugim  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> .<br /><br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 19 lis 2014, o 21:14</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xor]]></name></author>
<updated>2014-11-19T21:11:27+01:00</updated>
<published>2014-11-19T21:11:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9338&amp;p=105007#p105007</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9338&amp;p=105007#p105007"/>
<title type="html"><![CDATA[Re: Odtworzenie MIDI na piezo.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9338&amp;p=105007#p105007"><![CDATA[
Ten programik odtwarza jednogłosowo (jedna nutka na raz) a pokazana melodyjka jest grana akordami więc nie bardzo...poczebujesz innych nutek <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";-)" title="Puszcza oko" /><br /><br /><div class="quotetitle">hunger napisał(a):</div><div class="quotecontent"><br />Czemu służą wpisane zera w int melody pomiędzy poszczególnymi dźwiękami.<br /></div><br />To są pauzy...nuty których nie słychać <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";-)" title="Puszcza oko" /><br /><br /><div class="quotetitle">hunger napisał(a):</div><div class="quotecontent"><br />Skąd biorą się te wartości tempa?<br /></div><br />Z wartości rytmicznej nut. Tu widzimy szesnastki i 32-ki. W komentarzu jest nasmarowane:<br />// to calculate the note duration, take one second<br />// divided by the note type.<br />//e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc.<br />czyli wg tego pierwsza i druga nutka w tablicy by figurowały jako 16, trzecia i czwarta razem (są grane jako jedna) jako 1/16 + 1/32 = 3/32 czyli 11(a może 12 ? :-O), potem pauza o dlugości 32 itd.<br /><br /><div class="quotetitle">hunger napisał(a):</div><div class="quotecontent"><br />Marzeniem byłby programik, który taki pliczek MIDI przerobi na postać gotową do wklejenia w kod. <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /></div><br /><br />Bez tego chyba raczej nie dasz sobie rady <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";-)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1774">xor</a> — 19 lis 2014, o 21:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[hunger]]></name></author>
<updated>2014-11-19T20:14:10+01:00</updated>
<published>2014-11-19T20:14:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9338&amp;p=104984#p104984</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9338&amp;p=104984#p104984"/>
<title type="html"><![CDATA[Odtworzenie MIDI na piezo.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9338&amp;p=104984#p104984"><![CDATA[
Witam.<br /><br />Zaczynam bawić się w Arduino i chce sobie grać różne melodyjki na piezo.  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br /><br />Znalazłem taki przykładowy kod z melodią Mario ale chciałbym wgrywać własne melodyki.<br />I tu zaczyna się problem, bo nie bardzo rozumiem w jaki sposób to się odbywa.<br /><br />[syntax=cpp]#define NOTE_B0  31<br />#define NOTE_C1  33<br />#define NOTE_CS1 35<br />#define NOTE_D1  37<br />#define NOTE_DS1 39<br />#define NOTE_E1  41<br />#define NOTE_F1  44<br />#define NOTE_FS1 46<br />#define NOTE_G1  49<br />#define NOTE_GS1 52<br />#define NOTE_A1  55<br />#define NOTE_AS1 58<br />#define NOTE_B1  62<br />#define NOTE_C2  65<br />#define NOTE_CS2 69<br />#define NOTE_D2  73<br />#define NOTE_DS2 78<br />#define NOTE_E2  82<br />#define NOTE_F2  87<br />#define NOTE_FS2 93<br />#define NOTE_G2  98<br />#define NOTE_GS2 104<br />#define NOTE_A2  110<br />#define NOTE_AS2 117<br />#define NOTE_B2  123<br />#define NOTE_C3  131<br />#define NOTE_CS3 139<br />#define NOTE_D3  147<br />#define NOTE_DS3 156<br />#define NOTE_E3  165<br />#define NOTE_F3  175<br />#define NOTE_FS3 185<br />#define NOTE_G3  196<br />#define NOTE_GS3 208<br />#define NOTE_A3  220<br />#define NOTE_AS3 233<br />#define NOTE_B3  247<br />#define NOTE_C4  262<br />#define NOTE_CS4 277<br />#define NOTE_D4  294<br />#define NOTE_DS4 311<br />#define NOTE_E4  330<br />#define NOTE_F4  349<br />#define NOTE_FS4 370<br />#define NOTE_G4  392<br />#define NOTE_GS4 415<br />#define NOTE_A4  440<br />#define NOTE_AS4 466<br />#define NOTE_B4  494<br />#define NOTE_C5  523<br />#define NOTE_CS5 554<br />#define NOTE_D5  587<br />#define NOTE_DS5 622<br />#define NOTE_E5  659<br />#define NOTE_F5  698<br />#define NOTE_FS5 740<br />#define NOTE_G5  784<br />#define NOTE_GS5 831<br />#define NOTE_A5  880<br />#define NOTE_AS5 932<br />#define NOTE_B5  988<br />#define NOTE_C6  1047<br />#define NOTE_CS6 1109<br />#define NOTE_D6  1175<br />#define NOTE_DS6 1245<br />#define NOTE_E6  1319<br />#define NOTE_F6  1397<br />#define NOTE_FS6 1480<br />#define NOTE_G6  1568<br />#define NOTE_GS6 1661<br />#define NOTE_A6  1760<br />#define NOTE_AS6 1865<br />#define NOTE_B6  1976<br />#define NOTE_C7  2093<br />#define NOTE_CS7 2217<br />#define NOTE_D7  2349<br />#define NOTE_DS7 2489<br />#define NOTE_E7  2637<br />#define NOTE_F7  2794<br />#define NOTE_FS7 2960<br />#define NOTE_G7  3136<br />#define NOTE_GS7 3322<br />#define NOTE_A7  3520<br />#define NOTE_AS7 3729<br />#define NOTE_B7  3951<br />#define NOTE_C8  4186<br />#define NOTE_CS8 4435<br />#define NOTE_D8  4699<br />#define NOTE_DS8 4978<br /> <br />#define melodyPin 3<br />//Mario main theme melody<br />int melody&#91;&#93; = {<br />  NOTE_E7, NOTE_E7, 0, NOTE_E7,<br />  0, NOTE_C7, NOTE_E7, 0,<br />  NOTE_G7, 0, 0,  0,<br />  NOTE_G6, 0, 0, 0,<br /> <br />  NOTE_C7, 0, 0, NOTE_G6,<br />  0, 0, NOTE_E6, 0,<br />  0, NOTE_A6, 0, NOTE_B6,<br />  0, NOTE_AS6, NOTE_A6, 0,<br /> <br />  NOTE_G6, NOTE_E7, NOTE_G7,<br />  NOTE_A7, 0, NOTE_F7, NOTE_G7,<br />  0, NOTE_E7, 0, NOTE_C7,<br />  NOTE_D7, NOTE_B6, 0, 0,<br /> <br />  NOTE_C7, 0, 0, NOTE_G6,<br />  0, 0, NOTE_E6, 0,<br />  0, NOTE_A6, 0, NOTE_B6,<br />  0, NOTE_AS6, NOTE_A6, 0,<br /> <br />  NOTE_G6, NOTE_E7, NOTE_G7,<br />  NOTE_A7, 0, NOTE_F7, NOTE_G7,<br />  0, NOTE_E7, 0, NOTE_C7,<br />  NOTE_D7, NOTE_B6, 0, 0<br />};<br />//Mario main them tempo<br />int tempo&#91;&#93; = {<br />  12, 12, 12, 12,<br />  12, 12, 12, 12,<br />  12, 12, 12, 12,<br />  12, 12, 12, 12,<br /> <br />  12, 12, 12, 12,<br />  12, 12, 12, 12,<br />  12, 12, 12, 12,<br />  12, 12, 12, 12,<br /> <br />  9, 9, 9,<br />  12, 12, 12, 12,<br />  12, 12, 12, 12,<br />  12, 12, 12, 12,<br /> <br />  12, 12, 12, 12,<br />  12, 12, 12, 12,<br />  12, 12, 12, 12,<br />  12, 12, 12, 12,<br /> <br />  9, 9, 9,<br />  12, 12, 12, 12,<br />  12, 12, 12, 12,<br />  12, 12, 12, 12,<br />};<br />//Underworld melody<br />int underworld_melody&#91;&#93; = {<br />  NOTE_C4, NOTE_C5, NOTE_A3, NOTE_A4,<br />  NOTE_AS3, NOTE_AS4, 0,<br />  0,<br />  NOTE_C4, NOTE_C5, NOTE_A3, NOTE_A4,<br />  NOTE_AS3, NOTE_AS4, 0,<br />  0,<br />  NOTE_F3, NOTE_F4, NOTE_D3, NOTE_D4,<br />  NOTE_DS3, NOTE_DS4, 0,<br />  0,<br />  NOTE_F3, NOTE_F4, NOTE_D3, NOTE_D4,<br />  NOTE_DS3, NOTE_DS4, 0,<br />  0, NOTE_DS4, NOTE_CS4, NOTE_D4,<br />  NOTE_CS4, NOTE_DS4,<br />  NOTE_DS4, NOTE_GS3,<br />  NOTE_G3, NOTE_CS4,<br />  NOTE_C4, NOTE_FS4, NOTE_F4, NOTE_E3, NOTE_AS4, NOTE_A4,<br />  NOTE_GS4, NOTE_DS4, NOTE_B3,<br />  NOTE_AS3, NOTE_A3, NOTE_GS3,<br />  0, 0, 0<br />};<br />//Underwolrd tempo<br />int underworld_tempo&#91;&#93; = {<br />  12, 12, 12, 12,<br />  12, 12, 6,<br />  3,<br />  12, 12, 12, 12,<br />  12, 12, 6,<br />  3,<br />  12, 12, 12, 12,<br />  12, 12, 6,<br />  3,<br />  12, 12, 12, 12,<br />  12, 12, 6,<br />  6, 18, 18, 18,<br />  6, 6,<br />  6, 6,<br />  6, 6,<br />  18, 18, 18, 18, 18, 18,<br />  10, 10, 10,<br />  10, 10, 10,<br />  3, 3, 3<br />};<br /> <br />void setup(void)<br />{<br />  pinMode(3, OUTPUT);//buzzer<br />  pinMode(13, OUTPUT);//led indicator when singing a note<br /> <br />}<br />void loop()<br />{<br />  //sing the tunes<br />  sing(1);<br />  sing(1);<br />  sing(2);<br />}<br />int song = 0;<br /> <br />void sing(int s) {<br />  // iterate over the notes of the melody:<br />  song = s;<br />  if (song == 2) {<br />    Serial.println(&quot; 'Underworld Theme'&quot;);<br />    int size = sizeof(underworld_melody) / sizeof(int);<br />    for (int thisNote = 0; thisNote &lt; size; thisNote++) {<br /> <br />      // to calculate the note duration, take one second<br />      // divided by the note type.<br />      //e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc.<br />      int noteDuration = 1000 / underworld_tempo&#91;thisNote&#93;;<br /> <br />      buzz(melodyPin, underworld_melody&#91;thisNote&#93;, noteDuration);<br /> <br />      // to distinguish the notes, set a minimum time between them.<br />      // the note's duration + 30% seems to work well:<br />      int pauseBetweenNotes = noteDuration * 1.30;<br />      delay(pauseBetweenNotes);<br /> <br />      // stop the tone playing:<br />      buzz(melodyPin, 0, noteDuration);<br /> <br />    }<br /> <br />  } else {<br /> <br />    Serial.println(&quot; 'Mario Theme'&quot;);<br />    int size = sizeof(melody) / sizeof(int);<br />    for (int thisNote = 0; thisNote &lt; size; thisNote++) {<br /> <br />      // to calculate the note duration, take one second<br />      // divided by the note type.<br />      //e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc.<br />      int noteDuration = 1000 / tempo&#91;thisNote&#93;;<br /> <br />      buzz(melodyPin, melody&#91;thisNote&#93;, noteDuration);<br /> <br />      // to distinguish the notes, set a minimum time between them.<br />      // the note's duration + 30% seems to work well:<br />      int pauseBetweenNotes = noteDuration * 1.30;<br />      delay(pauseBetweenNotes);<br /> <br />      // stop the tone playing:<br />      buzz(melodyPin, 0, noteDuration);<br /> <br />    }<br />  }<br />}<br /> <br />void buzz(int targetPin, long frequency, long length) {<br />  digitalWrite(13, HIGH);<br />  long delayValue = 1000000 / frequency / 2; // calculate the delay value between transitions<br />  //// 1 second's worth of microseconds, divided by the frequency, then split in half since<br />  //// there are two phases to each cycle<br />  long numCycles = frequency * length / 1000; // calculate the number of cycles for proper timing<br />  //// multiply frequency, which is really cycles per second, by the number of seconds to<br />  //// get the total number of cycles to produce<br />  for (long i = 0; i &lt; numCycles; i++) { // for the calculated length of time...<br />    digitalWrite(targetPin, HIGH); // write the buzzer pin high to push out the diaphram<br />    delayMicroseconds(delayValue); // wait for the calculated delay value<br />    digitalWrite(targetPin, LOW); // write the buzzer pin low to pull back the diaphram<br />    delayMicroseconds(delayValue); // wait again or the calculated delay value<br />  }<br />  digitalWrite(13, LOW);<br /> <br />}[/syntax]<br /><br />Wiem, że odczytuje się to z nut... no właśnie a na muzyce kompletnie się nie znam.  <img src="https://forum.atnel.pl/images/smilies/icon_e_confused.gif" alt=":?" title="Boi się" /> <br /><br />Wybrałem sobie taką melodyjkę w formacie MIDI i wkleiłem do programu, który rozrysował mi z tego nuty. Pomożecie rozpisać to na te NOTE_, może załapie o co chodzi? <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><br />Poniżej początek utworu:<br /><br /><a href="http://forum.atnel.pl/_obrazki/o/1079/00355538a460238eff0f795271c31df9.PNG"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/1079/00355538a460238eff0f795271c31df9.PNG" alt="Obrazek" /></a><br /><br />Czemu służą wpisane zera w <em><strong>int melody</strong></em> pomiędzy poszczególnymi dźwiękami. Skąd biorą się te wartości tempa?<br /><br />Marzeniem byłby programik, który taki pliczek MIDI przerobi na postać gotową do wklejenia w kod. <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Wrzucam jeszcze tą melodyjkę, da się to w ogóle zagrać na piezo?<br />Dzięki za pomoc. <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1079">hunger</a> — 19 lis 2014, o 20:14</p><hr />
]]></content>
</entry>
</feed>