フォルダ内にあるファイルのリストを作成するバッチ処理
ご無沙汰してます。
ちょろっと作ってみました。
使い方:コマンドプロンプトで make_file_list.bat ルートフォルダ 出力ファイル名(フルパス) を実行してください。
フォルダ階層をカンマで区切ったファイル(csv形式)が生成されます。
※フルパスで指定しないと大変なことになります。
※ユーザビリティのことはあんまり考えてません…
※普通に dir /s /b すれば良いことには作ってから気付きました…
ご無沙汰してます。
ちょろっと作ってみました。
使い方:コマンドプロンプトで make_file_list.bat ルートフォルダ 出力ファイル名(フルパス) を実行してください。
フォルダ階層をカンマで区切ったファイル(csv形式)が生成されます。
※フルパスで指定しないと大変なことになります。
※ユーザビリティのことはあんまり考えてません…
※普通に dir /s /b すれば良いことには作ってから気付きました…
HITONEではオーディオの出力に、AudioQueueを使用しています。(AudioToolBox/AudioQueue)
オーディオデバイスに送る波形を自前で作れるので、後々拡張しやすいだろうと思いまして。
今後も音を扱う作品を作っていくつもりですのでね。
さて、HITONEの音源はサイン波です。
今回はAudioQueueのコールバックを使ってスピーカからサイン波を出力してみます。
※iPhone/iPadでの開発ですが、Objective-CではなくC++を使っています。
Objective-C++の話は、どこかでちょこっと触れるかも。
NIAudioRenderer.h
#include <AudioToolbox/AudioQueue.h>
#include “NIDef.h”
#include “NIAudioDef.h”
#define NUM_BUFFERS 3
typedef struct AQCallbackStruct {
AudioQueueRef queue;
NIUint32 frameCount;
AudioQueueBufferRef mBuffers[NUM_BUFFERS];
AudioStreamBasicDescription mDataFormat;
} AQCallbackStruct;
class NIAudioRenderer {
public:
static void Init();
static void Term();
private:
static void AQBufferCallback(void *in, AudioQueueRef inQ, AudioQueueBufferRef outQB);
private:
static AQCallbackStruct _in;
static AudioQueueRef _queue;
static NIUint32 _sampleIndex;
};
#endif // AUDIO_RENDERER_H
/* EOF */
NIAudioRenderer.cpp
AQCallbackStruct NIAudioRenderer::_in;
AudioQueueRef NIAudioRenderer::_queue;
void NIAudioRenderer::AQBufferCallback(void *in, AudioQueueRef inQ, AudioQueueBufferRef outQB)
{
NIFloat floatVal;
NISint16 sampleValue; // -32767 bis +32767
AQCallbackStruct *inData = (AQCallbackStruct *)in;
NISint16 *coreAudioBuffer = (NISint16*) outQB->mAudioData;
if (inData->frameCount > 0) {
outQB->mAudioDataByteSize = 4*inData->frameCount;
for(int i=0; iframeCount*2; i=i+2) {
floatVal = sin(((NIFloat)_sampleIndex * 2 * M_PI * 440) / NI_AUDIO_SAMPLE_RATE);
sampleValue = (NISint16)(floatVal * 32767.0f);
coreAudioBuffer[i] = sampleValue;
coreAudioBuffer[i+1] = sampleValue;
_sampleIndex++;
}
AudioQueueEnqueueBuffer(inQ, outQB, 0, NULL);
} else {
AudioQueueStop(inData->queue, false);
}
}
void NIAudioRenderer::Init()
{
_in.mDataFormat.mSampleRate = NI_AUDIO_SAMPLE_RATE;
_in.mDataFormat.mFormatID = kAudioFormatLinearPCM;
_in.mDataFormat.mFormatFlags = kLinearPCMFormatFlagIsSignedInteger | kAudioFormatFlagIsPacked;
_in.mDataFormat.mBytesPerPacket = 4;
_in.mDataFormat.mFramesPerPacket = 1;
_in.mDataFormat.mBytesPerFrame = 4;
_in.mDataFormat.mChannelsPerFrame = 2;
_in.mDataFormat.mBitsPerChannel = 16;
_in.frameCount = 1024;
_sampleIndex = 0;
AudioQueueNewOutput(&_in.mDataFormat, AQBufferCallback, &_in, CFRunLoopGetCurrent(), kCFRunLoopCommonModes, 0, &_in.queue);
UInt32 bufferBytes = _in.frameCount * _in.mDataFormat.mBytesPerFrame;
for (int i=0; i< NUM_BUFFERS; i++) {
AudioQueueAllocateBuffer(_in.queue, bufferBytes, &_in.mBuffers[i]);
AQBufferCallback (&_in, _in.queue, _in.mBuffers[i]);
}
AudioQueueSetParameter(_in.queue, kAudioQueueParam_Volume, 1.0);
AudioQueueStart(_in.queue, NULL);
_queue = _in.queue;
}
void NIAudioRenderer::Term()
{
AudioQueueStop(_queue,true);
AudioQueueDispose(_queue, true);
}
/* EOF */
ちなみに、
NIAudioDef.hとNIDef.hには
NI_AUDIO_SAMPLE_RATE
NIUint32
NISint16
NIFloat
などが定義してあります。
使う際は、ご自分の環境に合わせて定義してください。
“NI”っていうのは、あれです、自分の開発用ライブラリの名前ですね。
気にしないでOKです。
で、使うところで
#include “NIAudioRenderer.h” して
NIAudioRenderer::Init(); すれば440Hzのサイン波が出力される、はず。
終了時にNIAudiorenderer::Term(); するのをお忘れなく。
参考にしたサイト
CSPhone Project -サイン波の出力-
HITONE過去記事
01-導入-
次回はサイン波を複数鳴らしてみます。
お久しぶりに書きます。
ちょっとiPhone App.の開発から離れてたんですが、ちょっときっかけがあって再開しました。
前に途中まで作っていたTiLoopは少し置いておいて、今はHITONEというアプリを作っています。
もともとは大学の卒研で、Macで(Java+Processing+Max/MSP(OpenSoundControl))動くものを作ったんですが、
そもそもタッチスクリーンで動かしてなんぼなものなので、iPhone/iPad用にリメイクしてます。
(ソース見ながら移植も考えたんですが、思い出すのも嫌になるくらい汚いコーディングをしていたのでイチから書き直してます。。。いやーおはずかしい)
卒研のときのがこれで
現在製作中のはこんな感じになってます。
これから数回に渡って、HITONEの制作状況を記事にしていこうと思ってます。
今回、サイン波を出力するのにAudioQueueを使用していますのでまずはそこの話からですかね。
日誌と書きつつ毎日更新は出来ないと思いますが(だって書くことがなくなってしまう)
乞うご期待。
春にはリリースしたいな!
先ほど作詞タイムが終了し、今作曲班が作曲をしています。
歌詞のお題(テーマ)は【悪人】
5人の作詞者が計10の歌詞を書き上げました。
作詞者と作曲者のペアをくじで決めて、作曲します。
歌詞が複数ある場合は作曲者が自由にひとつ選びます。
僕のペアは、そもそもこの企画の言い出しっぺの
@HiguchiKiさんになりました。
さて、どんな曲になるやら。
ちなみに、僕が書いた歌詞はこちら2つ。
———-
どれくらいの悪いことやれば 悪い人になれるの
どれくらいの迷惑かければ 悪い人って言われるの
朝から昼までずっと眠ってて 夜が来るまでギターを抱いて
夜が更けたら強気になるんだ
みてよ ヒーロー 僕は不良だぜ yeah
悪い悪い悪い…悪人さ
悪い悪い悪い…悪人さ
———-
頭の中まだ空いてるかな 少しの隙間でいいんだ
気付かないうちに染めてしまうよ
気に病むことなんてないんだ きっとすぐに慣れてしまうんだ
まずは ほら この 引き金を 引いて
あぁ
あぁ
待ってろよ新しい世界よ
願ってくれ俺の幸せを
持ってくぜ張り裂けそうな不安も
———-
これ、ちょっと気に入ってるのでついでにアップ。
練習っつーことで数日に書いたお題【海老】だとこうなりました。
———-
猫背のようで猫じゃないし タイガーなんつったって虎じゃないし
アツくなったらアカくなって 両手広げてゴアイサツ
ABフライになんて ABしたりしないで ABしっかり悩んで ABシーフード
ABフライにしないで AB塩味で良いぜ AB白子はないぜ ABシーフード
———-
動向はコチラで!
Twitterを使って、
「与えられたテーマで制限時間60分以内に作詞し、その歌詞に制限時間60分以内で曲をつけてみんなで発表する」
っていう企画をやることにしました。
9/7の予定です。作詞、作曲どちらも参加者大募集です。自宅から参加できますんで、お気軽にどうぞ。
Twitterやってないけど興味があるヨ!って方も、どうにかして楽しめるように考えますので、是非参加してください。
Skypeとか、Ustとかよく分からんし、作曲側で参加したいけどそもそも自宅に録音機材も楽器もないし、とかの方もご相談ください。
詳しくはコチラ↓
—
【1h Music】 企画書 - 9/3版
●日時は 9/7(火) 21:00~(変動の可能性あり)
●作詞側と作曲側に分かれる。
●作詞テーマをtwitter上で募集。募集期間は決めてないけど、前日くらいに募集かけると思います。
●集まったテーマの中から、くじ引きで一つ決定。
●テーマにしたがって作詞チーム、それぞれ自由に作詞(制限時間60分、文字数制限は1ツイートに収まる字数で。つまり、140からハッシュタグ分を引いた字数)
●その詞をもとに作曲チーム、それぞれ自由に作曲(制限時間60分)。作詞者が複数いる場合は、誰の歌詞で作るか、くじ引きで決めます。
●全員の曲ができたら、Skypeで鑑賞会して、あーだこーだいいましょう。もちろん、できた曲は全てネット上で公開します。
●途中経過や鑑賞会の様子をUstしたりするかもしれません。
●参加者募集中。作詞側でも作曲側でもどっちでもOKです。
●作詞側の参加条件は特にありません。
●作曲側は、自分で伴奏+歌唱(ボカロ可)したmp3音源を作成できること。ガッツリ作り込んでもいいし、ギターや鍵盤の弾き語りの一発録りとかでもいいし、PC内蔵マイクにアカペラのみとかでもいいし、とにかく何でもOK。
●初めてやることなんで、ゆる~く、適当に楽しみましょう。
●クオリティーが高い作品を完成させることが目的ではありません。あくまでも、参加者が楽しむことが目的です。
●僕らの事をよく知らないそこのアナタも、興味があったら是非参加してください。
●ハッシュタグは「#1hmusic」です。
【参加者】(9/3現在)
作詞→岩谷成晃(@nariakiiwatani)、Shin(@shiyamon)、shunshihiguchi(@nyoki_h)
作曲→HIGUCHI Kiyonori(@HiguchiKi)、ヒグチタイヨー(@higuchitaiyo)、宮原 廣一郎(@miyabie0227)
質問などあれば、HIGUCHI Kiyonor(Twitter:@HiguchiKi) までメッセージください。
iPadを買い、使い始めた。
まずやったのはiTunesへの登録と同期。
続いてTwitterクライアントの導入。
tweetDeckとTweetとTwitterificを試して、結局Twitterificに落ち着いた。
そしてGoogleカレンダーとの同期と、Evernoteの設定、WordPressアプリの導入と続いた。
とりあえず今のところの感想としては、iPhoneいらなくね?
というところ。
Macは必要。
Wi-Fi版を買ったので、iPhoneを解約して、料金の安いプランに変更、
浮いたお金でe-mobileかWiMAXかを使い始めようかと結構本気で思っている。
このあたり使っている方、使用感いかがでしょう。
バッテリーの持ちと通信速度が不安です。
次のiPhoneもちろん気になるんですけどね…
Google CalendarとのシンクやEvernoteの使用感、Twitterクライアント比較などはまた後日追ってアップします。
僕個人としては、何かできることがあるのかと言われれば、
こうやって自分を見てくれている人に広めることしかとりあえず思いつきません。
でも、知らない人が知ることは凄い前進だと思っています。
ゼロがイチになるんですから。
最近ニュースでは政府の対応が悪かったということがクローズアップして報道されているように思いますが、
この問題に関してまずそこを突こうとすることは、今はまだ間違っていると思っています。
いま大切なのは、政府の対応が正しいのかどうかを判断することじゃない。
今何が起きているのかを一人でも多くの人が把握し、それぞれができることを考えることだと思います。
とりあえず自分ができうる限りの方法で、この記事をそのまま転載でも構わないので広めてください。
一人に広まれば、そこからまた無限に広がります。
インターネットってこういう時にこそ便利だと思うんですよ。
よろしくお願いします。
以下、転載です。
=====================
みんなは、宮崎の口蹄疫が、今、大変なことになっているか知っているだろうか?
このままでは、宮崎の牛・豚は全滅します。
これは、宮崎だけの問題じゃないんです。
松坂牛とかも、日本の有名な和牛は宮崎牛がもととなっています。
また、口蹄疫をほっとくと、感染が広がって日本から牛や豚がいなくなります。
国産の牛や豚は食べれなくなるし、牛乳や乳製品も輸入を頼らないといけなくなります。
また、宮崎の畜産農家の悲惨の現状を知ってください。
(宮崎日日新聞のHP
http://www.the-miyanichi.co.jp/special/kouteieki/index.php)
みんなに口蹄疫のことをもっと知ってほしいんです。
募金とか署名もしてほしいけど、それが無理なら、
この日記を転載して広めてください。
また、不要なバスタオルがあれば、宮崎の川南に送ってあげてください。
よろしくお願いします。
mixiでも口蹄疫関係のコミュがあります。
http://mixi.jp/view_community.pl?id=129406
http://mixi.jp/view_community.pl?id=5016255
http://mixi.jp/view_community.pl?id=4993025
よかったら、読んでください。
以下、口蹄疫関連のサイトやブログ、ニュース等
お時間があれば読んでください。
(そのまんま東こと東国原さんのツイッター
https://twitter.com/higashitiji)
(JA宮崎の署名に協力してください。
http://group.ja-miyazaki.jp/pdf/signature.pdf)
(宮崎の種牛を一元管理している家畜改良事業団の肥育牛から口蹄疫感染例が
http://tsushima.2ch.net/test/read.cgi/newsplus/1273934165/ )
(宮崎だけの問題じゃない
http://yaplog.jp/sada_shadyo/archive/548
http://tekamaru.iza.ne.jp/blog/entry/1598356/alltb/)
(ブログ
http://samidare.jp/m/?p=log&l=183803)
以下、友人のブログより
【宮崎口蹄疫関連のページ 】
http://miyazakiust.com/kouteieki.html
現地の生の声が聞けるようです。
動画ですが、音声メインです。
ネットのニュースよりも、この現場の声が一番のソースでしょうか。
【宮崎/口蹄疫】
宮崎の種牛を一元管理している家畜改良事業団の肥育牛から口蹄疫感染例が
http://tsushima.2ch.net/test/read.cgi/newsplus/1273934165/
江藤拓さんのブログにも掲載されています。
http://gree.jp/etoh_taku/blog/entry/441594259
もしかして知事がツイートしてたことはこの事だったのだか。
最悪の事態じゃないの。
しかも大半の人が危機ってことを分かってないんだと思う。
今後が怖い。
あとニュースをいくつか。
http://headlines.yahoo.co.jp/hl?a=20100514-00000063-jij-pol
http://www.nishinippon.co.jp/nnp/item/171511
口蹄疫被害に対する義援金を募集します(宮崎県のHPより)
http://www.pref.miyazaki.lg.jp/contents/org/fukushi/fukushi/shakai_fukushi/html00165.html
それから、以下はニコニコミュニティ「宮崎が口蹄疫で大変だから募金しようぜ!」の
動画(http://www.nicovideo.jp/watch/1273823524)からのまとめです。
義援金の口座はまだ開設準備中だそうです。ゆうちょとの提携とのこと。
電子申請のほうも受け付けています(こちらは控除があります。)
以下の動画がまとめになっています。
それから、川南町でバスタオルが不足しているそうです。
http://omnmiyazaki.blog109.fc2.com/blog-entry-1692.html
殺処分作業等にあたっているみなさんが使用するのですが、一度使ったバスタオルは処分されます。
そのため、毎日のようにバスタオルが必要になります。
これからも作業は続きますので、バスタオルが底を付くことも考えられます。
家のバスタオルを少し送ろうと思います。