/** * @license Licensed under the Apache License, Version 2.0 (the "License"): * http://www.apache.org/licenses/LICENSE-2.0 */ /** * @fileoverview Code generator for the test 2 blocks. */ /*'use strict'; goog.provide('Blockly.Python.music'); goog.require('Blockly.Python'); Blockly.Python['music_setup'] = function(block) { var decl = '#include \n' + '#include \n' + '#include \n' + '#include \n' + 'MusicPlayer player\n'; Blockly.Python.addDeclaration('music_setup_decl', decl); var setup = 'Serial.begin(9600)\n'+ 'player.beginMidi()\n'; Blockly.Python.addSetup('music_setup', setup); var func = 'void midiSendByte(char data)\n' + '{\n' + ' SPI.transfer(0x00)\n' + ' SPI.transfer(data)\n' + '}\n' + 'void midiWriteData(char cmd, char high, char low)\n' + '{\n' + ' while(!digitalRead(VS_DREQ))\n' + ' digitalWrite(VS_XDCS, LOW)\n' + ' midiSendByte(cmd)\n' + ' if((cmd & 0xF0) <= 0xB0 || (cmd & 0xF0) >= 0xE0)\n' + ' {\n' + ' midiSendByte(high)\n' + ' midiSendByte(low)\n' + ' }\n' + ' else\n' + ' {\n' + ' midiSendByte(high)\n' + ' }\n' + ' digitalWrite(VS_XDCS, HIGH)\n' + '}\n' + 'void midiNoteOff(char channel, char note, char rate)\n' + '{\n' + ' midiWriteData((0x80 | channel), note, rate)\n' + '}\n' + 'void midiNoteOn(char channel, char note, char rate)\n' + '{\n' + ' midiWriteData((0x90 | channel), note, rate)\n' + '}\n'; // Blockly.Python.addFunction('func', func); return ""; }; var original_beat; Blockly.Python['music_set_beat'] = function(block) { var dropdown_beat_option = block.getFieldValue('beat_option'); Blockly.Python.addDeclaration('beat', 'float beat;'); original_beat = dropdown_beat_option; var code = 'beat = '+dropdown_beat_option; return [code, Blockly.Python.ORDER_NONE]; }; Blockly.Python['music_set_bpm'] = function(block) { var dropdown_bpm = block.getFieldValue('bpm'); Blockly.Python.addDeclaration('bpm', 'int bpm;'); var code = 'bpm = '+dropdown_beat_option; return [code, Blockly.Python.ORDER_NONE]; }; Blockly.Python['music_instrument'] = function(block) { var dropdown_instru = block.getFieldValue('instru'); var code = 'midiWriteData(0xC0, '+dropdown_instru+', 0)'; return [code, Blockly.Python.ORDER_NONE]; }; Blockly.Python['music_rest'] = function(block) { var text_rest_beat = block.getFieldValue('rest_beat'); // TODO: Assemble JavaScript into code variable. var code = '...\n'; return code; }; Blockly.Python['music_volume'] = function(block) { var number_music_volume = block.getFieldValue('music_volume'); // TODO: Assemble JavaScript into code variable. var code = 'midiWriteData(0xB0, 0x07, '+number_music_volume+')\n'; return code; }; Blockly.Python['music_customize_melody'] = function(block) { var value_instru = Blockly.Python.valueToCode(block, 'instru', Blockly.Python.ORDER_ATOMIC); var text_melody_name = block.getFieldValue('melody_name'); var statements_composition = Blockly.Python.statementToCode(block, 'composition'); var code = '...\n'; return code; }; Blockly.Python['music_change_tempo'] = function(block) { var dropdown_beat = block.getFieldValue('beat'); var statements_name = Blockly.Python.statementToCode(block, 'melody'); // TODO: Assemble JavaScript into code variable. var code = 'beat = '+dropdown_beat+'\n' + statements_name + 'beat = '+original_beat+'\n'; return code; }; Blockly.Python['music_rest'] = function(block) { var text_name = block.getFieldValue('beat'); var code = ' midiNoteOff(0, 75, 127)\n' + 'delay(1000*60 / bpm * '+text_name+')\n'; return code; }; Blockly.Python['music_combination'] = function(block) { var value_instrument = Blockly.Python.valueToCode(block, 'instrument', Blockly.Python.ORDER_ATOMIC); var value_note = Blockly.Python.valueToCode(block, 'note', Blockly.Python.ORDER_ATOMIC); var value_beat = Blockly.Python.valueToCode(block, 'beat', Blockly.Python.ORDER_ATOMIC); // TODO: Assemble JavaScript into code variable. var code = '...\n'; return code; }; */