Upgrade to Pro — share decks privately, control downloads, hide ads and more …

今日から分かる AVAudioEngineの全て

今日から分かる AVAudioEngineの全て

iOSDC Japan 2020
https://iosdc.jp/2020/

Shumpei Urabe
PRO

September 11, 2020
Tweet

More Decks by Shumpei Urabe

Other Decks in Programming

Transcript

  1. ࠓ೔͔Β෼͔Δ
    AVAudioEngineͷશͯ
    2020.09.19
    ߹ಉձࣾφΫα

    ઎෦ ॡฏ

    View Slide

  2. ࣗݾ঺հ
    ઎෦ ॡฏ
    • ߹ಉձࣾφΫαɹ୅ද
    • ΤϯλϝͷϥΠϒ഑৴Λࢧ͍͑ͯ
    ·͢
    • झຯ͸࡞ۂͱωοτϫʔΫӡ༻
    • iOSͷҰ൪޷͖ͳϑϨʔϜϫʔΫ͸
    VideoToolboxͱAudioToolboxͱ
    Accelerate

    View Slide

  3. ͸͡Ίʹ
    1.

    View Slide

  4. w ຊ೔ͭ໨ͷηογϣϯͱ͍͏͜ͱͰɺօ͞Μ੝Γ্͕ͬ
    ͍ͯ·͔͢ʁ
    w ࠓ೔͸લ໷ࡇͰ͕͢ɺ໌೔໌ޙ೔΋༷ʑͳηογϣϯ͕͋
    Γ·͢
    iOSDC લ໷ࡇʂ

    View Slide

  5. w ࠓ೔ͷηογϣϯ͸ɺଞͷํʑͷηογϣϯΛΑΓਂ͘ཧ
    ղ͢ΔͨΊʹɺ͋·Γ஌ΒΕ͍ͯͳ͍ίΞͳ࿩Λ͠·͢
    w ੋඇࠓ೔ֶΜͰɺଞͷํͷηογϣϯͷࢀߟʹͳΕ͹ͱ
    ࢥ͍ͬͯ·͢
    iOSDC લ໷ࡇʂ

    View Slide

  6. w ࠓ೔͸χονͳ࿮ͳͷͰɺ͋·Γʹ΋ٕज़͹͔Γ࿩͍ͯ͠
    Δͱ຾ͨ͘ͳΓͦ͏ͳͷͰɺఔΑ͘ࡶஊ΋ڬΈͳ͕Βਐߦ
    ͍͖ͯ͠·͢
    w ෼ͱ௕͍ͷͰɺਫ෼ͪΌΜͱऔ͍ͬͯͩ͘͞ʂ
    iOSDC લ໷ࡇʂ

    View Slide

  7. w ͜ͷηογϣϯͰ͸ɺ؆ུԽͷͨΊʹදݱΛม͍͑ͯΔ෦
    ෼͕ଟ͋͘Γ·͢
    w ޡࣈ୤ࣈ΍ؒҧ͍ͳͲؾ͍ͮͨΒɺεϐʔΧʔ·Ͱͬͦ͜
    Γڭ͍͑ͯͩ͘͞ɻԹ͔͍໨Ͱݟक͍͚ͬͯͨͩΔͱ޾͍
    Ͱ͢ɻ
    iOSDC લ໷ࡇʂ

    View Slide

  8. w ͦΕͰ͸ɺຊ୊ʹೖΓ·͢ɻ
    iOSDC લ໷ࡇʂ

    View Slide

  9. ͸͡Ίʹ
    "VEJP6OJU
    "7"VEJP4FTTJPO
    "7"VEJP&OHJOF
    "7"VEJP/PEF
    &YBNQMFT
    ·ͱΊ
    ࢀߟࢿྉ
    ΋͘͡

    View Slide

  10. w J04Ͱ͸ɺΦʔσΟΦपΓͷػೳ͸$PSF"VEJPͱݺ͹ΕΔ
    ΞʔΩςΫνϟʹ·ͱΊΒΕ͍ͯΔ
    w $PSF"VEJPʹ͸ͭͷϑϨʔϜϫʔΫ͕͋Γɺͦͷதʹ
    αʔϏεͱݺ͹ΕΔػೳ͕͋Δɹ
    CoreAudio

    View Slide

  11. iOS Audio Stack "7"VEJP&OHJOFJO1SBDUJDF"QQMFΑΓਤΛҾ༻
    IUUQTEFWTUSFBNJOHDEOBQQMFDPNWJEFPTXXEDYYWPWPWL@BWBVEJPFOHJOF@JO@QSBDUJDFQEG

    View Slide

  12. w $PSF"VEJPͷҰ෦ػೳ͸"7'PVOEBUJPOʹҠಈ͞Ε͍ͯΔ
    w "7"VEJP4FTTJPO "VEJP4FTTJPO
    "7"VEJP&OHJOF "6(SBQI

    w ݟͯͷ௨Γɺ"7'PVOEBUJPOʹ͸QSFGJYʹ"7͕෇͍͍ͯΔ
    w $PSF"VEJPΛ֮͑ͳͯ͘΋ΞϓϦ͸͔͚Δ͕ɺτϥϒϧγϡʔςΟ
    ϯά͢Δ࣌ʹେมͳͷͰɺ$PSF"VEJPΛֶΜͰཧղΛਂΊ͍ͨ
    CoreAudio

    View Slide

  13. AudioUnit
    2.

    View Slide

  14. w ΦʔσΟΦϢχοτͱݺ͹ΕΔΦʔσΟΦॲཧ༻ͷϓϥά
    ΠϯΛ࢖༻͢ΔͨΊͷΠϯλʔϑΣʔεΛఏڙ͍ͯ͠Δ
    w J04Ͱ͸"QQMF͕ఏڙ͍ͯ͠ΔΦʔσΟΦϢχοτ͔͠࢖
    ༻͢Δ͜ͱ͕ग़དྷͳ͍
    AudioUnit

    View Slide

  15. w L"VEJP6OJU5ZQF@0VUQVU
    w L"[email protected]%FWJDF
    w L"VEJP6OJU5ZQF@'PSNBU$POWFSUFS
    w L"VEJP6OJU5ZQF@&GGFDU
    w L"[email protected]
    w L"VEJP6OJU5ZQF@(FOFSBUPS
    AudioUnitͷछྨ

    View Slide

  16. w L"VEJP6OJU4VC5ZQF@3FNPUF*0
    w J04Ͱ͸جຊతʹ3FNPUF*0͕࢖ΘΕΔ
    w L"VEJP6OJU4VC5ZQF@7PJDF1SPDFTTJOH*0
    w 7P*1Λ࢖͏ͱ͖ʹ࢖ΘΕΔ
    w ΤίʔΩϟϯηϧ΍ϊΠζΩϟϯηϧ͕ࣗಈతʹ0/ʹͳΔ
    kAudioUnitType_Output

    View Slide

  17. w L"VEJP6OJU4VC5ZQF@4BNQMFS
    w αϯϓϥʔΛ໐Βͨ͢ΊͷΦʔσΟΦϢχοτ
    kAudioUnitType_MusicDevice

    View Slide

  18. w L"VEJP6OJU4VC5ZQF@"6$POWFSUFS
    w L"VEJP6OJU4VC5ZQF@"6J1PE5JNF0UIFS
    w L"VEJP6OJU4VC5ZQF@%FGFSSFE3FOEFSFS
    w L"[email protected]
    w L"[email protected]
    w L"VEJP6OJU4VC5ZQF@/FX5JNF1JUDI
    w L"VEJP6OJU4VC5ZQF@3PVOE5SJQ""$
    kAudioUnitType_FormatConverter
    w L"VEJP6OJU4VC5ZQF@4QMJUUFS
    w L"VEJP6OJU4VC5ZQF@7BSJTQFFE

    View Slide

  19. w L"VEJP6OJU4VC5ZQF@#BOE1BTT'JMUFS
    w L"VEJP6OJU4VC5ZQF@%FMBZ
    w L"VEJP6OJU4VC5ZQF@%JTUPSUJPO
    w L"VEJP6OJU4VC5ZQF@%ZOBNJDT1SPDFTTPS
    w L"VEJP6OJU4VC5ZQF@)JHI1BTT'JMUFS
    w L"VEJP6OJU4VC5ZQF@)JHI4IFMG'JMUFS
    w L"VEJP6OJU4VC5ZQF@-PX1BTT'JMUFS
    w L"VEJP6OJU4VC5ZQF@-PX4IFMG'JMUFS
    kAudioUnitType_Effect
    w L"VEJP6OJU4VC5ZQF@/#BOE&2
    w L"VEJP6OJU4VC5ZQF@1BSBNFUSJD&2
    w L"VEJP6OJU4VC5ZQF@1FBL-JNJUFS
    w L"VEJP6OJU4VC5ZQF@4BNQMF%FMBZ

    View Slide

  20. w L"[email protected]$IBOOFM.JYFS
    w ෳ਺ͷνϟϯωϧΛϛοΫε͢ΔΦʔσΟΦϢχοτ
    w L"[email protected]
    w ෳ਺νϟϯωϧΛͦͷ··ѻ͏ΦʔσΟΦϢχοτ
    kAudioUnitType_Mixer

    View Slide

  21. w L"VEJP6OJU4VC5ZQF@4DIFEVMFE4PVOE1MBZFS
    w ࢦఆͨ࣌ؒ͠ʹ࠶ੜ͢ΔΦʔσΟΦΛεέδϡʔϦϯά͢Δ
    δΣωϨʔλʔϢχοτ
    w L"VEJP6OJU4VC5ZQF@"VEJP'JMF1MBZFS
    w ϑΝΠϧͷ࠶ੜΛߦ͏δΣωϨʔλʔϢχοτ
    kAudioUnitType_Generator

    View Slide

  22. w "VEJP6OJUΛͦͷ··ѻ͏ͷ͸ͱͯ΋େม
    w ͦͷͨΊɺ"7"VEJP6OJUͱݺ͹ΕΔϥούʔ͕͋Δ
    w "7"VEJP&OHJOFͰ͸"7"VEJP6OJUΛ࢖͏͜ͱͰɺ಺෦
    తʹ͸"VEJP6OJUΛݺͼग़͍ͯ͠Δ
    AVAudioUnit

    View Slide

  23. AVAudioSession
    3.

    View Slide

  24. iOS Audio Stack "7"VEJP&OHJOFJO1SBDUJDF"QQMFΑΓਤΛҾ༻
    IUUQTEFWTUSFBNJOHDEOBQQMFDPNWJEFPTXXEDYYWPWPWL@BWBVEJPFOHJOF@JO@QSBDUJDFQEG

    View Slide

  25. w J04Ͱ͸ɺ"VEJP4FTTJPO4FSWJDFTͱݺ͹ΕΔαʔϏε͕
    ͋ͬͨ
    w ଞͷΞϓϦέʔγϣϯͷঢ়گʹԠͯ͡ɺΞϓϦέʔγϣϯ
    ͷΦʔσΟΦͷಈ࡞Λ؅ཧ͢Δ͜ͱ͕Ͱ͖Δ
    AudioSession

    View Slide

  26. w ݩʑ"VEJP4FTTJPO͸"VEJP5PPMCPYʹ͕͋ͬͨɺݱࡏ͸
    "7'PVOEBUJPOʹ͋Δ"7"VEJP4FTTJPOʹஔ͖׵Θͬͨ
    w "7"VEJP4FTTJPO͸ɺ"VEJP4FTTJPOΑΓ΋ѻ͍΍͘͢
    ͳ͍ͬͯΔ
    AVAudioSession

    View Slide

  27. w EFGBVMU
    w ௨ৗ࣌͸ͪ͜ΒΛબ୒
    w WPJDF$IBU WJEFP$IBU

    w "VEJP6OJUͷ7PJDF1SPDFTTJOH*0͕༗ޮʹͳΔ
    w NPWJF1MBZCBDL
    w εςϨΦ͕ڧԽ͞ΕΔ
    w TQPLFO"VEJP
    w Ի੠ͷׂΓࠐΈ࣌ʹҰ࣌தஅ͢Δͱ͖ʹ࢖͏ʢΧʔφϏήʔγϣϯͷҊ಺ͳͲʣ
    Mode

    View Slide

  28. w BNCJFOU
    w ϩοΫͨ͠৔߹΍αΠϨϯτʹͨ͠৔߹͸Ի͕ϛϡʔτʹͳΔ
    w QMBZCBDL
    w BNCJFOUͱ͸ҟͳΓɺϩοΫͨ͠৔߹΍αΠϨϯτʹͨ͠৔߹Ͱ΋Ի͸ྲྀΕΔ
    w SFDPSE
    w ࿥Ի͢Δ৔߹ʹ࢖͏ɻ࿥Ի͠ͳ͕ΒԿ͔ྲྀ͍ͨ͠৔߹͸QMBZ"OE3FDPSEΛ࢖
    ͏ɻ
    Category

    View Slide

  29. w NJY8JUI0UIFST
    w ଞͷΞϓϦ͔ΒׂΓࠐΈ͕͋ͬͯ΋࠶ੜΛதஅ͠ͳ͍Φϓγϣϯ
    w BMMPX#MVFUPPUI
    w #MVFUPPUIΛϧʔςΟϯάͰ͖ΔΑ͏ʹ͢Δ
    w BMMPX"JS1MBZ
    w "JS1MBZΛϧʔςΟϯάͰ͖ΔΑ͏ʹ͢Δ
    w EFGBVMU5P4QFBLFS
    w ϧʔςΟϯάΛ಺ଂεϐʔΧʔ༏ઌʹ͢Δ
    Category Options

    View Slide

  30. w TFU1SFGFSSFE4BNQMF3BUF
    w αϯϓϧϨʔτΛࢦఆͰ͖Δɻ͋͘·Ͱ΋༏ઌͳͷͰɺඞͣ͠΋ࢦఆ͞ΕͨαϯϓϧϨʔτ͕࢖ΘΕΔͱ
    ͸ݶΒͳ͍ɻ
    w TFU1SFGFSSFE%BUB4PVSDF
    w ͲͷϚΠΫΛ࢖͏͔ࢦఆ͢Δ͜ͱ͕Ͱ͖Δɻલ໘ɾഎ໘Ͱ੾Γସ͍͑ͨͱ͖ʹ࢖͏ɻ
    w TFU1SFGFSSFE*OQVU
    w ೖྗͷϙʔτΛࢦఆ͢Δ͜ͱ͕Ͱ͖Δɻ64#΍#MVFUPPUIΛ༏ઌͯ͠࢖͍͍ͨͳͲɻ
    w PWFSSJEF0VUQVU"VEJP1PSU
    w ग़ྗϙʔτΛ্ॻ͖Ͱ͖Δɻ͕ɺ͜ΕΛࢦఆ͢Δͱڍಈ͕͓͔͘͠ͳΔ͜ͱ͕Α͘ଟ͍ɻ
    Other

    View Slide

  31. w "7"VEJP4FTTJPO͸TFU"DUJWF USVF
    ͰɺͦͷηογϣϯΛ༗ޮʹ͢Δ͜ͱ͕Ͱ͖Δ
    w TFU"DUJWF࣌ʹOPUJGZ0UIFST0O%FBDUJWBUJPOͷΦϓγϣϯΛ෇༩͢Δ͜ͱͰɺࣗ਎ͷηογϣϯ͕ඇΞΫ
    ςΟϒʹͳͬͨ࣌ʹଞͷΞϓϦʹ௨஌͢Δ͜ͱ͕Ͱ͖Δ
    w "7"VEJP4FTTJPOͷTFU"DUJWF͸Կ౓΋ݺͼग़ͯ͠΋͍͍ɻҰ౓༗ޮʹͳ͍ͬͯΔ৔߹͸Τϥʔ͕ฦͬͯ͘
    Δɻ
    w ΞϓϦΛऴྃ͢Δ৔߹͸ɺηογϣϯ͕ඞཁͳ͍৔߹͸TFU"DUJWF GBMTF
    ͰηογϣϯΛऴྃͤ͞Δඞཁ͕͋
    Δ
    w ଟ͘ͷΞϓϦʹ͓͍ͯɺηογϣϯΛऴྃ͠ͳ͍έʔε͕ଟ͍ͨΊɺࠔ͍ͬͯ·͢ɻօ͞ΜɺඞͣΞϓϦ
    ऴྃ͢Δ৔߹͸TFU"DUJWF GBMTF
    ʹ͍ͯͩ͘͠͞ʂ
    Active

    View Slide

  32. w "7"VEJP4FTTJPOͰ͸ɺ/PUJGJDBUJPO$FOUFSͰηογϣϯͷঢ়ଶΛऔಘ͢Δ͜ͱ͕Ͱ͖Δ
    w "7"VEJP4FTTJPOJOUFSSVQUJPO/PUJGJDBUJPOͰ͸ɺ్தͰׂΓࠐΈ͕ೖͬͨࡍʹ௨஌Λड͚औΔ͜ͱ͕Ͱ͖
    Δɻ·ͨɺͦͷ࣌ʹׂΓࠐΈཧ༝͕"7"VEJP4FTTJPO*OUFSSVQUJPO5ZQFͱͯ͠औಘ͢Δ͜ͱ͕Ͱ͖Δɻ
    w "7"VEJP4FTTJPOSPVUF$IBOHF/PSUJGJDBUJPOͰ͸ɺԻ੠ग़ྗͷϧʔτ͕มߋʹͳͬͨࡍʹ௨஌Λड͚औΔ͜
    ͱ͕Ͱ͖Δɻ·ͨɺͦͷ࣌ʹมߋཧ༝͕"7"VEJP4FTTJPO3PVUF$IBOHF3FBTPOͰऔಘͰ͖Δɻ
    w "7"VEJP4FTTJPONFEJB4FSWJDFT8FSF3FTFU/PUJGJDBUJPOͰ͸ɺϝσΟΞαʔϏε͕࠶ىಈͨ͠ࡍʹ௨஌Λ
    ड͚औΔ͜ͱ͕Ͱ͖ΔɻϝσΟΞαʔϏεͷ࠶ىಈ͸ɺҙਤͤͣʹམͪΔ৔߹͕ଟ͘ɺ࠶ىಈͨ͠৔߹͸طଘ
    ͷηογϣϯ͸ແޮʹͳΔͨΊɺ࠶౓"DUJWF͢Δඞཁ͕͋Δɻ
    NotificationCenter

    View Slide

  33. AVAudioEngine
    4.

    View Slide

  34. iOS Audio Stack "7"VEJP&OHJOFJO1SBDUJDF"QQMFΑΓਤΛҾ༻
    IUUQTEFWTUSFBNJOHDEOBQQMFDPNWJEFPTXXEDYYWPWPWL@BWBVEJPFOHJOF@JO@QSBDUJDFQEG

    View Slide

  35. w "7"VEJP&OHJOF͸ɺΦʔσΟΦ৴߸ͷੜ੒ͱॲཧɺΦʔσΟΦͷೖग़ྗ΍ΦʔσΟΦϊʔυͷͭͳ͗ࠐΈΛ
    ߦ͏Ϋϥε
    w લੈ͸"VEJP5PPMCPYʹ͋ͬͨ"VEJP6OJU1SPDFTTJOH(SBQI4FSWJDFT "6(SBQI
    Ͱ͋Δ
    w "6(SBQIͰ͸ɺάϥϑΦϒδΣΫτͱͯ͠ɺΦʔσΟΦϢχοτΛϊʔυͰ઀ଓ͢Δ͜ͱ͕Ͱ͖͕ͨɺ
    "7"VEJP&OHJOF΋ಉ͜͡ͱ͕Ͱ͖Δ
    w "6(SBQIʹൺ΂Δͱɺ"7'PVOEBUJPOʹҠ੶ͨͨ͠Ίɺͱͯ΋ѻ͍΍͘͢ͳ͍ͬͯΔ
    AVAudioEngine

    View Slide

  36. AVAudioNode
    5.

    View Slide

  37. AVAudioEngine
    1MBZFS/PEF .JYFS/PEF 0VUQVU/PEF
    *OQVU/PEF

    View Slide

  38. w "7"VEJP/PEF͸ɺ"7"VEJP&OHJOFʹ͓͍ͯɺ֤ΦʔσΟΦϢχοτΛͭͳ͛ΔϞδϡʔϧͰ͋Δ
    w "7"VEJP/PEFΛܨ͍͛ͯ͘͜ͱͰɺೖྗͱॲཧͱग़ྗΛ࣮ݱ͢Δ͜ͱ͕Ͱ͖Δ
    w "7"VEJP/PEF͸ɺ͍͔ͭ͘ͷ੍໿͕͋Δ
    w 0VUQVU/PEFҎ֎͸ϑΥʔϚοτΛڞ௨ʹ͢Δඞཁ͕͋Δ
    w .JYFS/PEFͱ0VUQVU/PEF͸໌ࣔతʹݺ͹ΕΔͨΊ࡟আ͢Δ͜ͱ͕Ͱ͖ͳ͍
    w ֤ϊʔυ͸ഉଞ੍ޚͰ͋ΔɻͦͷͨΊɺ֤ϊʔυΛෳ਺Օॴ͔ΒݺͿͱϨʔείϯσΟγϣϯ͕ൃੜ͢Δ
    AVAudioNode

    View Slide

  39. AVAudioEngine
    1MBZFS/PEF .JYFS/PEF 0VUQVU/PEF
    *OQVU/PEF

    View Slide

  40. w "7"VEJP1MBZFS΍"71MBZFSͱ͸શ͘ҟͳΔ
    w "7"VEJP1MBZFS/PEF͸"7"VEJP1$.#VGGFS΍"7"VEJP'JMFͳͲͷೖྗΛαϙʔτ͍ͯ͠Δ
    AVAudioPlayerNode

    View Slide

  41. AVAudioEngine
    1MBZFS/PEF .JYFS/PEF 0VUQVU/PEF
    *OQVU/PEF

    View Slide

  42. w "7"VEJP*OQVU/PEF͸҉໧తʹݺͼग़͞ΕΔ
    w ͜͜Ͱ͸ɺೖྗϋʔυ΢ΣΞʢϚΠΫͳͲʣ͔ΒΦʔσΟΦσʔλΛड͚औΔ
    w "7"VEJP*OQVU/PEFΛଞͷϊʔυͱܨ͛Δ͜ͱͰɺ*OQVU/PEF͔ΒͷೖྗΛड͚औΔ͜ͱ͕Ͱ͖Δ
    AVAudioInputNode

    View Slide

  43. AVAudioEngine
    1MBZFS/PEF .JYFS/PEF 0VUQVU/PEF
    *OQVU/PEF

    View Slide

  44. w "7"VEJP.JYFS/PEF͸ɺෳ਺ͷೖྗΛϛοΫεͯ͠ɺͭͷग़ྗʹม׵͢Δ
    w "7"VEJP.JYFS/PEF͸ɺ҉໧తʹݺ͹ΕΔͷͰফ͢͜ͱ͸Ͱ͖ͳ͍
    w .JYFS/PEFʹೖྗ͢Δ΋ͷ͸ϑΥʔϚοτ͕ͦΕͧΕҟͳ͍ͬͯͯ΋໰୊ͳ͍
    AVAudioMixerNode

    View Slide

  45. AVAudioEngine
    1MBZFS/PEF .JYFS/PEF 0VUQVU/PEF
    *OQVU/PEF

    View Slide

  46. w "7"VEJP0VUQVU/PEF͸ɺϋʔυ΢ΣΞʹग़ྗ͢ΔϊʔυͰ͋Δ
    w "7"VEJP0VUQVU/PEF΋҉໧తʹݺ͹ΕΔͨΊɺফ͢͜ͱ͕Ͱ͖ͳ͍
    w ϛϡʔτ͍ͨͨ͠Ίʹ0VUQVU/PEFΛ֎͢͜ͱ͸Ͱ͖ͳ͍͕ɺϛϡʔτΛ࣮૷͢Δ͜ͱ͸Ͱ͖Δʢޙड़ʣ
    AVAudioOutputNode

    View Slide

  47. w "7"VEJP/PEF͸ɺ͜ΕΒҎ֎ʹ΋Ի੠ʹ༷ʑͳΤϑΣΫτΛ͔͚Δ͜ͱ͕Ͱ͖Δ
    Audio Enhancements

    View Slide

  48. w "7"VEJP6OJU3FWFSC
    w "7"VEJP6OJU5JNF&GGFDU
    w "7"VEJP6OJU5JNF1JUDI
    w "7"VEJP6OJU7BSJTQFFE
    w "7"VEJP6OJU&GGFDU
    w "7"VEJP6OJU%FMBZ
    w "7"VEJP6OJU%JTUPSUJPO
    w "7"VEJP6OJU&2
    Audio Enhancements

    View Slide

  49. Examples
    6.

    View Slide

  50. ͔͜͜Β͸"7"VEJP&OHJOFͷجຊతͳ࢖͍ํʹֶ͍ͭͯΜͰ͍͖·͠ΐ͏ɻ
    ࠓճ࢖͏ͷ͸σΟετʔγϣϯͱϦόʔϒͰ͢ɻ
    جຊతͳ࢖͍ํ

    View Slide

  51. جຊతͳ࢖͍ํ
    ·ͣ͸"7"VEJP4FTTJPOΛηοτΞοϓ͠·͠ΐ͏ɻ*0#VGGFS%VSBUJPOΛઃఆ͢Δ͜ͱͰɺϩʔςϯγʔͰऔಘ
    ͢Δ͜ͱ͕ՄೳʹͳΓ·͢ɻ

    View Slide

  52. جຊతͳ࢖͍ํ
    "7"VEJP&OHJOFͱ֤/PEFͷηοτΞοϓΛ͍͖ͯ͠·͠ΐ͏ɻBUUBDI͸͓๨Εͳ͘ɻ

    View Slide

  53. جຊతͳ࢖͍ํ
    Ξλον͞Εͨϊʔυ͸࠷ޙʹ઀ଓΛߦ͍·͢ɻͦͷޙɺ"7"VEJP&OHJOFΛελʔτͤ͞ΔͱɺεϐʔΧʔ͔
    ΒԻ͕ྲྀΕΔ͸ͣͰ͢ɻ

    View Slide

  54. ೚ҙͷԻ੠ϑΝΠϧΛ࠶ੜ͢Δ
    ࠓ౓͸೚ҙͷϑΝΠϧΛ࠶ੜͯ͠Έ·͠ΐ͏ɻϑΝΠϧΛ࠶ੜ͢Δʹ͸·ͣ"7"VEJP'JMFΛ࡞Δඞཁ͕͋Γ·
    ͢ɻ

    View Slide

  55. ೚ҙͷԻ੠ϑΝΠϧΛ࠶ੜ͢Δ
    Ի੠ϑΝΠϧΛ࠶ੜ͢Δʹ͸"7"VEJP1MBZFS/PEFΛ࢖͍·͢ɻઌ΄Ͳͱಉ༷ʹΞλονͯ͠ܨ͗ࠐΈ·͢ɻ
    ͦͷޙɺઌ΄Ͳ࡞ͬͨTPVSDF'JMFΛQMBZFSͷTDIFEVMF'JMFΛ࢖ͬͯɺϑΝΠϧΛಡΈࠐΈɺ࠶ੜ͠·͢ɻ

    View Slide

  56. ֤/PEFͰ͸ɺJOTUBMM5BQͰϊʔυͷग़ྗΛ؂ࢹ͢Δ͜ͱ͕Ͱ͖·͢
    ͜ͷͱ͖ɺग़ྗόε΍όοϑΝαΠζɺϑΥʔϚοτΛࢦఆ͢Δ͜ͱ͕ՄೳͰ͢
    installTap

    View Slide

  57. ઌ΄ͲͷJOTUBMM5BQΛ࢖ͬͯɺ"7"VEJP'JMFʹॻ͖ࠐΜͰΈ·͠ΐ͏ɻࠓճ͸ܾΊΒΕͨϑΥʔϚοτͰग़ྗ͢
    ΔΑ͏ʹઃఆ͠·͢ɻ
    AVAudioFileʹॻ͖ࠐΉ

    View Slide

  58. "7"VEJP&OHJOF͸ɺग़ྗ͕҉໧తʹݺ͹ΕΔͨΊɺͦͷ··ͩͱεϐʔΧʔ͔ΒԻ͕ྲྀΕͯ͠·͍·͢ɻ
    ͜ΕΛ๷͙ͨΊʹ"7"VEJP.JYFS/PEFΛ׆༻ͯ͠ɺϛϡʔτΛ࣮૷ͯ͠Έ·͠ΐ͏ɻ
    ԻΛग़ྗ͠ͳ͍Α͏ʹ͢Δ

    View Slide

  59. ԻΛग़ྗ͠ͳ͍Α͏ʹ͢Δ
    .JYFS/PEFΛͭ࡞Γ·͢
    PVUQVU.JYFS͸JOTUBMM5BQΛ࢖͍ɺԻ੠ͷόοϑΝΛͱΔͨΊʹ࢖͍·͢
    NVUF.JYFS͸ɺԻ͕εϐʔΧʔʹग़ྗ͠ͳ͍ͨΊʹ༻ҙͨ͠μϛʔͷϛΩαʔͰ͢

    View Slide

  60. ԻΛग़ྗ͠ͳ͍Α͏ʹ͢Δ
    Ξλονͯ͠ܨ͗ࠐΈ·͢ɻ͜ͷͱ͖ॱ൪͕େࣄͰ͢ɻ
    ઌʹPVUQVU.JYFSΛܨ͗ࠐΈɺ࠷ޙʹNVUF.JYFSΛܨ͗ࠐΈ·͢ɻ͜͏͢Δ͜ͱͰɺεϐʔΧʔ͔Β͸
    NVUF.JYFSͷԻ͕ग़ΔͨΊɺແԻʹͳΓ·͢ɻ

    View Slide

  61. JOTUBMM5BQΛ׆༻͢Δ͜ͱͰɺ3.4Λऔಘ͢Δ͜ͱ͕Ͱ͖·͢ɻ3.4Λऔಘ͢Δͱɺ༷ʑͳγʔϯͰ׆༻͢Δ͜
    ͱ͕Ͱ͖·͢ɻ
    RMSΛऔಘ͢Δ

    View Slide

  62. JOTUBMM5BQͰɺ"7"VEJP1$.#VGGFS͕΍͖ͬͯ·͢ɻ"7"VEJP1$.#VGGFS͔ΒGMPBU$IBOOFM%BUBΛऔΓग़
    ͠ɺDIBOOFM%BUB7BMVFʹೖΕ·͢ɻ͜ͷ഑ྻ͸6OTBGF.VUBCMF1PJOUFS'MPBUͰ͋ΔͨΊɺ'MPBUͷ഑ྻʹ
    ม׵͠·͢ɻ'MPBUͷ഑ྻʹͨ͠ޙɺ3.4ͷܭࢉΛ͠·͢ɻ·ͣ഑ྻͷ஋Λೋ৐͠଍͠߹Θͤ·͢ɻͦͷ߹ܭ஋Λ
    όοϑΝαΠζͰׂΓɺฏํࠜΛٻΊΔͱ3.4͕ٻΊΒΕ·͢ɻ
    RMSΛऔಘ͢Δ

    View Slide

  63. ϘίʔμʔϥΠϒϥϦͷ8PSMEΛ࢖ͬͯɺ"7"VEJP&OHJOF͔Βऔ͖ͬͯͨόοϑΝ͔Βϐονγϑτͯ͠Έ·
    ͠ΐ͏ɻ
    8PSMEͷϥούʔͰ͋Δ8PSME*O"QQMF IUUQTHJUIVCDPNGV[JLJ8PSME*O"QQMF
    ͷ&YBNQMFTͰ͸ɺ
    "7"VEJP&OHJOFΛ࢖࣮ͬͯ૷͞Ε͍ͯ·͢ɻͦͷத͔ΒϙΠϯτΛݟ͍͖ͯ·͠ΐ͏ɻ
    WOLRDͰϘΠενΣϯδϟʔΛ࣮૷ͯ͠ΈΔ

    View Slide

  64. 8PSME͕ೖྗ͢ΔϑΥʔϚοτ͕'MPBUͷ഑ྻʹରͯ͠ɺJ04Ͱ͸'MPBU͔͠औΕ·ͤΜɻͦͷͨΊɺϑΥʔ
    ϚοτΛม׵͢Δඞཁ͕͋Γ·͢ɻ
    WOLRDͰϘΠενΣϯδϟʔΛ࣮૷ͯ͠ΈΔ

    View Slide

  65. $POWFSUFSΫϥεͰ͸ɺ"7"VEJP1$.#VGGFSΛ"7"VEJP$POWFSUFSΛ࢖ͬͯɺผͷϑΥʔϚοτʹม׵͍ͯ͠
    ·͢ɻ
    WOLRDͰϘΠενΣϯδϟʔΛ࣮૷ͯ͠ΈΔ

    View Slide

  66. $POWFSUFSΫϥεͰ͸ɺ"7"VEJP1$.#VGGFSΛ"7"VEJP$POWFSUFSΛ࢖ͬͯɺผͷϑΥʔϚοτʹม׵͍ͯ͠
    ·͢ɻ
    WOLRDͰϘΠενΣϯδϟʔΛ࣮૷ͯ͠ΈΔ

    View Slide

  67. JOTUBMM5BQΑΓ΍͖ͬͯͨόοϑΝʔΛ"7"VEJP$POWFSUFSͰɺ'MPBUʹม׵͠ɺ8PSMEͷύϥϝʔλΛ࢖͍ɺϐο
    νγϑτΛ͔͚ɺͦΕΛ'MPBUʹ໭ͯ͠ɺ"7"VEJP1MBZFS/PEFͷTDIFEVMF#VGGFSΛ࢖ͬͯ࠶ੜ͠·͢ɻ
    WOLRDͰϘΠενΣϯδϟʔΛ࣮૷ͯ͠ΈΔ

    View Slide

  68. "7"VEJP&OHJOFͰ͸ɺجຊతʹ3FNPUF*0ͰԻΛऔಘ͠·͢ɻ
    J04Ҏ͔߱ΒɺTFU7PJDF1SPDFTTJOH&OBCMFEʹΑΓɺ7PJDF1SPDFTTJOH*0Λબ୒͢Δ͜ͱ͕ग़དྷ·ͨ͠ɻ
    ࠓճ͸.BOVBM3FOEFSJOHΛ࢖͍ɺ"VEJP6OJU͔Βऔಘ͢Δํ๏ʹ͍ͭͯઆ໌͠·͢ɻ
    ͳ͓ɺຊ࣮૷Ͱ͸0CKFDUJWF$Λ࢖͍·͢ɻ
    ManualRenderingͰVPIOΛ༗ޮʹ͢Δ

    View Slide

  69. ManualRenderingͰVPIOΛ༗ޮʹ͢Δ
    "VEJP6OJUͰԻΛऔಘ͢ΔͨΊͷίʔϧόοΫΛ࡞੒͠·͢ɻ*OQVU$BMMCBDLͰ͸ɺ"VEJP6OJU͔Βདྷͨ΋ͷΛ
    όοϑΝʹॻ͖ࠐΈ·͢ɻ

    View Slide

  70. ManualRenderingͰVPIOΛ༗ޮʹ͢Δ
    3FOEFS$BMMCBDLͰ͸ɺόοϑΝ͕ஷΊऴΘͬͨΒݺͼग़͞Ε·͢ɻ͜ͷ࣌ʹ"7"VEJP&OHJOFͷ
    .BOVBM3FOEFSJOHΛ࣮ߦͤ͞·͢ɻ

    View Slide

  71. ManualRenderingͰVPIOΛ༗ޮʹ͢Δ
    "VEJP6OJUͷॳظԽΛߦ͍·͢

    View Slide

  72. ManualRenderingͰVPIOΛ༗ޮʹ͢Δ
    #64͕ग़ྗɺ#64͕ೖྗͰ͢ɻ
    #64ʹରͯ͠ɺ7PJDF1SPDFTTJOH*0Λ༗ޮʹ͠·͢ɻ

    View Slide

  73. ManualRenderingͰVPIOΛ༗ޮʹ͢Δ
    SFOEFS$BMMCBDLʹઌ΄Ͳ࡞ͬͨίʔϧόοΫΛࢦఆ͠·͢ɻ

    View Slide

  74. ManualRenderingͰVPIOΛ༗ޮʹ͢Δ
    ͋ͱ͸"7"VEJP&OHJOFͱܨ͗ࠐΈΛ͢Δ͚ͩͰ͢ɻ"7"VEJP&OHJOFͷ*OQVU/PEFʹ͸
    TFU.BOVBM3FOEFSJOH*OQVU1$.'PSNBUͷJOQVU#MPDLΛ࢖ͬͯɺCVGGFSΛࢦఆ͠·͢ɻ

    View Slide

  75. ·ͱΊ
    7.

    View Slide

  76. "7"VEJP&OHJOFͷ஌ࣝ͸ਂ·Γ·ͨ͠Ͱ͠ΐ͏͔ʁ
    J04%$Ͱ͸ɺ"7"VEJP&OHJOFΛ࢖ͬͨηογϣϯ͕͍͔ͭ͋͘Γ·͢
    ੋඇຊηογϣϯͰֶΜͰ͍͖ͨͩɺͦΕͧΕͷηογϣϯ΋ݟ͍͚ͯͨͩΕ͹ԿΑΓͰ͢
    ·ͱΊ

    View Slide

  77. ࢀߟʹͤͯ͞௖͍ͨࢿྉ
    8.

    View Slide

  78. هࣄ
    w J04Ͱ࢖༻Ͱ͖Δ"VEJP6OJUҰཡ IUUQTRJJUBDPNTIVJUFNTCBFCBGBFEB

    w "7"VEJP&OHJOF5VUPSJBMGPSJ04(FUUJOH4UBSUFE IUUQTXXXSBZXFOEFSMJDIDPN
    BWBVEJPFOHJOFUVUPSJBMGPSJPTHFUUJOHTUBSUFE

    w "7"VEJP&OHJOFͰΤίΩϟϯ࣮૷ XJUI.BOVBM3FOEFSJOH
    IUUQTTPSBOPCBOFUQSPHSBNNJOHWPJDF
    QPSPDFTTJOHXJUIBWBVEJPFOHJOF

    Φʔϓϯιʔειϑτ΢ΣΞ
    w 4XJGUZ"VEJP IUUQTHJUIVCDPNBSJFMFMLJO4XJGUZ"VEJP

    w 5XJMJP7JEFP2VJDLTUBSUGPSJ04 IUUQTHJUIVCDPNUXJMJPWJEFPRVJDLTUBSUJPT

    w 8PSME*O"QQMF IUUQTHJUIVCDPNGV[JLJ8PSME*O"QQMF

    ࢀߟࢿྉ

    View Slide

  79. ͦͷଞ
    ೔໨ͷ-5Ͱ"QQMF-PX-BUFODZ)-4ͷ࿩Λ͠·͢
    88%$Ͱൃද͞Εͨ಺༰ΛΈΜͳͰ෮श͠·͠ΐ͏ʂ

    View Slide

  80. ͦΕͰ͸ɺҾ͖ଓ͖J04%$Λָ͓͠Έ͍ͩ͘͞ʂ
    ͓ΘΓ

    View Slide