基本情報

このページではIoTコンテンツ(QuadBuzzer)をベースにして、新しいコンテンツを「フォーク」できます。フォークしたコンテンツは、プロジェクトの一覧ページに新しい項目として表示されます。元の項目を上書きしたい場合は編集してください。

※写真URLは.jpg, .jpeg, .pngのいずれかで終わるもの、またはGyazoへアップロードされたページのURL(https://gyazo.com/hogehogeなど)に対応しています。

※IoTコンテンツの説明、エントリポイントに関する情報 main: index.js およびf3jsモジュールへの依存情報 dependencies: { f3js: (略) } は、この欄の内容とマージされるため記入不要です。

カードのプレビュー
QuadBuzzer
'16/9/7 1:42
Yet another musical instrument. Server-side impl is not yet public.
arc@dmz

プライベートコンテンツ

チェックを外すと、このコンテンツはすぐ一覧に公開され、誰でもアクセスできるようになります。 なるべくコンテンツを共有していただきたいので、チェックは初めから外れています。また、ログインしていない状態ではチェックをつけられません。 一度公開されたコンテンツは、プライベートにできません。(一度チェックを外すと、以降そのコンテンツを編集するときにはチェックをつけられなくなります。)

ソースコード

マイコン・小型コンピュータのプログラムのソースコードを記述してください。f3jsパッケージをrequireすることで筐体設計が可能です。詳しくはAPIドキュメントをご覧ください。

var WebSocket = require('ws'); var ws = new WebSocket('ws://192.168.10.100:8080/entry'); var upmBuzzer = require('jsupm_buzzer'); var numBuzzers = 4; var inputs = [3, 5, 6, 9]; var buzzers = []; var volume = 0.1; var f3js = require('f3js'); var c = f3js.createContainer(); c.x = 50; c.y = 50; var c1 = 47 // curve 1 [36, 50] , c2 = 33 // curve 2 [0, 36] , x = 70 , y = 140 , width = 70; var a = c.createPath(); a.moveTo(x, y); a.curveTo(x , y + c1 , x + width , y + c1 , x + width , y); a.curveTo(x + width , y - c2 , x + width * 1.5 - c2 , y - width * 0.5 , x + width * 1.5 , y - width * 0.5); a.curveTo(x + width * 1.5 + c1 , y - width * 0.5 , x + width * 1.5 + c1 , y - width * 1.5 , x + width * 1.5 , y - width * 1.5); a.curveTo(x + width * 1.5 - c2 , y - width * 1.5 , x + width , y - width * 2 + c2 , x + width , y - width * 2); a.curveTo(x + width , y - width * 2 - c1 , x , y - width * 2 - c1 , x , y - width * 2); a.curveTo(x , y - width * 2 + c2 , x - width * 0.5 + c2 , y - width * 1.5 , x - width * 0.5 , y - width * 1.5); a.curveTo(x - width * 0.5 - c1 , y - width * 1.5 , x - width * 0.5 - c1 , y - width * 0.5 , x - width * 0.5 , y - width * 0.5); a.curveTo(x - width * 0.5 + c2 , y - width * 0.5 , x , y - c2 , x , y); a.close(); a.matrix.translate(-40, -5); var ps = a.extrude(60); ps[0].y = 50; ps[0].x = 270; f3js.add(ps[0]); var dx = [ 65, 145, 65, -15] , dy = [-15, 65, 145, 65]; for (var i = 0; i < numBuzzers; i ++) { var buzzer = new upmBuzzer.Buzzer(inputs[i]); buzzer.setVolume(volume); buzzer.stopSound(); buzzer.stopSound(); var p = c.add(buzzer, dx[i], dy[i]); p.drawRectangle(15, -5, 5, 10); p.rotate(i*90); buzzers.push(buzzer); } var pathl = c.createPath(); pathl.moveTo(0, 40).dovetailTo(0, 85, 3, 1, false, false, true); ps = pathl.extrude(60); ps[0].x = 10; ps[0].y = 230; f3js.add(ps[0]); var pathr = c.createPath(); pathr.moveTo(130, 40).dovetailTo(130, 90, 3, 1, false, false, true); ps = pathr.extrude(60); ps[0].x = 70; ps[0].y = 230; f3js.add(ps[0]); var patht = c.createPath(); patht.moveTo(30, 25).dovetailTo(100, 25, 3, 1, false, false, true); ps = patht.extrude(60); ps[0].x = 130; ps[0].y = 230; f3js.add(ps[0]); var pathb = c.createPath(); pathb.moveTo(30, 100).dovetailTo(100, 100, 3, 1, false, false, true); ps = patht.extrude(60); ps[0].x = 210; ps[0].y = 230; f3js.add(ps[0]); var pathlc = c.createPath(); pathlc.moveTo(220, 40).dovetailTo(220, 85, 3, 1, false, false, true); var pathrc = c.createPath(); pathrc.moveTo(350, 40).dovetailTo(350, 90, 3, 1, false, false, true); var pathtc = c.createPath(); pathtc.moveTo(250, 25).dovetailTo(320, 25, 3, 1, false, false, true); var pathbc = c.createPath(); pathbc.moveTo(250, 100).dovetailTo(320, 100, 3, 1, false, false, true); ws.on('message', function(message) { var data = JSON.parse(message); switch (data.message) { case 'note_on': if(buzzers[data.channel]) { buzzers[data.channel].setVolume(volume); buzzers[data.channel].playSound(1000000 / data.frequency, 0); } break; case 'note_off': if(buzzers[data.channel]) { buzzers[data.channel].stopSound(); buzzers[data.channel].stopSound(); } break; } }); var var35940 = 3; // *proposed* ブザー数 [1,5]
カスタマイズ

このコンテンツにはカスタマイズできる項目がありません。

表示オプション
ソースコード中で変数宣言にコメントをつけるとカスタマイズ項目としてGUIウィジェットが表示されます。グレーアウトしているウィジェットはユーザが提案した項目で、ソースコード末尾の変数宣言に対応しています。

設計のダウンロード

モジュール

このプロジェクトは組み立てにモジュールを必要としません。

レイアウト
プログラム

ログインしないと使えない機能です。