Кіріспе

Визуалды бағдарламалау тілі
бағдарламалау тілі
Графикалық мультимедиа ортасы (GEM) сыртқы қосымшасымен, және онымен жұмыс істеуге арналған сыртқы құралдармен (Linux, Mac OS X үшін Pure Data Packet / PiDiP сияқты), Windows үшін framestein, GridFlow (Linux, Mac OS X, Windows үшін n өлшемді матрицалық өңдеу ретінде) бірге бейне, OpenGL графикасы, кескіндер және т.б. сияқты материалдарды нақты уақытта жасауға және өңдеуге болады. Бұл аудио, сыртқы сенсорлармен кең өзара әрекеттесу мүмкіндіктерін ұсынады. Pd желілер немесе Интернет арқылы тікелей жұмыс істеуге арналған, сондықтан LAN желісі арқылы немесе тіпті әртүрлі елдердегі музыканттар бірге нақты уақытта музыка жасай алады. Pd желілік протокол ретінде FUDI-ді пайдаланады.

Макс пен ұқсастықтар

Pure Data және Max екеуі де деректер ағыны бағдарламалау тілдерінің мысалдары. Деректер ағыны тілдері бағдарламаны операциялар арасында ағылатын деректердің бағытталған графигі ретінде моделідейді. Pure Data және Max бағдарламаларында функциялар немесе "объектілер" басқару және аудио ағынын үлгілейтін графикалық ортада байланыстырылады немесе "қосылады". Алайда, Max-тің бастапқы нұсқасынан өзгеше, Pd әрқашан дыбыс синтезі мен сигнал өңдеуді цифрлық сигнал процессорына (DSP) (Max/FTS үшін қолданылған Ariel ISPW сияқты) жүктеудің орнына, хост-процессорда (CPU) басқару жылдамдығымен және аудио өңдеуді жүргізу үшін жасалған. Pd коды Дэвид Зикареллидің Max тіліне MSP кеңейтулерін жасау үшін негіз болды, олар бағдарламалық аудио өңдеуді жүзеге асырады. Max сияқты, Pd-де де бағдарламалық жасақтамада жазылған бағдарламалар үшін құрылыс блогы ретінде қолданылатын сыртқы объектілердің немесе модульдік код базасы бар. Бұл бағдарламаны ашық API арқылы еркін кеңейтуге мүмкіндік береді және әзірлеушілерді C бағдарламалау тілінде немесе Python, Scheme, Lua, Tcl және тағы да басқа сыртқы құралдардың көмегімен өздерінің басқару және аудио алгоритмдерін қосуға ынталандырады. Дегенмен, Pd – бағдарламалау тілі де. Pd-де жазылған модульдік, қайта пайдалануға болатын код бөліктері, "жаңартулар" немесе "абстракциялар" деп аталады, олар жеке бағдарлама ретінде қолданылады және Pd пайдаланушылар қауымдастығы арасында еркін таратылады, ал Pd-ді тиімді пайдалану үшін басқа бағдарламалау білімі қажет емес.

Тіл ерекшеліктері

Макс сияқты, Pd – дерек ағынымен бағдарламалау тілі. Көптеген DSP бағдарламалық қамтамасыздай, деректерді жіберудің екі негізгі жылдамдығы бар: үлгі (аудио) жылдамдығы, әдетте секундына 44,100 үлгі және басқару жылдамдығы, 64 үлгіге 1 блок. Басқару хабарламалары мен аудио сигналдары көбінесе экранның жоғарғы бөлігінен төменгі бөлігіне қарай «объектілер» арқылы кіретін және шығатын порттар арқылы өтеді. Pd төрт негізгі мәтіндік элементті қолдайды: хабарламалар, объектілер, атомдар және түсініктемелер. Атомдар – Pd-дегі деректің ең қарапайым бірлігі, олар қалқыма сан, символ немесе дерек құрылымына сілтемеден тұрады (Pd-де барлық сандар 32 биттік қалқыма сан ретінде сақталады). Хабарламалар бір немесе бірнеше атомнан құралады және объектілерге нұсқаулар береді. Мазмұны жоқ ерекше хабарлама түрі – «бэнг» оқиғаларды бастау және деректерді ағысқа жіберу үшін қолданылады, бұл түйме басу сияқты. Pd-нің негізгі объектілері кез келген бағдарламалау тілінде кездесетін қарапайым математикалық, логикалық және биттік операторлардан бастап, жалпы және арнайы аудио жылдамдығы DSP функцияларына дейін (тилда (~) символымен белгіленеді), мысалы, толқынды осцилляторлар, Жылдам Фурье түрлендіруі (fft~) және стандартты сүзгілерді қамтиды. Деректер файлдан жүктелуі, аудио картадан, MIDI-ден, FireWire, USB немесе желілік қосылым арқылы Open Sound Control (OSC) арқылы оқылуы немесе дереу жасалуы және кестелерде сақталуы мүмкін, содан кейін оларды қайта оқып, аудио сигналдары немесе басқару деректері ретінде пайдалануға болады.

Деректер құрылымы

Pd-дегі бұрынғы бағдарламалардан ерекшеленетін маңызды жаңалықтардың бірі – графикалық дерек құрылымдарын енгізу болды. Оларды музыкалық ноталар жазу, оқиғаларды тізбектеу, Pd патчтарына сүйемелдеу үшін визуалды элементтер жасау, тіпті Pd-нің графикалық интерфейсін кеңейту сияқты алуан түрлі мақсаттарда қолдануға болады. Pd атауына сай, дерек құрылымдары Pd қолданушыларына музыкалық деректердің кез келген күрделіліктегі статикалық, динамикалық немесе анимациялық графикалық бейнелерін жасауға мүмкіндік береді. C тіліндегі құрылымдар сияқты, Pd-нің құрылымдары да дерек құрылымының визуальдық бейнесін сипаттауға немесе, керісінше, Pd патчтарындағы хабарлар мен аудиосигналдарды басқаруға арналған сандар, символдар және массивтердің кез келген комбинациясынан тұрады. Пакеттің сөздерімен айтқанда:

Pd дерек құрылымдарын және олардың графикалық бейнесін сипаттау үшін ең құрылымсыз ортаны ұсынуға арналған. Басты идея – пайдаланушыға қалаған деректерін кез келген тәсілмен дисплеймен байланыстырып көрсетуге мүмкіндік беру. Осы мақсатта Pd графикалық дерек құрылымын енгізеді, ол C бағдарламалау тіліндегі дерек құрылымына ұқсас, бірақ деректерге пішіндер мен түстер қосу арқылы оны визуализациялауға және/немесе өңдеуге мүмкіндік береді. Деректерді бастапқыдан өңдеуге болады немесе файлдардан импорттауға, алгоритмдік түрде жасауға немесе келіп түсетін дыбыстарды немесе басқа деректер ағындарын талдау нәтижесінде алуға болады. |Миллер Пакетті|

Тілдік шектеулер

Pd – қуатты тіл болғанымен, объектіге бағытталған ұғымдарды іске асыруда белгілі бір шектеулер бар. Мысалы, үлкен параллель процестерді құру өте қиын, себебі конструктор функциясының болмауына байланысты объектілердің үлкен тізімдерін жасау және басқару (қосу, т.б.) мүмкін емес. Сонымен қатар, Pd массивтері және басқа да элементтер атау кеңістігінің қақтығысына ұшырауы мүмкін, өйткені жамау инстанциясының идентификаторын беру – қосымша қадам және кейде оны іске асыру қиын.

Таза деректерді пайдаланатын жобалар

Pure Data көптеген жобалардың негізі ретінде, прототиптеу тілі және дыбыс қозғалтқышы ретінде пайдаланылды. Reactable деп аталатын үстел интерфейсі және тоқтатылған iPhone қосымшасы RjDj екеуі де Pd-ны дыбыс қозғалтқышы ретінде қамтиды. Pd көптеген аудио дизайнерлер видео ойындар үшін аудио прототиптерін жасау үшін қолданды. Мысалы, EAPd – Electronic Arts (EA) компаниясында қолданылатын Pd-ның ішкі нұсқасы. Ол сондай-ақ EA Spore-ға енгізілген. Pd желілік өнер көрсетулер үшін де қолданылды, Бірлескен импровизация үшін желілік ресурстар (NRCI) кітапханасында.

Код үлгілері

Бірінші жапсырма дисплейге "hello world" деп шығарады. Екінші жапсырма 1-ші арнадан келіп түскен сигналға реверберация қолданып, одан кейін оны 1 және 2-ші арналарға жібереді. Соңғы, күрделірек жапсырма 9000 Гц жиілігінде ақ шуды сүзіп (Q көрсеткіші 20), оны жарты секунд ішінде әр секунд сайын күшейтіп, әлсіздетеді. Pd-де уақыт миллисекундермен өлшенеді, сондықтан "1000" – бір секунд, ал "500" – жарты секунд.