Materia articuli sumitur ex my
Partum Tonus Generator
In priore
Hodie applicationem creabimus quae signum soni in card sono generare potest. Ad hanc quaestionem solvendam necesse est columellas in circulo generantis soni coniungi, qui infra ostendentur:
Figuram a sinistra ad dextram legimus, haec est directio qua notitia nostra fluit movet. Etiam sagittis at mauris id efficitur. Filtra rectangula indicant processus cuneos notitiarum et euentuum output. Intra rectangulum, munus eius indicatur et genus colum in litteris maiusculis modo infra indicatur. Sagittae connectentes rectangula sunt stantibus antedictis, per quas insulis notitiarum a colum ad colum liberantur. In genere, colamentum multa initibus et outputs habere potest.
Omnia incipit a fonte horologii, quod tempus ponit quo notitia in columellae computatur. Secundum cyclum horologii, singuli colum processus omnes notitias caudices qui in suo input sunt. Et impedit cum ex in queue. Primum, colum proxime ad fontem horologii calculos facit, deinde filtra cum suis outputibus connexa (plures esse possunt outputes), et sic porro. Post ultimum colum in catena processus finit, exsecutio cessat donec novum horologium adveniat. Verberat, defalta, intervallum 10 millium secundorum sequitur.
Ad nostrum schemate redeamus. Circulus horologii ad fontem initus silentii perveniunt, hoc est filtrum, quod est occupatus generans truncum notitiae continens cyphris in suo output pro quolibet cyclo horologii. Si hunc impedimentum tamquam truncum archetypi soni consideramus, hoc nihil aliud est quam silentium. In prima specie mirum videtur notitias cum silentio generare - post omnes, audiri non potest, sed hae impedimenta sunt necessaria ad operationem soni generantis. Generator his caudices utitur sicut blank charta, soni exempla in eas notans. In statu suo normali, generans avertit et simpliciter promovet input cuneos ad output. Sic cuneos silentii immutantur per totum ambitum a sinistro ad dextrum, usque ad sonum card. Quod tacite accipit cuneos a queue connexa suo input.
Sed omnia mutantur si generans mandatur ut sonus canat, incipit generare exempla sana et ea cum exemplis in initibus caudicis reponit et mutatos caudices in output ponit. Sonus chartae incipit sonus ludere. Infra programma est ut instrumentum operis perficiat supra descriptum:
/* Π€Π°ΠΉΠ» mstest2.c */
#include <mediastreamer2/msfilter.h>
#include <mediastreamer2/msticker.h>
#include <mediastreamer2/dtmfgen.h>
#include <mediastreamer2/mssndcard.h>
int main()
{
ms_init();
/* Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΡΠΈΠ»ΡΡΡΠΎΠ². */
MSFilter *voidsource = ms_filter_new(MS_VOID_SOURCE_ID);
MSFilter *dtmfgen = ms_filter_new(MS_DTMF_GEN_ID);
MSSndCard *card_playback = ms_snd_card_manager_get_default_card(ms_snd_card_manager_get());
MSFilter *snd_card_write = ms_snd_card_create_writer(card_playback);
/* Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΡΠΈΠΊΠ΅Ρ. */
MSTicker *ticker = ms_ticker_new();
/* Π‘ΠΎΠ΅Π΄ΠΈΠ½ΡΠ΅ΠΌ ΡΠΈΠ»ΡΡΡΡ Π² ΡΠ΅ΠΏΠΎΡΠΊΡ. */
ms_filter_link(voidsource, 0, dtmfgen, 0);
ms_filter_link(dtmfgen, 0, snd_card_write, 0);
/* ΠΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΡΠ°ΠΊΡΠΎΠ². */
ms_ticker_attach(ticker, voidsource);
/* ΠΠΊΠ»ΡΡΠ°Π΅ΠΌ Π·Π²ΡΠΊΠΎΠ²ΠΎΠΉ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ. */
char key='1';
ms_filter_call_method(dtmfgen, MS_DTMF_GEN_PLAY, (void*)&key);
/* ΠΠ°Π΅ΠΌ, Π²ΡΠ΅ΠΌΡ, ΡΡΠΎΠ±Ρ Π²ΡΠ΅ Π±Π»ΠΎΠΊΠΈ Π΄Π°Π½Π½ΡΡ
Π±ΡΠ»ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½Ρ Π·Π²ΡΠΊΠΎΠ²ΠΎΠΉ ΠΊΠ°ΡΡΠΎΠΉ.*/
ms_sleep(2);
}
Post initializing instrumentorum streamer, tres filtrae creantur; vacuum, dtmfgen, snd_card_write. Fons horologii creatur.
Tunc filtras coniungere debes secundum ambitum nostrum, et fons horologii novissime coniungi debet, quia post hoc statim circuire incipit operari. Si horologium fontem ad circuitum imperfectum coniungas, fieri potest ut instrumentorum conglutinatio fragore si deprehendat saltem unum colum in catena cum omnibus initibus vel omnibus inputationibus "in aere pendentibus" (non connexis).
Filtra connectens fit utens munere
ms_filter_link(src, src_out, dst, dst_in)
ubi prima argumentatio monstrator a fonte sparguntur, secunda argumentatio est fons output numerus (nota quod inputationes et outputes a nulla incipientes numerantur). Tertium argumentum est regula recipientis sparguntur, quartum est recipiens input numerum.
Filtra omnia connexa sunt et fons horologii novissimus iungitur (infra postea simpliciter ricinum appellabimus). Post quem sonus noster ambitus incipit operari, sed nihil audiri potest in loquentibus computatoriis adhuc - sonus generans avertit et simpliciter transit per input notitias cum silentio. Committitur tonum generans, generans colum modum currere debes.
Signum duorum sonorum (DTMF) generabimus respondens ad exprimendam "I" bullam in telephono. Ad hoc munus utimur ms_filter_call_method () Methodum MS_DTMF_GEN_PLAY vocamus, eam praeteriens ut argumenti monstratorem codicem quem signum playbacki correspondeat.
Reliquum est ut rationem componat:
$ gcc mstest2.c -o mstest2 `pkg-config mediastreamer --libs --cflags`
Et currite;
$ ./mstest2
Incipiens rationem, audies signum breve sonum duorum tonorum in loquentis computatorio constans.
Primum ambitum sonum nostrum aedificavimus et deducimus. Vidimus quomodo exempla colum creare, quomodo coniungere et quomodo modos vocare. Dum laetamur in initiali nostro successu, adhuc operam dare debemus quod institutio nostra ante exitum datam memoriam non liberat. In altera
Source: www.habr.com