今回もiOSアプリ制作シリーズです。これまで学んだ録音・再生・フーリエ変換・オーバーラップ・窓関数・聴感補正・dB変換を全部盛りにしてSwiftUIによる平均化FFTを実行するアプリを作ってみます。まずは個別のコードを紹介し、最後にコピペ可能な全コードを載せて実行結果を説明します。
続きを読むSwift
SwiftUIで時間波形に窓関数をかけてグラフ表示する方法
フーリエ変換をする際、漏れ誤差の改善のために一般的に窓関数を用います。ここではiOSアプリ開発でも窓関数の適用ができるようSwiftによる窓関数の適用方法を紹介し、実際に時間波形に対して適用、グラフ表示まで行います。
続きを読むSwiftで時間波形をオーバーラップ抽出するコード
長時間の信号処理を行う場合、信号を細かくフレームに区切り、さらにフレームを重ねながら信号を抽出するオーバーラップという手法があります。過去にPythonで実装したこのオーバーラップ処理を、今回はiOSアプリで動作させるためにSwiftで実装する方法と検証結果を紹介します。
続きを読むSwiftで高速フーリエ変換(FFT)を実装する方法
iOSデバイスで高速フーリエ変換を実装する方法を紹介します。この記事では、まずはじめに一般的な高速フーリエ変換(FFT)であるCooley-Tukey法をSwiftで検証し、その後Accelerateというライブラリによる実装方法も併せて紹介します。
続きを読むPythonで検証しながらSwiftで離散フーリエ変換を実装する
離散フーリエ変換は単純な式で実装できる信号処理アルゴリズムです。Pythonは豊富なライブラリについ頼ってしまいますが、他の言語でも自由に実装できるように基本を学びましょう。ここではPythonであえてforループを使った離散フーリエ変換の方法を学び、次に同様の結果が得られるSwiftコードを紹介します。
続きを読むSwiftUI/TabViewでスワイプによる画面遷移を実装する方法
モバイルアプリは画面が小さいため「画面遷移」があると便利です。特にタッチパネルに対応したiOSデバイスならスワイプ動作による画面遷移を使いたくなります。ここではSwiftUIのTabViewを使ってスワイプによる画面遷移機能を実装する方法や、各画面間におけるデータのやり取りについて説明します。
続きを読むSwiftUIとAVFoundationで音声を再生する方法
Swiftで書いたコードに音声を再生する機能を追加します。音声の再生にはAVFoundationを使用し、SwiftUIで作成したボタンウィジェットと組み合わせましょう。ここではまず簡単な効果音を鳴らすコードを作成し、次に録音した音をそのまま再生する方法を紹介します。
続きを読むSwiftUI/iOSアプリ:録音データをChartsでグラフ化する
iOSデバイスのマイクをAVFoundationで制御し録音機能を使えるようになりました。さらにSwiftUI標準のグラフ表示ライブラリであるChartsも学んだので、いよいよ録音した結果をグラフ表示させたいと思います。ここでは録音やグラフ表示に必要なSwiftUIコードを紹介します。
続きを読むSwiftUI:iOS16から追加されたChartsでグラフを作成
iOS16、Xcode14から標準グラフ描画ライブラリにChartsが追加されました。ここではまだ情報が少ないChartsを使って、技術プログラムでは必須の散布図や折れ線グラフを作成する方法を紹介します。SwiftUI初心者の筆者が調べながら書いているので、同じく初心者の人に参考になると思います。
続きを読むSwift入門:最低限覚えておく基礎文法の備忘録
SwiftでiOSアプリを開発するために、まずは基本的な使い方を学びます。ここでは最低限のプログラミングとして、構造体やループ、条件分岐や配列の処理を行い、必要に応じてPythonとの対応についても記載します。Swift初心者の方は是非参考にしてみてください。
続きを読む