今日から分かる AVAudioEngineの全て

Cb4d62dd7c1d325863696c45e9b6484d?s=47 Shumpei Urabe
September 11, 2020

今日から分かる AVAudioEngineの全て

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

Cb4d62dd7c1d325863696c45e9b6484d?s=128

Shumpei Urabe

September 11, 2020
Tweet

Transcript

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

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

    • iOSͷҰ൪޷͖ͳϑϨʔϜϫʔΫ͸ VideoToolboxͱAudioToolboxͱ Accelerate
  3. ͸͡Ίʹ 1.

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

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

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

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

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

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

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

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

  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
  13. AudioUnit 2.

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

  15. w L"VEJP6OJU5ZQF@0VUQVU w L"VEJP6OJU5ZQF@.VTJD%FWJDF w L"VEJP6OJU5ZQF@'PSNBU$POWFSUFS w L"VEJP6OJU5ZQF@&GGFDU w L"VEJP6OJU5ZQF@.JYFS

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

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

  18. w L"VEJP6OJU4VC5ZQF@"6$POWFSUFS w L"VEJP6OJU4VC5ZQF@"6J1PE5JNF0UIFS w L"VEJP6OJU4VC5ZQF@%FGFSSFE3FOEFSFS w L"VEJP6OJU4VC5ZQF@.FSHFS w L"VEJP6OJU4VC5ZQF@.VMUJ4QMJUUFS

    w L"VEJP6OJU4VC5ZQF@/FX5JNF1JUDI w L"VEJP6OJU4VC5ZQF@3PVOE5SJQ""$ kAudioUnitType_FormatConverter w L"VEJP6OJU4VC5ZQF@4QMJUUFS w L"VEJP6OJU4VC5ZQF@7BSJTQFFE
  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
  20. w L"VEJP6OJU4VC5ZQF@.VMUJ$IBOOFM.JYFS w ෳ਺ͷνϟϯωϧΛϛοΫε͢ΔΦʔσΟΦϢχοτ w L"VEJP6OJU4VC5ZQF@.BUSJY.JYFS w ෳ਺νϟϯωϧΛͦͷ··ѻ͏ΦʔσΟΦϢχοτ kAudioUnitType_Mixer

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

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

  23. AVAudioSession 3.

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

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

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

  27. w EFGBVMU w ௨ৗ࣌͸ͪ͜ΒΛબ୒ w WPJDF$IBU WJEFP$IBU  w "VEJP6OJUͷ7PJDF1SPDFTTJOH*0͕༗ޮʹͳΔ

    w NPWJF1MBZCBDL w εςϨΦ͕ڧԽ͞ΕΔ w TQPLFO"VEJP w Ի੠ͷׂΓࠐΈ࣌ʹҰ࣌தஅ͢Δͱ͖ʹ࢖͏ʢΧʔφϏήʔγϣϯͷҊ಺ͳͲʣ Mode
  28. w BNCJFOU w ϩοΫͨ͠৔߹΍αΠϨϯτʹͨ͠৔߹͸Ի͕ϛϡʔτʹͳΔ w QMBZCBDL w BNCJFOUͱ͸ҟͳΓɺϩοΫͨ͠৔߹΍αΠϨϯτʹͨ͠৔߹Ͱ΋Ի͸ྲྀΕΔ w SFDPSE

    w ࿥Ի͢Δ৔߹ʹ࢖͏ɻ࿥Ի͠ͳ͕ΒԿ͔ྲྀ͍ͨ͠৔߹͸QMBZ"OE3FDPSEΛ࢖ ͏ɻ Category
  29. w NJY8JUI0UIFST w ଞͷΞϓϦ͔ΒׂΓࠐΈ͕͋ͬͯ΋࠶ੜΛதஅ͠ͳ͍Φϓγϣϯ w BMMPX#MVFUPPUI w #MVFUPPUIΛϧʔςΟϯάͰ͖ΔΑ͏ʹ͢Δ w BMMPX"JS1MBZ

    w "JS1MBZΛϧʔςΟϯάͰ͖ΔΑ͏ʹ͢Δ w EFGBVMU5P4QFBLFS w ϧʔςΟϯάΛ಺ଂεϐʔΧʔ༏ઌʹ͢Δ Category Options
  30. w TFU1SFGFSSFE4BNQMF3BUF w αϯϓϧϨʔτΛࢦఆͰ͖Δɻ͋͘·Ͱ΋༏ઌͳͷͰɺඞͣ͠΋ࢦఆ͞ΕͨαϯϓϧϨʔτ͕࢖ΘΕΔͱ ͸ݶΒͳ͍ɻ w TFU1SFGFSSFE%BUB4PVSDF w ͲͷϚΠΫΛ࢖͏͔ࢦఆ͢Δ͜ͱ͕Ͱ͖Δɻલ໘ɾഎ໘Ͱ੾Γସ͍͑ͨͱ͖ʹ࢖͏ɻ w

    TFU1SFGFSSFE*OQVU w ೖྗͷϙʔτΛࢦఆ͢Δ͜ͱ͕Ͱ͖Δɻ64#΍#MVFUPPUIΛ༏ઌͯ͠࢖͍͍ͨͳͲɻ w PWFSSJEF0VUQVU"VEJP1PSU w ग़ྗϙʔτΛ্ॻ͖Ͱ͖Δɻ͕ɺ͜ΕΛࢦఆ͢Δͱڍಈ͕͓͔͘͠ͳΔ͜ͱ͕Α͘ଟ͍ɻ Other
  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
  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
  33. AVAudioEngine 4.

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

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

    w "6(SBQIʹൺ΂Δͱɺ"7'PVOEBUJPOʹҠ੶ͨͨ͠Ίɺͱͯ΋ѻ͍΍͘͢ͳ͍ͬͯΔ AVAudioEngine
  36. AVAudioNode 5.

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

  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
  39. AVAudioEngine 1MBZFS/PEF .JYFS/PEF 0VUQVU/PEF *OQVU/PEF

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

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

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

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

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

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

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

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

  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
  49. Examples 6.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  75. ·ͱΊ 7.

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

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

  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 ࢀߟࢿྉ
  79. ͦͷଞ ೔໨ͷ-5Ͱ"QQMF-PX-BUFODZ)-4ͷ࿩Λ͠·͢ 88%$Ͱൃද͞Εͨ಺༰ΛΈΜͳͰ෮श͠·͠ΐ͏ʂ

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