2015年5月17日日曜日

携帯契約の見直し

以前契約したemobile(現Y!mobile)のスマホプランの2年縛りがそろそろ解けます。
3年目以降は値段が上がるので、当然ながら2年縛りが解けると同時に解約しますが、その次のプランをどうするかについて考えてみました。

私がスマホを持ち始めたのは2012年初頭からで、今までの契約の流れは次の通り。

1回目 : auのスマートバリュー(2012/2月ぐらいから)
・端末はMotorola RAZR
・端末は一括購入にして縛りナシ
・月額はなんやかんやで5000円ちょっとだったかな?
・トータルの回線費用(光通信込)は月額1万円ちょっとでした

2回目 : bmobileのmvno(2012年秋ごろだっただろうか...)
・RAZRをICSにアップデートしたらクソ端末になったことにキレて契約変更
・何故かMotorolaに向かうべき怒りの矛先がキャリアにいく^^;
・そこで当時出始めたmvnoを使ってみることにする
・端末はソニーエリクソンのXperia Ray(SO-03C)をAmazonで調達(1万円ぐらい)
・最初は月額980円のプランで加入
・2~3カ月ぐらいで1GB/月(だったかな?)の高速プランに変更
・データ通信専用なので、ガラケー(au)と2台持ち
・ガラケーはスマホ購入前に使っていたものをそのまま使用
・トータルの回線費用(光通信込)は月額7千円ぐらいでした

3回目 : emobileのスマホLTEプラン(2013年9月から)
・端末はGL07S
・マンションに無料の無線LANが敷設されたのを契機にmvnoよりもややゴージャスなプランに変更してみようかというノリで契約変更(あと、SO-03Cだとrootを取らないとテザリングができない点も変更動機のひとつ。テザリングできるプランか端末を探していた時に偶然見つけたのがemobile)
・月額はauのガラケーと合わせて5000円ちょっとぐらい
・ガラケー(au)の契約を切りたかったが、キャリアメールが使えなくなると連絡が取れない人が居るので、ガラケーの契約も保留
・端末自体は割とまともな気がするがJellyBeanが重すぎてクソ端末というのが総評
(KitKatアップデートを期待したが結局されず)
・トータルの回線費用は月額5千円ぐらい

そういえば、iPhone歴はゼロですね。
一応、iPhone 3GSなら持ってますが、自作アプリのデバッグ専用機なので、iPhone用に回線契約をしたことはありません。(2回目の時にたまにsimを然して遊んだことならありますが、3回目のsimはGL07Sじゃないと使えないクソsimだったので、長らくネット回線に繋いでいません)
ぶっちゃけ、3回目のタイミングでiPhoneにしようかとも思ったのですが、iPhone5sで3.5インチ端末が出なかったのでiPhoneを見限りました。スマホに4インチはデカすぎる。スマホのサイズとしてはiPhone 4s以前の3.5インチがベストだと思います。そのサイズだとやり難いこと(電子書籍を見たりなど)はiPadやPCなどを使えば良いんじゃないかと。何より、AndroidでテザリングすればiPod touchで十分iPhoneの代わりになり、それで初期費用5万円ぐらい+無駄プラン3千円/月ほど浮くことを考えるとiPhoneはコスパが悪すぎる。(当然のことですが、皆TCOを見た上でiPhoneを選んでいるんでしょうけど、皆ブルジョアジーなんですかね?その割にはiPhoneユーザーのアプリへの金払いはAndroidと比べてかなり悪い印象ですが)

若干話しが逸れましたが、要するに3.5インチの端末が欲しかったので、Polaroid Piguという端末を購入。現行の日本で買える端末で、KitKatが載っていて3.5インチというとこの端末しか見つからなかったので、迷う余地が無かった。(ついでに値段的な意味でも迷う余地が無かった)
新品価格
¥9,650から
(2015/5/17 15:35時点)

OCNのSIMカード(音声対応)付きで1万円を切るという激安端末です。
SIMカードは3000円なので、実質6千円ぐらい。

ガラケーをMNP & 解約してOCNの契約に切り替えつつ、emobileの契約も切ろうかと思っています。キャリアメールについては、今では親と連絡を取る時ぐらいしか使わず、親にsms(Cメール)の使い方を教えておき、基本的に連絡はsmsでするようにお願いすることで慣れてもらったので、心置きなく契約を切れます。あと、色々な行政手続きやらをする時に電話番号は割と必要なので、音声通話の契約はまだまだ切ることができません。

という訳で2012年末ごろから続いていた2台持ち生活に、ようやくピリオドが打てそうです。

トータルの回線費用は月額2千円ぐらい
ウハウハです。
たぶん、コレが最低ラインかなと思います。
別にそれほどお金に困っている訳ではない(むしろ、お金を取ろうと思えば取れなくもない東方VGSを無償で続けていることからもお分かり頂けるように、経済的には結構余裕がある方だと思う)のですが、シミュレーションゲームをプレイする感覚でTCOを最適化していくのは楽しい。
たぶん、これはゲーマーの性です。

ちなみに、Polaroid Piguですが、タッチ反応がイマイチなのでゲームには向きません。
ただ、Androidでは長らくゲームを遊んでいないので問題ありません。
Android用のゲームを作っている人間がこう言うのもアレかもしれませんが。
前のGL07Sもゲーム向きではなかった(タッチ反応は良かったがOSの負荷が高すぎて遊べたものではなかった)ので、スマホ用のゲームを遊ぶ時はもっぱらiPod touchを使っています。オフラインゲームだけでなくソーシャルゲームもAndroidでテザリングするかWi-Fi環境でiPod touchでプレイする感じで十分楽しめます。

というより、そもそもガッツリゲームを遊びたければゲーム専用機(DSなりPSP)で遊ぶので、スマホでわざわざゲームをすること自体が少なくなったきます。スマホを持ちたてホヤホヤの頃は物見遊山でプレイしてましたが、やっぱりタッチ限定というのは操作性が悪い。スマホ唯一の利点はポータビリティかもしれませんが、私は外出先では基本ゲームをやらないタイプなので、その利点も無いに等しいです。

東方VGSについては、Polaroid Piguでも快適に動きます。
東方VGSの動作の快適さで言えばGL07S(定価4万円ぐらいのミドルクラス)よりも遥かに快適。
気になった点としては、Chromeでブラウジングしながら聴くとたまに飛びするぐらい。でも、スマートニュースとかなら飛ばないので、これはChromeの方に問題がある気がします。

2015年5月13日水曜日

新しい音源(検討メモ)

VGSの波形メモリ音源とはまた別のソフトウェアシンセサイザを作ってみたくなったので、基礎的な仕組みについて考えた内容をメモっておきます。
/* description: 波形情報をメモリではなく全て演算ベースにする新音源用のメモ */
/* とりあえず、サイン波、矩形波、ノコギリ波のみ */
/* ノイズ発生装置は後回し */
#include <math.h>
#define PI 3.1415926535897932
#define PI2 6.2831853071795864
double calcwav_sin(double r)
{
return sin(r);
}
double calcwav_square(double r)
{
r=fmod(r,PI2);
if(r<0.0) r+=PI2;
if(r<PI) return 1.0;
return -1.0;
}
double calcwav_pulse(double r)
{
r=fmod(r,PI2);
if(r<0.0) r+=PI2;
r/=PI;
r-=1.0;
return r;
}
view raw gistfile1.c hosted with ❤ by GitHub

上記はその新音源の波形生成ルーチンです。
波形データをメモリに持つ仕組みではなく、関数で求める形。
サイン波、矩形波、ノコギリ波の3つ。
2πで1Hzということになります。

【音程算出】
サンプリング周波数44100Hzで音程周波数440Hz(ラ)を出す場合、
2π ÷ (44100 ÷ 440)
で、radの増分が求まるという感じです。
だいたい0.063ぐらいかな。
(そして、radのカーソルをチャネル毎に持たせる)
それを毎回計算すると処理性能が悪くなってしまうので、音程ごとの増分値をテーブルに持たせれば、性能的に良い感じになる筈です。

テーブルに持たせる増分値を求めるプログラムを作成。
/* 88鍵ピアノの音階周波数 & サンプリング周波数1Hzあたりのラジアン増分を求めて表示 */
#include <stdio.h>
#define S 44100.00
#define B 1.0594631
#define PI 3.1415926535897932
#define PI2 6.2831853071795864
int main(int argc,char* argv[])
{
const char* t[12]={
"A "
,"A#"
,"B "
,"C "
,"C#"
,"D "
,"D#"
,"E "
,"F "
,"F#"
,"G "
,"G#"
};
double hz[88];
int n=0;
double a=13.75;
double b;
for(n=0;n<88;n++) {
if(n%12==0) {
a*=2.0;
hz[n]=a;
} else {
hz[n] = hz[n-1] * B;
}
b=PI2/(S/hz[n]);
printf("%s : %9.4fHz : %.4f rad/1Hz\n",t[n%12],hz[n],b);
}
return 0;
}
view raw piano.c hosted with ❤ by GitHub


上記プログラムで求めたテーブルは↓のような感じ
double ARTBL[88] = {
0.0039180860759056
,0.0041510676200458
,0.0043979029690434
,0.0046594159130819
,0.0049364792274631
,0.0052300175854136
,0.0055410106440968
,0.0058704963141278
,0.0062195742235045
,0.0065894093875141
,0.0069812360968648
,0.0073963620370163
,0.0078361721518113
,0.0083021352400916
,0.0087958059380867
,0.0093188318261638
,0.0098729584549261
,0.0104600351708273
,0.0110820212881937
,0.0117409926282557
,0.0124391484470089
,0.0131788187750282
,0.0139624721937296
,0.0147927240740326
,0.0156723443036225
,0.0166042704801833
,0.0175916118761735
,0.0186376636523276
,0.0197459169098523
,0.0209200703416545
,0.0221640425763874
,0.0234819852565114
,0.0248782968940178
,0.0263576375500565
,0.0279249443874593
,0.0295854481480652
,0.0313446886072451
,0.0332085409603666
,0.0351832237523470
,0.0372753273046551
,0.0394918338197046
,0.0418401406833091
,0.0443280851527748
,0.0469639705130227
,0.0497565937880356
,0.0527152751001130
,0.0558498887749185
,0.0591708962961304
,0.0626893772144902
,0.0664170819207332
,0.0703664475046939
,0.0745506546093103
,0.0789836676394092
,0.0836802813666181
,0.0886561703055495
,0.0939279410260454
,0.0995131875760713
,0.1054305502002260
,0.1116997775498371
,0.1183417925922608
,0.1253787544289804
,0.1328341638414663
,0.1407328950093879
,0.1491013092186206
,0.1579673352788184
,0.1673605627332363
,0.1773123406110990
,0.1878558820520909
,0.1990263751521426
,0.2108611004004520
,0.2233995550996741
,0.2366835851845215
,0.2507575088579608
,0.2656683276829326
,0.2814657900187757
,0.2982026184372412
,0.3159346705576367
,0.3347211254664726
,0.3546246812221980
,0.3757117641041818
,0.3980527503042852
,0.4217222008009040
,0.4467991101993482
,0.4733671703690431
,0.5015150177159216
,0.5313366553658653
,0.5629315800375514
,0.5964052368744823
};
view raw artbl.c hosted with ❤ by GitHub


【波形合成】
基本波形をベースに合成波形も出力できるようにすれば、出力できる音色数は7種類。
- sin
- square
- pulse
- sin + square
- sin + pulse
- square + pulse
- sin + square + pulse
あとはノイズ1種類 + 7種それぞれとノイズの合成で15種類

合理的ではないものを作りたい

ここ最近、実機版の東方VGSの開発が忙しくて、東方VGSの曲追加が滞っています。 東方VGS(実機版)のデザインを作りながら検討中。基本レトロUIベースですがシークバーはモダンに倣おうかな…とか pic.twitter.com/YOYprlDsYD — SUZUKI PLAN (...