2023年4月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            

カテゴリー

ブログパーツ

無料ブログはココログ

« 2013年11月 | トップページ | 2014年1月 »

2013年12月

2013年12月31日 (火)

実験場所がない

ROSさんお手やわらかに:ROS奮闘編

マップを使って移動実験をと思っていたが、実験場所で苦労している。

Dscn2701_2

自宅で実験に使えるスペースはここしかない。以前投稿したように、作成されるマップは単純だ。手前に同じくらいの空間はあるが、分厚いカーペットが敷いてあるので、オドメトリに頼るroombaの実験には向かない。
実験のたびに、段ボールなどで壁を作るという手もあるが、面倒だ。それに、実際の環境とはスケールが異なるので、あまりよろしくない。

さらには、ウチの猫が気まぐれな障害物になるので、生まれたてのロボットにはハードルが高いのではないか。

もっとも、ウチに限ったことではなく、都市部の住居では似たような状況なのではないか。外国の論文にあるような「建物内の探索」なんてのは難しい。

実験テーマをどう作るか、アイデアが必要なようだ。

2013年12月28日 (土)

【昔語り5】SC/MP3で見た夢 - 後編

アキバ昔語り

Tiny BASIC内蔵のSC/MP3のデビューは衝撃的でした。しかし、そのセールスは決して芳しいものではなかったようです。アマチュアにとって、その最も大きな要因は「テレビゲームが作れない」コトではないかと思います。

スペースインベーダーの大ヒットを受けて、世はテレビゲームブームの真っ最中。アマチュアがマイコンを作るのは、テレビゲームを作りたいがためと言っても過言ではありませんでした。僕も自作機で最初に作ったアプリケーションは、ブロック崩しでした。もっともそれほどよいゲームプレイヤーではなかったせいか、テレビゲームへの興味は急速に冷めてしまいましたが。

ともあれ、入出力がターミナルでは、インベーダーのようなリアルタイムのテレビゲームは実現できません。これではアマチュアの食指は動かないでしょう。そしてこの「ターミナル」がもう一つの障壁になります。

すでにフルキーボードとビデオRAMのついたマイコンを持っていれば、これにソフトを入れて、ターミナルとして使うことが出来ますが、SC/MP3が最初のマイコンの場合は、このようなビデオターミナルを用意しなければなりません。
Crtsmall_2

これは1977年のI/O誌の広告ですが、結構な金額です。自作することも可能でしたが、「本物」のように画面をスクロールアップさせるためには、マイコン制御の必要があり、アマチュアが作るにはハードルが高いものでした。
そのうえ、SC/MP3が発売になった1979年には、PC8001やMZ-80も20万を下回る価格で発売され、ターミナルを買うお金があれば、立派なBASICパソコンが買えるようになってしまいました。

では、プロ向けの商品としてはどうだったのでしょう。当時の僕の仕事では、ソフトは外注することがほとんどで、Z80などに比べ価格の高いSC/MP3の必要性はほとんど感じませんでした。おそらく、他の会社も同じような状況だったのではないかと思います。開発環境などへの初期投資を抑えて「とりあえず」マイコン応用製品を社内開発できる、というメリットはあったかもしれません。しかし、社内でのソフト開発を根付かせるためには、SC/MPでも、いずれは本格的な開発ツールの導入は必要で、中長期的な視点に立てば、それほどの魅力はなかったのでしょう。

おそらくこのような理由で、Tiny-BASIC内蔵のSC/MP3は、あまり陽の目を見ることなくデスコンになったわけです。その後、インテルの8052に実数型BASICが搭載されたりしましたが、大きなムーブメントになることはありませんでした。
しかし90年代に入ると、パララックスのBASIC-Stampが発売され、プロトタイピングという新しいコンセプトを生み出すことになります。それはまた、別の機会に書きたいと思います。

2013年12月16日 (月)

【昔語り5】SC/MP3で見た夢 - 前編

アキバ昔語り

70年代、自作マイコンのほとんどは、ハンドアセンブルした機械語コードを、16進キーで打ち込んでプログラムしていました。僕の作った8080機も、出力こそ自作VRAMでテレビに文字表示が出来ましたが、入力は電卓のジャンクを改造した16進キーボードでした。

ハンドアセンブルや16進数での機械語の入力は、慣れてしまうと意外に簡単で、プログラムの作成そのものはそれほど大変ではないのですが、打ち込んだプログラムに命令を挿入したり、削除したりといった編集は大変でした。1バイト挿入すると、それ以降のアドレスが、全て1バイトずれる訳ですから、関連するジャンプやサブルーチンコールの行き先を全て手直ししなければいけません。
これではいくらなんでも大変なので、プログラムを、途中で別のアドレスに分岐させ、そこに追加のプログラムを書いた上、もとのプログラムに戻ってくる、いわゆる「パッチ」で対応していました。ただし、これも度が過ぎると、プログラムがごちゃごちゃしてしまい、どこかで全部書き直すはめになってしまいます。
BASICが自作機で使えれば、だいぶ楽になるだろうなとは思っていました。

BASICやアセンブラは、最初のうちは紙テープで、その後カセットテープ(雑誌の付録でソノシートがついたこともありました)で購入することができました。自作機の場合、ハードに合わせてI/Oルーチンなどのソフトを改造する必要があり、そこそこ面倒なのと、フルキーボードを調達したり、メモリを追加したりと結構な投資が必要なので、実際のところ、なかなか手が出ませんでした。

そんなときに登場したのが、Tiny-BASICを内蔵したマイコンチップ、SC/MP3です。ナショナルセミコンダクターのマイコンで、正式名はINS8073といいますが、「スキャンプ」という愛称で呼ばれていました。
Dscn1495
この写真にあるのがSC/MP3ことINS8073で、1980年に亜土電子で購入し、そのまま部品箱で眠っていたものです。Z80が5000円位の頃、13000円位だったと思います。写真の記事は、これに搭載されたBASICの元になった、NIBLというTiny BASICの紹介で、1977年のI/O誌の記事です。

前置きが長くなりましたが、今回の昔語りは、このSC/MP3に火を入れて、Tiny BASICを動かしてみました。このデータシートを見てもらえばわかる通り、若干の部品とRAM、それにターミナルを用意するだけで、簡単にBASICマイコンが完成します。今回は実験なのでブレットボードに組み立てました。RAMは8KバイトのCMOS SRAM、ターミナルはパソコンのターミナルソフトを使いました。
Dscn2696  Dscn2474

ターミナルのスクリーンショットです。1から10までの自乗を計算させています。BASICの手軽なベンチマークとして良くやりましたね。
Scmp

30年以上もの時を超えて、SC/MP3は甦りました。このデバイスは、長い間、起動されるのひたすら待っていたのですね。それを思うと、不覚にもちょっとだけ目頭が熱くなりました。
以前、PICで行番号の無いTiny BASICを動かしましたが、やはり行番号があるとそれらしいですね。実用的にも、行番号があるおかげで、テレタイプのようなダムターミナルでもプログラムの開発が可能です。
簡単にBASICシステムが構成できるマイコン、これは期待できそう、あれこれと夢がふくらむマイコンでした。

しかし、この画期的なマイコンは、残念ながらヒット商品になり損ねました。次回後編では、なぜこれが売れなかったのかを、お話ししたいと思います。

 

2013年12月 8日 (日)

eVY1+Arduinoで打ち込み歌謡曲(続き)

花岡ちゃんのウィークエンド

前回のスケッチを解説します。

■曲の入力
データの持ち方は以前の投稿どおりです。(このシリーズの投稿をみてください)
score.hに入力します。「小節データ」の部分に数値配列の形で、データを打ち込みます。順番は、ピッチ、ステップタイム、ゲートタイム、ベロシティです。データの最後には必ず128を置きます。
この小節データを、「ソングセクション」でチャンネルごとに集めて、演奏譜面とします。チャンネルごとのsong配列の最後には、endplayを指定します。シーケンサはここまでくると実行終了します。

■使わないチャンネル
使わないチャンネルはsongの最初にchoffを指定しておきます。

■歌詞の送り方
score.hの「歌詞セクション」を見てもらえば作り方はわかると思います。問題は、どこで歌詞を送り込むかです。歌詞送信コマンドは、直前の音符が送られた後、わずかな時間遅れを伴って送信されます。人間が歌うときのブレス(息継ぎ)のタイミングに近いところがあります。使い方はsm3を見ろとありますが、これはsm4の間違いです。

■リズムの入力
score.hの「リズムセクション」に小節ごとに登録します。こちらは、タイコの種類、ステップタイム、ベロシティの3データです。タイコの種類については、GM音源の資料を探してください。(GM音源では、楽器の番号が1から始まっていますが、本システムでは0からなので、1を引いて設定する必要があります)

■MIDIチャンネル
MIDIのチャンネルはnew_ev1_seq.inoファイルの、setup()で設定指定しています。0はボーカロイド固定、6,7はドラムになっています。ドラムが2チャンネルになっているのは、基本モノフォニックなので、8ビートのように、複数のタイコを同じタイミングで叩く場合のことを考えてのことです。

■エフェクト
console.hには、チャンネルの音量や定位、エフェクトなどを記載します。見てもらえばわかると思います。
最後の、VOCAL_SKEWは重要です。ボーカロイドは少し遅れるので、これを補正するために、ボーカルを進める定数です。score.hのvstart[]の記述に、ここで遅れを補正しているように書いてありますが、これは古い情報で、これは普通の一小節の休符(歌詞の送信はありますが)です。補正はシーケンサでかけています。

以上、簡単な解説です。試してみたい方は、ソロの簡単な譜面からスタートするといいと思います。

« 2013年11月 | トップページ | 2014年1月 »