基本情報

このページではIoTコンテンツ(シンセサイザ)を「編集」できます。編集したコンテンツは、プロジェクトの一覧ページでは元のコンテンツを置き換えて表示されます。新しい項目として足したい場合は「 フォーク」してください。

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

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

プライベートコンテンツ

このコンテンツはすでに公開されているのでプライベートにできません。「 フォーク」ならプライベートにできます。

ソースコード

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

var f3js = require("f3js") , x = 15 , y = 15 , width = 225 , height = 115 , dw = 7 , dh = 2 ; var p = f3js.createPath(); p.moveTo(x, y); p.dovetailTo(x + width, y, dw, dh); p.dovetailTo(x + width, y + height, dw, dh); p.dovetailTo(x, y + height, dw, dh); p.dovetailTo(x, y, dw, dh); p.close(); p.fill = false; var ps = p.extrude(45); ps[0].x = x + width + 50; ps[0].y = y + dh; ps[0].rotation = 90; ps[1].x = x + width + 160; ps[1].y = y + height + 10; ps[1].rotation = 90; ps[2].x = x + width + 105; ps[2].y = y + dh; ps[2].rotation = 90; ps[3].x = x + width + 160; ps[3].y = y + dh; ps[3].rotation = 90; ps[4].x = 0; ps[4].y = height + 5; for (var i = 0; i < ps.length; i ++) { f3js.add(ps[i]); } var GroveSensor = require("jsupm_grove"); //レーザーカッターの調子が悪く彫る動作ができなかったので //ボタンの機能名を彫るのはなしにした //音量 var volume = new GroveSensor.GroveRotary(0); f3js.add(volume, { x: x + 38, y: y + 35 }); f3js.drawRectangle(x + 18, y + 30, 4, 10); //f3js.drawText("VOLUME", x + 15, y + 53); //モニタ操作ボタン var enter = new GroveSensor.GroveButton(0); //f3js.add(enter, { x: x + 82, y: y + 25 }); // NOTE: Changed to using layout manager. f3js.drawRectangle(x + 63, y + 20, 4, 10); //f3js.drawText("ENTER", x + 83, y + 43); var exit = new GroveSensor.GroveButton(0); //f3js.add(exit, { x: x + 82, y: y + 55 }); // NOTE: Changed to using layout manager. f3js.drawRectangle(x + 63, y + 50, 4, 10); //f3js.drawText("EXIT", x + 84, y + 88); var up = new GroveSensor.GroveButton(0); //f3js.add(up, { x: x + 196, y: y + 25 }); // NOTE: Changed to using layout manager. f3js.drawRectangle(x + 211, y + 20, 4, 10); //f3js.drawText("UP", x + 214, y + 43); var down = new GroveSensor.GroveButton(0); //f3js.add(down, { x: x + 196, y: y + 55 }); // NOTE: Changed to using layout manager. f3js.drawRectangle(x + 211, y + 50, 4, 10); //f3js.drawText("DOWN", x + 208, y + 88); var westButtonLayout = f3js.drawLine(x + 82, y + 25, x + 82, y + 55); westButtonLayout.layout = "distribute"; f3js.add(enter, westButtonLayout); f3js.add(exit, westButtonLayout); var eastButtonLayout = f3js.drawLine(x + 196, y + 25, x + 196, y + 55); eastButtonLayout.layout = "distribute"; f3js.add(up, eastButtonLayout); f3js.add(down, eastButtonLayout); //音形変化エンコーダ var rotaryEncoder = require("jsupm_rotaryencoder"); var attack = new rotaryEncoder.RotaryEncoder(2, 3); //f3js.add(attack, { x: x + 88, y: y + 90 }); // NOTE: Changed to using layout manager. //f3js.drawRectangle(x + 215, y + 105, 10, 4); //f3js.drawText("ATTACK", x + 66, y + 135); var decay = new rotaryEncoder.RotaryEncoder(2, 3); //f3js.add(decay, { x: x + 123, y: y + 90}); // NOTE: Changed to using layout manager. //f3js.drawRectangle(x + 175, y + 105, 10, 4); //f3js.drawText("DECAY", x + 113, y + 135); var sustain = new rotaryEncoder.RotaryEncoder(2, 3); //f3js.add(sustain, { x: x + 158, y: y + 90}); // NOTE: Changed to using layout manager. //f3js.drawRectangle(x + 135, y + 105, 10, 4); //f3js.drawText("SUSTAIN", x + 151, y + 135); var release = new rotaryEncoder.RotaryEncoder(2, 3); //f3js.add(release, { x: x + 193, y: y + 90}); // NOTE: Changed to using layout manager. //f3js.drawRectangle(x + 95, y + 105, 10, 4); //f3js.drawText("RELEASE", x + 198, y + 135); var rotaryEncoderLayout = f3js.drawLine(x + 88, y + 90, x + 193, y + 90); rotaryEncoderLayout.layout = "distribute"; f3js.add(attack, rotaryEncoderLayout); f3js.add(decay, rotaryEncoderLayout); f3js.add(sustain, rotaryEncoderLayout); f3js.add(release, rotaryEncoderLayout); //ピッチベンダ(ジョイスティック) var joystick = require("jsupm_joystick12"); var pitchbender = new joystick.Joystick12(0, 1); f3js.add(pitchbender, { x: x + 38, y: y + 85 }); f3js.drawRectangle(x + 8, y + 80, 4, 10); //f3js.drawText("PITCH", x + 26, y + 128); //LCDモニタ var LCD = require("jsupm_i2clcd"); var lcd = new LCD.Jhd1313m1(6,0x3E,0x62); f3js.add(lcd, { x: x + 141, y: y + 45 }); //f3js.drawRectangle(x + 100, y + 55, 4, 10); //USB等差し込み口 f3js.drawRectangle( x + width + 160 - 11 - 4 , y + 10 , 12 , height - dh * 2 - 10); //底面四隅穴 f3js.drawCircle(x + 10, y + height + 5 + 10, 1.5); f3js.drawCircle(x + 10, y + height*2 + 5 - 10, 1.5); f3js.drawCircle(x + width - 10, y + height + 5 + 10, 1.5); f3js.drawCircle(x + width - 10, y + height*2 + 5 - 10, 1.5); //マイコン取り付け穴 マイコンも便宜上モジュールとして一覧に入れておいた方が //いいのでは? //f3js.drawCircle(x + 5, y + height + 5 + 20, 1);マイコンにおける(0,0)位置 f3js.drawCircle(x + 5 + 16, y + height + 5 + 20 + 12, 1.5); f3js.drawCircle(x + 5 + 16.5, y + height + 5 + 20 + 60, 1.5); f3js.drawCircle(x + 5 + 68, y + height + 5 + 20 + 17, 1.5); f3js.drawCircle(x + 5 + 68, y + height + 5 + 20 + 45, 1.5); f3js.drawCircle(x + 5 + 116, y + height + 5 + 20 + 13, 1.5); f3js.drawCircle(x + 5 + 116, y + height + 5 + 20 + 65.8, 1.5);
カスタマイズ

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

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

設計のダウンロード

モジュール

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

レイアウト
プログラム

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