2009年12月29日火曜日



f:id:bs-android:20090215001008p:image


2010/02/19にスイートバレーから拡がるITとものづくりネットワーク様と財団法人ソフトピアジャパン様主催の組込みソフトウェア技術動向セミナーに登壇することになりました。


詳しい内容は以下の通りです。






日時


2009/02/19(金) 13:30~16:40 (受付開始13:15~)





会場



大きな地図で見る


岐阜県大垣市加賀野4丁目1番地7


ソフトピアジャパンセンタービル 11階 中会議室3





主催


スイートバレーから拡がるITとものづくりネットワーク様、財団法人ソフトピアジャパン様





内容


「戦略的再利用『プロダクトライン』 ~その本質とは何か~」

講師:山崎 進 氏(北九州市立大学 国際環境工学部 情報メディア工学科 講師)


概要:プロダクトラインに関する素朴な疑問「プロダクトラインとは何か」「今までと何が違うのか」に学の立場からお答えします。次に、プロダクトラインを成功させる4つの鍵とプロダクトラインの全体像であるBAPOモデル、いくつかの重要な技術要素を紹介します。最後に、最も重要なポイントであるビジネス戦略との関わりについて方向性を示します。





「Androidのポテンシャルを引き出す ~Androidの波に乗り遅れないための基本知識~」

講師:近藤 昭雄((株)ブリリアントサービス 技術部 研究開発課 Android担当リーダー  / 日本Androidの会 組み込みWGリーダー)


概要:Androidの概要の解説と、そのポテンシャルによってどんなことができるようになるのかを解説します。また、Androidが拓く未開のフロンティアに旗印を立て、先行者利益を得るにはどうすればよいかのヒントを提供します。





対象者


スイートバレーから拡がるITとものづくりネットワーク会員、本テーマに関心がある企業など、広く一般の方





定員


40名(先着順・事前申込が必要です)





参加費


無料





申し込み


こちらのページからお申し込みください。


http://it-mono.jp/news/20100219.html






お近くの方は是非ご参加ください。





2010/02/19の組込みソフトウェア技術動向セミナーに登壇します



f:id:bs-android:20090215001008p:image


2010/02/19にスイートバレーから拡がるITとものづくりネットワーク様と財団法人ソフトピアジャパン様主催の組込みソフトウェア技術動向セミナーに登壇することになりました。


詳しい内容は以下の通りです。






日時


2009/02/19(金) 13:30~16:40 (受付開始13:15~)





会場



大きな地図で見る


岐阜県大垣市加賀野4丁目1番地7


ソフトピアジャパンセンタービル 11階 中会議室3





主催


スイートバレーから拡がるITとものづくりネットワーク様、財団法人ソフトピアジャパン様





内容


「戦略的再利用『プロダクトライン』 ~その本質とは何か~」

講師:山崎 進 氏(北九州市立大学 国際環境工学部 情報メディア工学科 講師)


概要:プロダクトラインに関する素朴な疑問「プロダクトラインとは何か」「今までと何が違うのか」に学の立場からお答えします。次に、プロダクトラインを成功させる4つの鍵とプロダクトラインの全体像であるBAPOモデル、いくつかの重要な技術要素を紹介します。最後に、最も重要なポイントであるビジネス戦略との関わりについて方向性を示します。





「Androidのポテンシャルを引き出す ~Androidの波に乗り遅れないための基本知識~」

講師:近藤 昭雄((株)ブリリアントサービス 技術部 研究開発課 Android担当リーダー  / 日本Androidの会 組み込みWGリーダー)


概要:Androidの概要の解説と、そのポテンシャルによってどんなことができるようになるのかを解説します。また、Androidが拓く未開のフロンティアに旗印を立て、先行者利益を得るにはどうすればよいかのヒントを提供します。





対象者


スイートバレーから拡がるITとものづくりネットワーク会員、本テーマに関心がある企業など、広く一般の方





定員


40名(先着順・事前申込が必要です)





参加費


無料





申し込み


こちらのページからお申し込みください。


http://it-mono.jp/news/20100219.html






お近くの方は是非ご参加ください。





2009年12月23日水曜日



f:id:bs-android:20091119161132p:image


先日クライアントソースコード・WebAPIを公開しましたUki2Serverですが、「まずデバッグできる環境を作成して動作・実装を把握しつつ改良・リビルドしてみたい!」という方の為に簡単ではありますがEclipseでの環境構築の仕方を以下に記述致しました。


また、今後不定期ではありますが、ソースコードについての解説も掲載していく予定です。


実施環境


MacOSX 10.6.2


Eclipse3.5


AndroidSDK for MacOSX 2009/12/21 時点


ADT0.9.5


※尚、Eclipseを用いAndroidアプリ開発が可能な環境を構築済みである前提で記述してあります。


ソースコードの取得


・ターミナルウィンドウ(コマンドプロンプト)から下記のように入力しソースコードを取得します。


「trunk」下にディレクトリが「UkiukiView」「OpenAR」の2つが作成されることになります。



mkdir ~/UkiukiView
cd ~/UkiukiView
svn checkout http://open-ar.googlecode.com/svn/trunk/





「OpenAR」プロジェクトの作成


・Eclipseを起動し、"新規Javaプロジェクトの作成"で"外部ソースからプロジェクトを作成"「OpenAR」のディレクトリを指定します。


f:id:bs-android:20091223020921p:image





・"次へ"を押下し"ライブラリ"タブで"外部JARの追加"からAndroidSDK環境下にある"android.jar"と"maps.jar"を追加します。


この時にJREライブラリは除去します。


f:id:bs-android:20091223020922p:image





「UkiukiView」プロジェクトの作成


・"新規Androidプロジェクトの作成"で"外部ソースからプロジェクトを作成"「UkiukiView」のディレクトリを指定し完了を押下します。


f:id:bs-android:20091223020923p:image





・"パッケージ・エクスプローラ"の「UkiukiView」で右クリックから"プロパティー""Javaのビルドパス"と選択します。


f:id:bs-android:20091223020924p:image


・"ライブラリ"タブで"JARの追加"から「OpenAR」内にある"j_scalc.jar"と"OpenAR.jar"を追加します。


f:id:bs-android:20091223020925p:imagef:id:bs-android:20091223020926p:image


・"プロジェクト"タブで「OpenAR」を追加します。


f:id:bs-android:20091223020928p:image


・最後に"GoogleMapsAPIキー"を開発環境に合わせて、"Uki2ServerAPIキー"を開発者毎に書き換えます。


いずれも取得にはGoogleアカウントが必要となります。


下記ファイル中に"replace your api key"の文字列がありますので取得したAPIキーへ置換してください。


GoogleMapsAPIキー:"res/layout/frame.xml"


Uki2ServerAPIキー:"src/Uki2ServerApi.java"


Uki2ServerAPIキー取得





オープンソースARクライアント開発環境導入編



f:id:bs-android:20091119161132p:image


先日クライアントソースコード・WebAPIを公開しましたUki2Serverですが、「まずデバッグできる環境を作成して動作・実装を把握しつつ改良・リビルドしてみたい!」という方の為に簡単ではありますがEclipseでの環境構築の仕方を以下に記述致しました。


また、今後不定期ではありますが、ソースコードについての解説も掲載していく予定です。


実施環境


MacOSX 10.6.2


Eclipse3.5


AndroidSDK for MacOSX 2009/12/21 時点


ADT0.9.5


※尚、Eclipseを用いAndroidアプリ開発が可能な環境を構築済みである前提で記述してあります。


ソースコードの取得


・ターミナルウィンドウ(コマンドプロンプト)から下記のように入力しソースコードを取得します。


「trunk」下にディレクトリが「UkiukiView」「OpenAR」の2つが作成されることになります。



mkdir ~/UkiukiView
cd ~/UkiukiView
svn checkout http://open-ar.googlecode.com/svn/trunk/





「OpenAR」プロジェクトの作成


・Eclipseを起動し、"新規Javaプロジェクトの作成"で"外部ソースからプロジェクトを作成"「OpenAR」のディレクトリを指定します。


f:id:bs-android:20091223020921p:image





・"次へ"を押下し"ライブラリ"タブで"外部JARの追加"からAndroidSDK環境下にある"android.jar"と"maps.jar"を追加します。


この時にJREライブラリは除去します。


f:id:bs-android:20091223020922p:image





「UkiukiView」プロジェクトの作成


・"新規Androidプロジェクトの作成"で"外部ソースからプロジェクトを作成"「UkiukiView」のディレクトリを指定し完了を押下します。


f:id:bs-android:20091223020923p:image





・"パッケージ・エクスプローラ"の「UkiukiView」で右クリックから"プロパティー""Javaのビルドパス"と選択します。


f:id:bs-android:20091223020924p:image


・"ライブラリ"タブで"JARの追加"から「OpenAR」内にある"j_scalc.jar"と"OpenAR.jar"を追加します。


f:id:bs-android:20091223020925p:imagef:id:bs-android:20091223020926p:image


・"プロジェクト"タブで「OpenAR」を追加します。


f:id:bs-android:20091223020928p:image


・最後に"GoogleMapsAPIキー"を開発環境に合わせて、"Uki2ServerAPIキー"を開発者毎に書き換えます。


いずれも取得にはGoogleアカウントが必要となります。


下記ファイル中に"replace your api key"の文字列がありますので取得したAPIキーへ置換してください。


GoogleMapsAPIキー:"res/layout/frame.xml"


Uki2ServerAPIキー:"src/Uki2ServerApi.java"


Uki2ServerAPIキー取得





2009年12月15日火曜日



f:id:bs-android:20090616170847j:image


ITサービス様がBeagleBoard上のAndroidでAudioのダウンサンプリング動作を実装してくれましたので、その成果を公開させていただきたいと思います。





1.はじめに


 昨今話題となっているAndroid。既に多くの企業が参入しているなか、我々もキーワードとして注目していました。


そんな中、2009年度の組込み総合技術展に参加し、手作りAndroidケータイを拝見しながら、我々も何かをAndroidで作ってみようということで、Audioのダウンサンプリングを作成する運びになりました。





なぜAudioダウンサンプリングなのかというと・・・・


・BeagleBoard Rev C3 での公開実績はまだ無い


・Androidを作成の中で把握する


・Audio,Videoといったメディアに必要な部分の構造を理解し、カスタマイズできるようになる


といった所が挙げられます。





作成したAudioダウンサンプリング処理について、Android内のAudio入出力の流れを交えながら書いていきたいと思います。





1.1.ダウンサンプリングシステムについて

 BeagleBoardで起動するAndroidを使用し、Audioのサンプリング周波数を1/2にして再生するシステムを作成します。AudioのデバイスドライバにはAlsa Driverを用いることとします。


システム作成において、追加する内容は以下二点です。


・ ダウンサンプリング処理


・ ダウンサンプリング ON / OFFコマンド





1.2使用環境

 今回のダウンサンプリングシステムを導入した環境は以下の通りです。





表1.使用環境一覧











使用環境一覧
メインボードBeagleBoard Rev.C3
Android VerAndroid 1.6(Donut)
Audio DriverALSA
Android Kernel Ver2.6.29(embinuxより取得)
PC環境Ubuntu 8.10




□環境設定


 主にブリリアントサービス様 のRev.C2立ち上げの資料を参考にさせていただきました。ソースコードのVerに合わせ、Androidの初期化設定ファイルである、init.rcの内容を変更しました。





2.既存の音楽再生の流れ


□Android内のAudio処理の流れ


 Android内のAudioの処理に新たな機能を追加する為に、Android上でのAudioの流れを簡略図で表した物が下図です。


 Javaアプリケーション内で、MediaPlayerクラスのメソッドを呼ぶことで、フレームワーク内でいくつかのコマンドが作成されます。


コマンドはOpencore内のキューを用いてスケジューリングされ、実行されます。


Opencore内にてコマンドが実行されることで、Audio データのデコードやAudio再生の処理が起動し、Driver、HardWareへと処理が渡り、音楽が再生されます。


f:id:bs-android:20091214200804j:image:w400


図1.Android Audio処理の流れ図





3.システム作成での変更点


□ダウンサンプリングシステムの作成


 2節で取り上げたAndroid内のAudio処理の流れにおいて、Javaフレームワーク内に「ダウンサンプリング ON / OFF コマンド」を、Android ミドル部分Opencore内に「ダウンサンプリング処理」を追加します。


 2点を追加することで、Audioの1/2倍ダウンサンプリングに成功しています。以下項目にて詳細を説明します。





3.1.ダウンサンプリング ON / OFFコマンドの追加

 AndroidフレームワークのMediaPlayerクラスにダウンサンプリングコマンドを追加します。


 ダウンサンプリングコマンドは、JavaアプリケーションからダウンサンプリングのON/OFFを受け取り、Opencore内部に追加するダウンサンプリングの処理部分まで渡します。


以下に詳細実装方法を記します。





3.1.1.JAVAのソース変更箇所

 フレームワークに追加を行ったため、JAVAアプリケーションもダウンサンプリングコマンドを受け渡す処理を追加する必要があります。


処理を追加したアプリケーションのソースコードは下図のようになります。





f:id:bs-android:20091214201157j:image


図2.JAVAアプリケーションからの追加コマンドの使用方法





コマンドを追加することにより既存の再生関数(start())との変更点は下図のようになります。





f:id:bs-android:20091214201242j:image


図3.既存の再生関数との変更点





3.1.2.ソース変更後の処理シーケンス

 コマンドを追加した後の再生関数の処理シーケンスは下図のようになります。





f:id:bs-android:20091214201322j:image


図4.ソース変更後の処理シーケンス





3.1.3.実装箇所

 ダウンサンプリングコマンドで修正を加えたソースは以下の通りです。





表2. ダウンサンプリング ON / OFFコマンド ソース変更点一覧


f:id:bs-android:20091214201359j:image





3.2.ダウンサンプリング処理の変更点

3.2.1.Opencore内の処理の流れ

 Androidにデフォルトで備わっているMediaPlayerであるOpencoreの処理の流れの概略を下図に記述しました。





f:id:bs-android:20091214201450j:image


f:id:bs-android:20091214202304p:image


図5.Android Audio処理の流れ





今回のダウンサンプリングの処理では、Audioのデコード後データが表面化している、以下関数内で行うことにします。






○FilePath

android_root/external/opencore/android/android_audio_output.cpp

○関数名

AndroidAudioOutput::writeAudioBuffer()






3.2.2.ダウンサンプリング処理と追加内容

 ダウンサンプリングの処理の概念に関しては以下リンクを参考してください。





サンプリング周波数変換





 本システムでは、下記内容で実装します。




○ローパスフィルタ

取得したデコード後のAudioデータについて、4点移動平均を取ることで実装する。ただし、1サンプル量は量子化ビット16bitより、2byteとして扱う。

○間引き

ローパスフィルタを通した後のデータを、1サンプルデータ置きに間引く。ただし本システムでは、Audioデータをステレオ2chデータと考え、1サンプルを L+R の 4byte として扱う。







3.2.3.実装箇所

 追加するダウンサンプリングの処理のフローチャートは下図の通りです。





f:id:bs-android:20091214202419j:image


図6.Android Audio処理の流れ





 これに従い、下記の内容でソースコードの追加変更を行います。


 まず、3.1節にて作成した「 ON / OFF コマンド 」によって作成されるフラグを受け取る部分(getDownSamplFlag関数)を作成します。





f:id:bs-android:20091214202451j:image





 次に、作成したgetSamplFlag関数を使用し、フラグがONであれば現在のサンプリング周波数を1/2倍にします。





f:id:bs-android:20091214202539j:image





 次に、デコード後のAudioデータが表面化した部分にローパスフィルタと間引き処理を挿入します。


ソースコード内「 AudioDownSamplingExec関数 」はダウンサンプリングを行う自作関数です。





f:id:bs-android:20091214202551j:image








 最後に、ダウンサンプリングを行うAudioDownSamplingExec関数を(android_audio_output.cpp)内に記述します。





f:id:bs-android:20091214202614j:image





AudioDownSamplingExec関数内のwhileループ内がローパスフィルタの処理、forループ内が間引き処理に当たります。





4.まとめ


4.1.動作確認済み環境

 作成したシステムの動作確認のために下図のようなテストアプリを作成し、以下表の環境において、動作を確認しました。





f:id:bs-android:20091214202634j:image


図7.アプリケーション実行画面

















 元データとダウンサンプリングされたデータを耳で比較した場合にも、出力された音の質が下がっていることが確認できました。


(特に、元データのサンプリング周波数が48Khz以下の場合に顕著に差を感じました。)





4.2.あとがき

 ダウンサンプリングの処理を行う関数の作成には、まず間引き処理の実装から入りました。


間引き処理のみの実装段階で音楽データが正常に再生されていましたので、後はローパスフィルタを入れるだけ!と作成したフィルタを間引き処理の前に挿入すると・・・





「ザーー・・・」





ほんの一時前まで鳴っていた音楽データが再生されなくなってしまいました。


原因は、移動平均を取る際にunsignedデータのまま計算していたことでした。


単純な話でしたが、気づくまではあれやこれやと修正をかけ、再生してみるの繰り返しでした。。。


signed / unsigned には気をつけようと学んだ入社一年目の新人のあとがきでした。





本システムの説明は以上で終了です。


長々と失礼致しました。


また、内容に間違い等がありましたらご指摘いただけると幸いです。







開発メンバ


 小林 弘典


 藤田 武大


 山形 泰之


 小林 慎治


 鈴木 匠


 嶋田 大輔





窓口担当


 今井利久





株式会社 アイティサービス


 URL http://www.upload-gp.co.jp/


 TEL 06-6910-8780








Android+BeagleBoardでAudioのダウンサンプリング



f:id:bs-android:20090616170847j:image


ITサービス様がBeagleBoard上のAndroidでAudioのダウンサンプリング動作を実装してくれましたので、その成果を公開させていただきたいと思います。





1.はじめに


 昨今話題となっているAndroid。既に多くの企業が参入しているなか、我々もキーワードとして注目していました。


そんな中、2009年度の組込み総合技術展に参加し、手作りAndroidケータイを拝見しながら、我々も何かをAndroidで作ってみようということで、Audioのダウンサンプリングを作成する運びになりました。





なぜAudioダウンサンプリングなのかというと・・・・


・BeagleBoard Rev C3 での公開実績はまだ無い


・Androidを作成の中で把握する


・Audio,Videoといったメディアに必要な部分の構造を理解し、カスタマイズできるようになる


といった所が挙げられます。





作成したAudioダウンサンプリング処理について、Android内のAudio入出力の流れを交えながら書いていきたいと思います。





1.1.ダウンサンプリングシステムについて

 BeagleBoardで起動するAndroidを使用し、Audioのサンプリング周波数を1/2にして再生するシステムを作成します。AudioのデバイスドライバにはAlsa Driverを用いることとします。


システム作成において、追加する内容は以下二点です。


・ ダウンサンプリング処理


・ ダウンサンプリング ON / OFFコマンド





1.2使用環境

 今回のダウンサンプリングシステムを導入した環境は以下の通りです。





表1.使用環境一覧











使用環境一覧
メインボードBeagleBoard Rev.C3
Android VerAndroid 1.6(Donut)
Audio DriverALSA
Android Kernel Ver2.6.29(embinuxより取得)
PC環境Ubuntu 8.10




□環境設定


 主にブリリアントサービス様 のRev.C2立ち上げの資料を参考にさせていただきました。ソースコードのVerに合わせ、Androidの初期化設定ファイルである、init.rcの内容を変更しました。





2.既存の音楽再生の流れ


□Android内のAudio処理の流れ


 Android内のAudioの処理に新たな機能を追加する為に、Android上でのAudioの流れを簡略図で表した物が下図です。


 Javaアプリケーション内で、MediaPlayerクラスのメソッドを呼ぶことで、フレームワーク内でいくつかのコマンドが作成されます。


コマンドはOpencore内のキューを用いてスケジューリングされ、実行されます。


Opencore内にてコマンドが実行されることで、Audio データのデコードやAudio再生の処理が起動し、Driver、HardWareへと処理が渡り、音楽が再生されます。


f:id:bs-android:20091214200804j:image:w400


図1.Android Audio処理の流れ図





3.システム作成での変更点


□ダウンサンプリングシステムの作成


 2節で取り上げたAndroid内のAudio処理の流れにおいて、Javaフレームワーク内に「ダウンサンプリング ON / OFF コマンド」を、Android ミドル部分Opencore内に「ダウンサンプリング処理」を追加します。


 2点を追加することで、Audioの1/2倍ダウンサンプリングに成功しています。以下項目にて詳細を説明します。





3.1.ダウンサンプリング ON / OFFコマンドの追加

 AndroidフレームワークのMediaPlayerクラスにダウンサンプリングコマンドを追加します。


 ダウンサンプリングコマンドは、JavaアプリケーションからダウンサンプリングのON/OFFを受け取り、Opencore内部に追加するダウンサンプリングの処理部分まで渡します。


以下に詳細実装方法を記します。





3.1.1.JAVAのソース変更箇所

 フレームワークに追加を行ったため、JAVAアプリケーションもダウンサンプリングコマンドを受け渡す処理を追加する必要があります。


処理を追加したアプリケーションのソースコードは下図のようになります。





f:id:bs-android:20091214201157j:image


図2.JAVAアプリケーションからの追加コマンドの使用方法





コマンドを追加することにより既存の再生関数(start())との変更点は下図のようになります。





f:id:bs-android:20091214201242j:image


図3.既存の再生関数との変更点





3.1.2.ソース変更後の処理シーケンス

 コマンドを追加した後の再生関数の処理シーケンスは下図のようになります。





f:id:bs-android:20091214201322j:image


図4.ソース変更後の処理シーケンス





3.1.3.実装箇所

 ダウンサンプリングコマンドで修正を加えたソースは以下の通りです。





表2. ダウンサンプリング ON / OFFコマンド ソース変更点一覧


f:id:bs-android:20091214201359j:image





3.2.ダウンサンプリング処理の変更点

3.2.1.Opencore内の処理の流れ

 Androidにデフォルトで備わっているMediaPlayerであるOpencoreの処理の流れの概略を下図に記述しました。





f:id:bs-android:20091214201450j:image


f:id:bs-android:20091214202304p:image


図5.Android Audio処理の流れ





今回のダウンサンプリングの処理では、Audioのデコード後データが表面化している、以下関数内で行うことにします。






○FilePath

android_root/external/opencore/android/android_audio_output.cpp

○関数名

AndroidAudioOutput::writeAudioBuffer()






3.2.2.ダウンサンプリング処理と追加内容

 ダウンサンプリングの処理の概念に関しては以下リンクを参考してください。





サンプリング周波数変換





 本システムでは、下記内容で実装します。




○ローパスフィルタ

取得したデコード後のAudioデータについて、4点移動平均を取ることで実装する。ただし、1サンプル量は量子化ビット16bitより、2byteとして扱う。

○間引き

ローパスフィルタを通した後のデータを、1サンプルデータ置きに間引く。ただし本システムでは、Audioデータをステレオ2chデータと考え、1サンプルを L+R の 4byte として扱う。







3.2.3.実装箇所

 追加するダウンサンプリングの処理のフローチャートは下図の通りです。





f:id:bs-android:20091214202419j:image


図6.Android Audio処理の流れ





 これに従い、下記の内容でソースコードの追加変更を行います。


 まず、3.1節にて作成した「 ON / OFF コマンド 」によって作成されるフラグを受け取る部分(getDownSamplFlag関数)を作成します。





f:id:bs-android:20091214202451j:image





 次に、作成したgetSamplFlag関数を使用し、フラグがONであれば現在のサンプリング周波数を1/2倍にします。





f:id:bs-android:20091214202539j:image





 次に、デコード後のAudioデータが表面化した部分にローパスフィルタと間引き処理を挿入します。


ソースコード内「 AudioDownSamplingExec関数 」はダウンサンプリングを行う自作関数です。





f:id:bs-android:20091214202551j:image








 最後に、ダウンサンプリングを行うAudioDownSamplingExec関数を(android_audio_output.cpp)内に記述します。





f:id:bs-android:20091214202614j:image





AudioDownSamplingExec関数内のwhileループ内がローパスフィルタの処理、forループ内が間引き処理に当たります。





4.まとめ


4.1.動作確認済み環境

 作成したシステムの動作確認のために下図のようなテストアプリを作成し、以下表の環境において、動作を確認しました。





f:id:bs-android:20091214202634j:image


図7.アプリケーション実行画面

















 元データとダウンサンプリングされたデータを耳で比較した場合にも、出力された音の質が下がっていることが確認できました。


(特に、元データのサンプリング周波数が48Khz以下の場合に顕著に差を感じました。)





4.2.あとがき

 ダウンサンプリングの処理を行う関数の作成には、まず間引き処理の実装から入りました。


間引き処理のみの実装段階で音楽データが正常に再生されていましたので、後はローパスフィルタを入れるだけ!と作成したフィルタを間引き処理の前に挿入すると・・・





「ザーー・・・」





ほんの一時前まで鳴っていた音楽データが再生されなくなってしまいました。


原因は、移動平均を取る際にunsignedデータのまま計算していたことでした。


単純な話でしたが、気づくまではあれやこれやと修正をかけ、再生してみるの繰り返しでした。。。


signed / unsigned には気をつけようと学んだ入社一年目の新人のあとがきでした。





本システムの説明は以上で終了です。


長々と失礼致しました。


また、内容に間違い等がありましたらご指摘いただけると幸いです。







開発メンバ


 小林 弘典


 藤田 武大


 山形 泰之


 小林 慎治


 鈴木 匠


 嶋田 大輔





窓口担当


 今井利久





株式会社 アイティサービス


 URL http://www.upload-gp.co.jp/


 TEL 06-6910-8780








2009年12月3日木曜日



f:id:bs-android:20090902163248p:image


公式発表から、この記事までちょっと時間があいてしまいましたが、弊社が開発に関わったAndroidアプリケーションのスポットメッセージ(株式会社バンプールさま)が、みなさんの投票のお陰でSocialのカテゴリで3位の入賞を果たしました!


Round2でもAndroidのプラットフォームを活かしていた作品はあまり多くなかったので、そのあたりが入賞の決め手かもしれません。





公式発表記事はこちら







入賞者一覧







その他の紹介記事







今後の動向は現時点では何も書けませんが、進展があれば報告していきたいと思います。





ADC2でスポットメッセージが入賞しました!



f:id:bs-android:20090902163248p:image


公式発表から、この記事までちょっと時間があいてしまいましたが、弊社が開発に関わったAndroidアプリケーションのスポットメッセージ(株式会社バンプールさま)が、みなさんの投票のお陰でSocialのカテゴリで3位の入賞を果たしました!


Round2でもAndroidのプラットフォームを活かしていた作品はあまり多くなかったので、そのあたりが入賞の決め手かもしれません。





公式発表記事はこちら







入賞者一覧







その他の紹介記事







今後の動向は現時点では何も書けませんが、進展があれば報告していきたいと思います。





Related Posts Plugin for WordPress, Blogger...