Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
2020/09/01 দӜ(
[email protected]
/matsuuratomoya.com) (ͪΐͬͱ)ߴϨΠϠʔ ΦʔσΟΦΈࠐΈ2020 DSPݴޠ/ϓϩάϥϚϒϧϘʔυ/ ΦʔϓϯϋʔυΣΞ 1
Slide 2
Slide 2 text
ϓϩάϥϚϒϧ ΦʔσΟΦϘʔυ 2
Slide 3
Slide 3 text
• STM32FϕʔεɺC++ͷίʔυΛࣗ༝ʹ໐ΒͤΔ • WebϕʔεͷΦʔαϦϯάπʔϧɺGen~/HeavyΤΫεϙʔτ ͷࢧԉ • MagusͰOwl͚ͷύονͦͷ··͑Δʢ࣮࣭ޙܧػʣ • FreeRTOSͰಈ͍͍ͯΔΒ͍͠ • ϑΝʔϜશػछެ։͞Ε͍ͯΔ͕ɺυΩϡϝϯτ΄΅ͳ͠ Owl→Magus(Rebel Technology) 3
Slide 4
Slide 4 text
• BeagleBone Black(ͪΐͬͱߴڃͳϥζύΠ)+ઐ༻֦ுϘʔυ +Χʔωϧ֦ு(Xenomai) • ϢʔβʔίʔυC++ʢΛܦ༝ͯ͠ɺFaustPd+HeavyͳͲʣ • LANͰܨ͙ͱWebαʔόϕʔεͷIDE্ཱ͕͕ͪΔ • Linuxϕʔε͕ͩΦʔσΟΦؔ࿈ͷίʔυΧʔωϧΛόΠύε͠ ͍ͯΔͷͰόοϑΝΛ2αϯϓϧ·Ͱ٧ΊΒΕΔ • ແཧΓϢʔϩϥοΫԽͨ͠γϦʔζͱ͔ग़ͯΔʢͰ͔͍ʣ Bela 4
Slide 5
Slide 5 text
• νοϓɿSTM32H750IBK6(Cortex-M7,400MHz) • AKMͷ2in2out,~192kHz/24bitΦʔσΟΦίʔσοΫͬͯΔ • 64MB SDRAM(wavͱ͔ࡌ͍ͤ͢) • stm32duinoରԠͳͷͰArduino IDEͰ։ൃͰ͖Δ • ઐ༻ͷDSPϥΠϒϥϦDaisySP͕͋Δ • ൈ͖ࠩ͠༰қͳΨϫ͕ϢʔϩϥοΫ/Ϊλʔϖμϧ/ελϯυΞϩ ϯͱἧ͓ͬͯΓݡ͍ Daisy 5
Slide 6
Slide 6 text
• ARMίΞϕʔεͷ͍҆ͯ͘ϚΠίϯϘʔυ(ArduinoIDEରԠ) • νοϓSTMͰͳ͘NXPɺ3.x:Cortex-m4 4.0:Cortex-m7 • 4.0ͳΒΫϩοΫ600MHzͰ$19.95 • ΦʔσΟΦ༻ͷ֦ுϘʔυɺϏδϡΞϧϓϩάϥϛϯάͰ͖Δ ΦʔσΟΦϥΠϒϥϦ͕͋ΔͳͲԻ·ΘΓͷڥ͕ॆ࣮ • ΠϯσΟʔϞδϡϥʔܥͰͷར༻࣮ଟ͠ (BASTL ɺɹ Ornament&Crimes) Teensy 6
Slide 7
Slide 7 text
• Linux্Ͱಈ͘Lv2ͱ͍͏VSTྨࣅϓϥάΠϯن֨ΛΒͤΒΕΔ Ϊλʔϖμϧ • தී௨ͷLinux on Arm A7 1GHz(ύϫʔͰΰϦԡ͠ײ) • ϨΠςϯγ5ms(ଟόοϑΝαΠζ128ͷԟ෮ʁ) MODDevices MOD Duo 7
Slide 8
Slide 8 text
• ϥζύΠϕʔεɺLuaεΫϦϓςΟϯάͱSuperColliderϕʔεͷ Իڹ߹ • ORCAͱ͔ɺΞϓϦέʔγϣϯΛೖΕସ͑Δײ֮ͰதΛม͑Β ΕΔ • ΠϯλʔϑΣʔεͷ֦ுmonomeಉ͕࢜த৺ Monome Norns 8
Slide 9
Slide 9 text
• Linux্ͰPuredataΛ্ཱͪ͛ͯૢ࡞Ͱ͖Δ • PdݶఆͳͷͰNornsΑΓͰ͖Δ͜ͱͷ෯ڱ͍͕ࢀೖোน͍ • HeavyͰͳ͘७ਮͳPdͳͷͰɺύιίϯͰ࡞ͬͨύον΄΅ ಈ͔ͤΔͣ • ͜ΕɺΠϯλʔϑΣʔεඪ४ͷϘλϯϊϒݶఆ • தRaspberry Pi Compute Module3+ Critter & Guitari Organelle 9
Slide 10
Slide 10 text
• Axoloti http://www.axoloti.com/ ಠࣗύονϟʔϑΥʔϚοτ • midiglue https://sigboost.audio/midiglue/ ϓϩάϥϚϒϧmidiϓ ϩηοα ಠࣗϏδϡΞϧݴޠ ଞ 10
Slide 11
Slide 11 text
• RtoRΦϖΞϯϓx2 (ήΠϯͷબࢶ͕-15,-7,-3,-1,2,4,8,16) • DAC12bit͕ͩADC16bit x3 • ADCଟॏԽͰ࠷େ36ch͑Δػछ͋Δ • 12bitDACߴपʹϊΠζγΣʔϐϯά͢Ε͑Δͣ • ͱ͍͏͔ɺʹͤͯιϑτΣΞ1bitDACΛ࡞Δͷ͋Γ ༨ஊɿSTM32H750Λ͏ͳΒ… 11
Slide 12
Slide 12 text
DSPಛԽݴޠ 12
Slide 13
Slide 13 text
• C++ΤΫεϙʔτ͕ୈҰඪͷݴޠ • Faust • Soul • Vult • ෭࣍తʹC++/CΤΫεϙʔτ͕Ͱ͖Δͷ • Cycling’ 74 Max (Gen~) • Puredata+Heavy DSPݴޠҰཡ 13
Slide 14
Slide 14 text
• ؔܕDSPಛԽݴޠɻจ๏͕ͱʹ͔͘ಛघɻ • جຊC++τϥϯεύΠϥ͕ͩɺArchitectureϑΝΠϧͱݺΕ ΔDSPҎ֎ͷC++෦ͷςϯϓϨʔτΛ࡞͓ͬͯ͘͜ͱͰɺଟ ༷ͳϓϥοτϑΥʔϜʹίϚϯυҰͭͰΤΫεϙʔτͰ͖Δ • ϥΠϒϥϦ͕๛ɻϑΟϧλ/ΦγϨʔλ/ཧϞσϦϯάؔ࿈ ΞϧΰϦζϜఏҊऀ͕ॻ͍ͯͨΓ͢ΔͷͰ࣮࣭ϦϑΝϨϯε • ϋʔυपΓͷΤΫεϙʔτ Faust 14
Slide 15
Slide 15 text
• ։ൃɾίϯύΠϧ΄΅WebͰ݁(https://faustide.grame.fr/) • routeϓϦϛςΟϒͷಋೖ • soundfileϓϦϛςΟϒͷಋೖ • ࠓޙɺαϯϓϧϨʔτมߋΛՄೳʹ͢ΔondemandϓϦϛςΟϒ ͕ೖΔͱ͔ɾɾɾ(ࢀߟ:https://drive.google.com/file/d/ 1LkT8KviWocnzt6hqRsLlSri5uwVDWI5p/view) ࠷ۙͪΐͬͱ͍͘͢ͳͬͨ Faust 15
Slide 16
Slide 16 text
• JUCEͳͲΛ࡞͍ͬͯΔROLI͕ओಋͰ࡞͍ͬͯΔDSPݴޠ • खଓ͖ܕʴ෦తʹσʔλϑϩʔͬΆ͍ܗͰ·͋·͋ಡΈ͍͢ • Faustಉ༷Web্ͰฤूͰ͖Δ • ·ͩશ෦ͷιʔε͕Φʔϓϯʹͳ͍ͬͯͳ͍ʢHEARTͱ͍͏ɺ ΑΓϨΠϠʔͷதؒදݱ͕͋Δͱ͔ʣ • ΞηοτGUIͳͲͷϚοϐϯάใΛؚΊͨ.soulpatchͱ͍͏ ϓϩδΣΫτϑΥʔϚοτ͕͋Δ Soul 16
Slide 17
Slide 17 text
• Leonardo Laguna Ruizͱ͍͏ਓ͕෭ۀతʹ ͍ͬͯΔιϑτɾϋʔυγϯηϓϩδΣ ΫτͷͨΊͷݴޠ • C++,JS,LuaJITͳͲʹΤΫεϙʔτͰ͖Δ • ͜ΕWebͰಈ͔ͤΔ • ίϯύΠϥOcaml(࣮͕៉ྷ) • ΈࠐΈ͚Λҙࣝͨ͠ݴޠ༷ Vult 17
Slide 18
Slide 18 text
• FloatΛઐ༻ԋࢉ໋ྩ͕ແ͍ϓϥοτϑΥʔϜ͚ʹfixed-pointͱ ͯ͠ग़ྗ͢Δ͜ͱ͕Ͱ͖Δ • ؔΛςʔϒϧϧοΫΞοϓʹࣗಈมͯ͘͠ΕΔه๏͕͋Δ ʢFaustͰͰ͖Δ͕ɺͪΐͬͱख͕͔͔ؒΔʣ • WavϑΝΠϧΛίϯύΠϧ࣌ʹݻఆྻͱͯ͠ຒΊࠐΜͰ͠·͑ Δ ΈࠐΈ͚ػೳ Vult 18
Slide 19
Slide 19 text
• MaxͷதͷGen~ͱ͍͏DSPಛԽύονϑΥʔϚοτ • MaxͱࣅͨܗͷσʔλϑϩʔܕϏδϡΞϧϓϩάϥϛϯάɺgenexprͱ ͍͏खଓ͖ܕςΩετͰهड़Մ • genexprͷநԽೳྗͦΜͳʹߴ͘ͳ͍ͷͰϦόʔϒͱ͔࡞Ζ͏ͱ͢ Δͱେมɺେنͳมཧ͕ਏ͍ • C++ΤΫεϙʔτ͓·͚ͬΆ͘ɺެࣜυΩϡϝϯτͷղઆগͳ͍͕ OwlͰੵۃతʹ׆༻͞Ε͍ͯΔ • RebelemscriptenͬͯউखʹWeb্ͰϓϨϏϡʔͰ͖ΔπʔϧΛ ࡞ͬͯӡ༻͍ͯ͠ΔΒ͍͠ Gen~ 19
Slide 20
Slide 20 text
• hvcc: PdύονˠCͷτϥϯεύΠϥ (࣮Python) • libpdͳͲͱશʹҟͳΔ࣮Ͱɺεέδϡʔϥͱ͔ଘࡏ͠ͳ͍ɻ PdͷύονΛແཧΓGen~Ϩϕϧͷύονͱͯ͠ղऍ͍ͯ͠Δײ͡ • ։ൃݩͷEnzien Audio͕2લʹ࢈ɺطʹձࣾͷWebফ໓ • hvccGPLͱͯ͠ެ։͞ΕΔҰϝϯς͞ΕͣɺOSSͱͯ͠։ൃ ͕Ҿ͖ܧ͕ΕΔ༷ࢠͳ͠ • ͷׂʹPdͷ༷͕ރΕ͍ͯΔ͜ͱ͋ΓҰԠಈ͘ɻBelaOwlͰ Ҿ͖ଓ͖ར༻͞Ε͍ͯΔ(͜ΕRebel͕WebϓϨϏϡʔ࣋ͬͯΔ) Puredata+Heavy 20
Slide 21
Slide 21 text
DSPݴޠൺֱ 21 C++ϕλ Faust Soul Vult Gen~ Heavy Pd/SC Մಡੑ ˚ × ̋ ̋ ˚ ̋ ̋ நԽೳྗ ࣍ୈ ˕ ̋ ̋ ˚ ˚ ˚ ΦʔσΟΦ ϑΝΠϧ ˚ ˚ ̋ ̋ ˚ ˚ ̋ ࣮ߦੑೳ ࣍ୈ ̋ ̋ ̋ ̋ ̋ ˚ ҆ఆੑ ࣍ୈ ̋ ̋ ̋ ̋ ˚ ̋ কདྷੑ ̋ ̋ ʁ ˚ ˚ × ̋ WebAudio ˚ ̋ ̋ ̋ ˚ ˚ × උߟ จ๏͕ಠಛ ϥΠϒϥϦ๛ Ұ෦ιʔεඇެ։, ։ൃ్த ΈࠐΈར༻࣮͋Γ, ݸਓ։ൃOSS C++ؔͷ։ൃɾ ػೳՃඇ׆ൃ ։ൃऴྃ OSඞཁ (Owl͕ಠࣗରԠ) (emscripten)
Slide 22
Slide 22 text
22 Faust Puredata SuperCollider Heavy Gen~ Owl (Magus) Bela Organelle Norns Vult WebAudio Emscripten C++,C Daisy Teensy MOD Duo Lv2 Plugin Soul Linux +Xenomai FreeRTOS OSͳ͠ Arduino IDEରԠ
Slide 23
Slide 23 text
23 Faust Puredata SuperCollider Heavy Gen~ Owl (Magus) Bela Organelle Norns Vult WebAudio Emscripten C++,C Daisy Teensy MOD Duo Lv2 Plugin Soul ↑ʢਖ਼֬ʹΤΫελʔφϧʣ↓ Faust͔ΒίϚϯυҰͭͰॻ͖ग़ͤΔͷ ESP32ͱ͔
Slide 24
Slide 24 text
• ਖ਼ɺҰC++Λܦ༝͢ΔͱC++ίϯύΠϥͷ࠷దԽͰࣅͨΓدͬͨΓʹͳΔ (ಛʹClangܥͷLLVMϕʔεͷͷΛͬͨ߹) • ϝϞϦͷޮඞཁͳσʔλΛҰׅͰ֬อ͢ΔͷͰDSPݴޠͷํ͕ଟগ༗ར • Cortex-M4/7DSP͚ͷઐ༻໋ྩηοτ͕͋Δ͕ɺ༗ޮ׆༻͖͠ΕͣSTM༻ϥ ΠϒϥϦΛͬͨ΄͏͕ૣ͘ͳΔՄೳੑ͋Δ • ͪͳΈʹDaisySPઐ༻໋ྩΨϯΨϯͬͯΔͷ͔ͱࢥ͍͖STL݁ͩͬͨ • ύϑΥʔϚϯεͷͨΊʹΧϦΧϦʹνϡʔχϯάͯ͠ΊͪΌͪ͘ΌಡΈͮΒ͍ C++ͷίʔυͷ࣮ߦੑೳΛ100ɺC++ͰಡΈ͢͞࠷༏ઌͯ͠ॻ͍ͨίʔυΛ50 ͱ͢ΔͱɺDSPݴޠͰదʹॻ͍ͯ70͘Β͍ͷύϑΥʔϚϯε͕ग़ͤΔΠ ϝʔδ DSPݴޠͷύϑΥʔϚϯεʁ 24
Slide 25
Slide 25 text
༨ஊɿCortex Series·ͱΊ 25 M3 M4 M4F M7 Fixed ○ ○ ○ ○ DSP × ○ ○ ○ SP Float × × ○ ○ DP Float × × × Ұ෦ ໋ྩηοτ
Slide 26
Slide 26 text
• DSPDSPॲཧͱͯ͠ίʔυ͕࣮֬ʹͰ͖Δ • ≒։ൃͷϓϩηε͕͖ͪΜͱͰ͖Δɻੑೳͷͱදݱͷ Λ͚ͯߟ͑ΒΕΔ • υΩϡϝϯςʔγϣϯɺཁ݅ఆٛͱͯ͠ͷՁ • ࠷ѱݴޠॲཧܥ͕ࢮΜͰݴޠ༷ΔͷͰղಡ͍͢͠ • ϦϯάόοϑΝͱ͔σΟϨΠपΓͷϝϞϦཧؔͷࣦഊ͕ݮΔ • VCVRackͳͲͷιϑτγϯηɺWebͳͲଞϓϥοτϑΥʔϜͱฒߦ ͯ͠ӡ༻͢ΔՄೳੑ͕͋ΔͳΒ˕ DSPݴޠΛ͏ϝϦοτ 26
Slide 27
Slide 27 text
• ಋೖ࣮ɾՄಡੑɾ։ൃͷރΕ۩߹ɺকདྷੑͳͲਖ਼ҰҰ • Faust҆ఆ͍ͯ͠Δ͕ɺΈࠐΈ͕ϝΠϯλʔήοτͱ͍͏Θ͚Ͱແ͍ • SoulকདྷతʹΈࠐΈΛ͔ͳΓҙ͍ࣝͯ͠Δ͕ൃల్্ • VultখنͰ͋Δ͕ར༻࣮͋Γ • Ϗϧυϓϩηε͕ҰஈෳࡶʹͳΔ • FFT͕བྷΜͩΓɺ෦తʹαϯϓϧϨʔτΛม͑Δͱ͔͕ݫ͍͠ DSPݴޠΛ͏σϝϦοτ 27
Slide 28
Slide 28 text
• LinuxFoundation͕ࢧԉͯ͠ɺIntelͷਓ͕த৺ʹ։ൃத • ຯʹLinux Kernel 5.2͔Β͏औΓࠐ·Ε͍ͯΔ • ࠓͷͱ͜ΖαϙʔτIntelܥͷx86CPU&TensilicaͷXtensa HiFiγ ϦʔζͷΈ߹Θͤ(࣮ػͰࢼ͢ͳΒMinnowBoard Turbot͙Β͍) • ࣮༻తʹͳΔ·Ͱ·ͩԕͦ͏ʢಛʹARMରԠͱ͔ʣͩ ͚ͲɺQEMUͰΤϛϡϨʔγϣϯͯ͠Δͷͱ͔Ξϓϩʔνͱͯ͠ ࢀߟʹͳΔ ༨ஊ: Sound Open Firmwareɹ 28
Slide 29
Slide 29 text
·ͱΊ 29
Slide 30
Slide 30 text
• OSΛ͏͔൱͔ʁ • Linuxͷ߹ɺXenomaiͷΑ͏ͳΧʔωϧ֦ுΛ͢Δ͔ʁ • ALSA System on a Chip(ASoC)SOFͳͲɺΈࠐΈ͚Φʔ σΟΦػೳࠓޙॆ࣮͍͖ͯͦ͠͏ • OSΘͳ͍߹ɺArduino IDEରԠorඇରԠʁ • ͳΜ͔ͩΜͩIOͷڞ௨ن֨ͱཱͯͭͭ͋͠͠ΔͷͰɺϘʔυ ͕σΟείϯʹͳͬͯସ͑Λޮ͔͍͔ͤ͢ ΞʔΩςΫνϟͷબࢶ 30
Slide 31
Slide 31 text
• ϢʔβʔʹϓϩάϥϜॻ͖͑Λ։์͢Δ͔? • ͞ΒʹɺϑΝʔϜॻ͖͑orϗοτϦϩʔυ • OS͋Γͷํ͕ϗοτϦϩʔυͳͲؚΊରԠ͍͢͠ • ίετͷ ΞʔΩςΫνϟબͷஅج४ 31
Slide 32
Slide 32 text
• ʮιʔε͕ެ։͞Ε͍ͯΔʯͱʮυΩϡϝϯτ͕͖ͬͪΓ·ͱΊ ΒΕ͍ͯΔʯશવҧ͏ • ϋʔυؚΊͨυΩϡϝϯτ·Ͱ͖ͪΜͱ·ͱΊ͍ͯΔͷ Mutable Instruments͘Β͍ʢ݁ՌతʹͦΕͰ͕͍ͬͯΔʣ • ͤΊͯReadme͘Β͍ॻ͍ͯ͘Εʢ.inoϑΝΠϧ͕υϯͱஔ͔Ε ͍ͯͯࠔΔʣ • ϑΝʔϜΣΞɺճ࿏ਤ/ϨΠΞτؚΊͨڞ༗·͍ͩΖ͍Ζ ͍͕͠https://www.writethedocs.org/guide/ͱ͔ࢀߟʹͳΓͦ͏ Φʔϓϯιʔεϋʔυͷ࣮ࡍ 32
Slide 33
Slide 33 text
• DaisyDSPϥΠϒϥϦ΄͔Ͱ͍ճ͠ޮ͖ͦ͏ͩ͠ɺSTM ϕʔεͷ։ൃͷϓϩτλΠϓͱͯ͠े͑ͦ͏ • QEMUͱ͔Ͱϓϩηοα/ϩδοΫϨϕϧͷΤϛϡϨʔλ࡞Δͱ ͔ɺΞφϩάɾϝΧ෦ͷγϛϡϨʔλ༻ҙ͓ͯ͘͠ͱ͔ɺ͋Μ ·ΓͬͯΔͱ͜ͳ͍͚ͲຊؾͰଓ͖͍ͤͨ͞ͳΒ༗ޮ͔ ͦͷଞॴײ 33