From 498b4ef13bc36d43584778198f7efd3da847b710 Mon Sep 17 00:00:00 2001 From: terryLP Date: Mon, 24 Mar 2025 14:30:56 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=B8=80=E4=BA=9B=E5=85=B3?= =?UTF-8?q?=E4=BA=8Emidi=E6=92=AD=E6=94=BE=E7=9A=84=E9=A1=B9=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Midi/arduino-midi-player-master/.gitignore | 5 + Midi/arduino-midi-player-master/LICENSE | 8 + Midi/arduino-midi-player-master/README.md | 45 + .../arduino-midi-player.ino | 135 + .../arduino-midi-player-master/jasmid/LICENSE | 24 + Midi/arduino-midi-player-master/jasmid/README | 51 + .../jasmid/midifile.js | 241 + .../jasmid/stream.js | 71 + Midi/arduino-midi-player-master/midi2wave.h | 58 + Midi/arduino-midi-player-master/midi2wave.ino | 84 + Midi/arduino-midi-player-master/smf2seq.js | 152 + Midi/mg/AVR.INC | 368 + Midi/mg/mel.txt | 499 + Midi/mg/mel1.txt | 297 + Midi/mg/mel2.txt | 198 + Midi/mg/mel2asm.pl | 33 + Midi/mg/melody.asm | 80 + Midi/mg/mg.asm | 380 + Midi/mg/mg.hex | 195 + Midi/mg/mg.inc | 105 + Midi/mg/mg.tuo | 13 + Midi/mg/mg.xmp | 23 + Midi/mg/p1.wav | Bin 0 -> 2092 bytes Midi/mg/wav2asm.pl | 58 + .../midi-to-hex-example/ScoreListGen.log | 1393 ++ .../generate_score_data.bat | 2 + .../midi-to-hex-example/hex-file/mg.hex | 121 + .../midi-to-hex-example/hex-file/mg_167.hex | 175 + .../midi-to-hex-example/hex-file/mg_m328p.hex | 861 + .../Air_on_the_G_String_music_box.mid | Bin 0 -> 4009 bytes .../midi-sample/Always-with-me-musicbox.mid | Bin 0 -> 3725 bytes .../midi-sample/Auld_Lang_Syne_MusicBox.mid | Bin 0 -> 818 bytes .../Auld_Lang_Syne_MusicBox_va.mid | Bin 0 -> 826 bytes .../midi-sample/BWV_1068_Air.mid | Bin 0 -> 6712 bytes .../Bach_-_Arioso_from_Cantata_BWV_156.mid | Bin 0 -> 6033 bytes ...ch_-_Jesu_Joy_of_Mans_Desiring_BWV_147.mid | Bin 0 -> 10528 bytes ...ans_Desiring_for_flute_and_piano_ver_2.mid | Bin 0 -> 8957 bytes .../midi-sample/Bach_Suite3_2.Air.mid | Bin 0 -> 10238 bytes .../midi-sample/Bad_Apple.mid | Bin 0 -> 17095 bytes .../midi-sample/Bad_Apple_full.mid | Bin 0 -> 23637 bytes .../midi-sample/Beethoven_-_Pathetique.mid | Bin 0 -> 10494 bytes ..._No.5_Op.24_Spring_movement_I._Allegro.mid | Bin 0 -> 49125 bytes .../midi-sample/Canon in D.mid | Bin 0 -> 25027 bytes ...Card Captor Sakura - Nukumori no Kioku.mid | Bin 0 -> 2998 bytes .../Cardcaptor_Sakura_Clear_Card_-_CLEAR.mid | Bin 0 -> 5435 bytes .../midi-sample/Cardcaptor_Sakura_Tomo_He.mid | Bin 0 -> 4546 bytes .../Classical_Music_Mashup_WIP.mid | Bin 0 -> 16839 bytes .../midi-sample/D498-Musicbox.mid | Bin 0 -> 2582 bytes .../EVA 残酷天使的行动纲领 指弹.mid | Bin 0 -> 4985 bytes .../midi-sample/Edelweiss.mid | Bin 0 -> 1574 bytes .../midi-sample/Eine_Kleine_Nachtmusik.mid | Bin 0 -> 7639 bytes .../Eine_Kleine_Nachtmusik_2nd_Movement.mid | Bin 0 -> 18839 bytes .../midi-sample/HarryPotter.mid | Bin 0 -> 597 bytes .../midi-sample/Innocent.mid | Bin 0 -> 4211 bytes ...No._9_for_Piano_arranged_by_Egon_Petri.mid | Bin 0 -> 15172 bytes .../midi-to-hex-example/midi-sample/K381.MID | Bin 0 -> 9285 bytes .../midi-sample/Katyusha.mid | Bin 0 -> 4003 bytes .../midi-sample/Laputa.mid | Bin 0 -> 4657 bytes ...Divertimento_in_D_K._334_-_W.A._Mozart.mid | Bin 0 -> 5562 bytes .../midi-sample/Menuett_G_dur_BWV.mid | Bin 0 -> 2962 bytes .../midi-sample/Moon_River_Noted_MusicBox.mid | Bin 0 -> 3926 bytes .../Moonlight_Sonata_Beethoven.mid | Bin 0 -> 7789 bytes ...o_Sonata_No.16_K_545_Andante_Music-box.mid | Bin 0 -> 3729 bytes .../midi-sample/Mozart_314_Allegro.mid | Bin 0 -> 25811 bytes .../midi-sample/NYAN_CAT.mid | Bin 0 -> 2742 bytes .../Piano_Sonata_No.16_K_545_Andante.mid | Bin 0 -> 8508 bytes ...ta_No._16_K_545_Allegro_by_W.A._Mozart.mid | Bin 0 -> 17194 bytes .../midi-sample/River_Flows_in_You.mid | Bin 0 -> 5945 bytes .../midi-sample/Senbonzakura (1).mid | Bin 0 -> 19931 bytes ..._Suite__Zacky_the_Pianist__Full_Sheets.mid | Bin 0 -> 11143 bytes .../midi-sample/Summer_Joe_Hisaishi.mid | Bin 0 -> 8010 bytes .../Super_Mario_World_Athletic_Theme(1).mid | Bin 0 -> 9353 bytes ...wers_from_The_Nutcracker_Piano_4_hands.mid | Bin 0 -> 45195 bytes ..._Goldberg_Variations_BWV_988_for_Organ.mid | Bin 0 -> 8597 bytes .../midi-sample/The_Internationale.mid | Bin 0 -> 6481 bytes ...Nutcraker_Medley-Four_Hands_VIDEOSCORE.mid | Bin 0 -> 29120 bytes .../Toccata-and-Fugue-in-D-minor.mid | Bin 0 -> 23799 bytes .../midi-sample/Touhou_Medley.mid | Bin 0 -> 19516 bytes .../midi-sample/Vivaldi_-_Summer_-_Piano.mid | Bin 0 -> 17518 bytes ...W.A._Mozart_-_Symphony_no._40_-_Mov._I.mid | Bin 0 -> 44260 bytes .../midi-to-hex-example/midi-sample/WTC_1.mid | Bin 0 -> 8162 bytes .../Waltz_Of_The_Flowers-for_Casey.mid | Bin 0 -> 2730 bytes .../midi-sample/Waltz_of_the_flowers.mid | Bin 0 -> 4175 bytes .../midi-sample/Yoru_no_uta_-_yenoge.mid | Bin 0 -> 3685 bytes ...h_brandeburg_concert_1047_1_(nc)anonym.mid | Bin 0 -> 80028 bytes ...h_brandeburg_concert_1048_1_(nc)anonym.mid | Bin 0 -> 98682 bytes ...h_brandeburg_concert_1050_1_(nc)anonym.mid | Bin 0 -> 71916 bytes .../bach_tocatta_fugue_d_minor.mid | Bin 0 -> 29911 bytes .../midi-sample/bwv1052a.mid | Bin 0 -> 82716 bytes .../midi-sample/debussy_bergamasque_01.mid | Bin 0 -> 16277 bytes .../midi-sample/debussy_bergamasque_03.mid | Bin 0 -> 14143 bytes .../midi-to-hex-example/midi-sample/inter.mid | Bin 0 -> 26614 bytes .../midi-sample/molihua.mid | Bin 0 -> 3397 bytes .../midi-sample/mozart_k265.mid | Bin 0 -> 54003 bytes .../midi-sample/mozart_k331_1.mid | Bin 0 -> 55761 bytes .../midi-sample/mozart_k331_3.mid | Bin 0 -> 24708 bytes .../midi-sample/mozart_k475.mid | Bin 0 -> 33790 bytes .../midi-sample/mozart_k485.mid | Bin 0 -> 30350 bytes .../midi-sample/mozart_k545_1.mid | Bin 0 -> 23699 bytes .../midi-sample/mozart_k545_3.mid | Bin 0 -> 8997 bytes ...ozart_sonata_2-pianos_375_1_(c)ishenko.mid | Bin 0 -> 57018 bytes ...ozart_sonata_2-pianos_375_2_(c)ishenko.mid | Bin 0 -> 31655 bytes ...ozart_sonata_2-pianos_375_3_(c)ishenko.mid | Bin 0 -> 44473 bytes .../piano_fantasie_475_(c)oguri.mid | Bin 0 -> 32869 bytes .../piano_sonata_457_1_(c)oguri.mid | Bin 0 -> 18899 bytes .../piano_sonata_457_3_(c)oguri.mid | Bin 0 -> 19455 bytes .../midi-to-hex-example/midi-sample/polka.mid | Bin 0 -> 24584 bytes .../midi-sample/qianxun.mid | Bin 0 -> 11390 bytes .../midi-sample/qianxun_waltz.mid | Bin 0 -> 13736 bytes .../midi-sample/senbonzakura_flute.mid | Bin 0 -> 11610 bytes .../midi-sample/symphony_7_2_(c)cvikl.mid | Bin 0 -> 44855 bytes .../midi-sample/tchaikovsky_op71a_3.mid | Bin 0 -> 362001 bytes .../midi-sample/twinkle.mid | Bin 0 -> 285 bytes .../midi-sample/初音未来的消失钢琴.mid | Bin 0 -> 40405 bytes .../千本桜を黒く染め直してみた.mid | Bin 0 -> 286993 bytes .../midi-sample/夜之歌.mid | Bin 0 -> 3313 bytes .../midi-sample/菊花台_musicbox.mid | Bin 0 -> 3544 bytes .../midi-sample/蓝色多瑙河.MID | Bin 0 -> 39339 bytes .../midi-to-hex-example/midi-to-hex.exe | Bin 0 -> 527936 bytes .../midi-to-hex-example/midiFilieList.txt | 25 + .../midi-to-hex-example/readme.txt | 1 + .../midi-to-hex-example/scoreList.c | 5544 ++++++ .../midi-to-hex-example/scoreList.raw | Bin 0 -> 94224 bytes Midi/music-box-arduino-master/AlgorithmTest.c | 177 + Midi/music-box-arduino-master/AsmCommon.h | 27 + .../Doc/Connection for Arduino Nano.png | Bin 0 -> 79275 bytes Midi/music-box-arduino-master/EnvelopTable.c | 20 + Midi/music-box-arduino-master/LICENSE | 674 + Midi/music-box-arduino-master/MusicBox.cpp | 43 + Midi/music-box-arduino-master/MusicBox.h | 30 + Midi/music-box-arduino-master/PeriodTimer.S | 28 + Midi/music-box-arduino-master/PeriodTimer.h | 12 + .../PlaySong/AlgorithmTest.c | 177 + .../PlaySong/AsmCommon.h | 27 + .../PlaySong/EnvelopTable.c | 20 + .../music-box-arduino-master/PlaySong/LICENSE | 674 + .../PlaySong/MusicBox.cpp | 43 + .../PlaySong/MusicBox.h | 30 + .../PlaySong/PeriodTimer.S | 28 + .../PlaySong/PeriodTimer.h | 12 + .../PlaySong/PlaySong.ino | 157 + .../PlaySong/Player.c | 58 + .../PlaySong/Player.h | 50 + .../PlaySong/PlayerAsm.S | 73 + .../PlaySong/README.md | 5 + .../music-box-arduino-master/PlaySong/Synth.S | 133 + .../PlaySong/SynthCore.c | 87 + .../PlaySong/SynthCore.h | 96 + .../PlaySong/SynthCoreAsm.S | 126 + .../PlaySong/UpdateTick.S | 33 + .../PlaySong/WaveTable.c | 285 + .../PlaySong/WaveTable.h | 27 + .../PlaySong/library.properties | 10 + Midi/music-box-arduino-master/Player.c | 58 + Midi/music-box-arduino-master/Player.h | 50 + Midi/music-box-arduino-master/PlayerAsm.S | 73 + Midi/music-box-arduino-master/README.md | 5 + Midi/music-box-arduino-master/Synth.inc | 133 + Midi/music-box-arduino-master/SynthCore.c | 87 + Midi/music-box-arduino-master/SynthCore.h | 96 + Midi/music-box-arduino-master/SynthCoreAsm.S | 126 + Midi/music-box-arduino-master/UpdateTick.inc | 33 + Midi/music-box-arduino-master/WaveTable.c | 285 + Midi/music-box-arduino-master/WaveTable.h | 27 + .../examples/PlaySong/PlaySong.ino | 157 + .../library.properties | 10 + Midi/music-box-avr-master/.gitignore | 30 + Midi/music-box-avr-master/.vscode/tasks.json | 16 + ...1886 Mixing Assembly and C with AVRGCC.pdf | Bin 0 -> 146509 bytes .../Atmel-0856-AVR-Instruction-Set-Manual.pdf | 14179 ++++++++++++++++ ...re-User-Guide_ApplicationNote_AVR42787.pdf | Bin 0 -> 372246 bytes Midi/music-box-avr-master/Makefile | 187 + .../WavetableSynthesizer/AlgorithmTest.c | 177 + .../WavetableSynthesizer/AsmCommon.h | 27 + .../WavetableSynthesizer/EnvelopTable.c | 20 + .../WavetableSynthesizer/PeriodTimer.S | 28 + .../WavetableSynthesizer/PeriodTimer.h | 12 + .../WavetableSynthesizer/Player.c | 58 + .../WavetableSynthesizer/Player.h | 50 + .../WavetableSynthesizer/PlayerAsm.S | 73 + .../WavetableSynthesizer/Synth.inc | 133 + .../WavetableSynthesizer/SynthCore.c | 86 + .../WavetableSynthesizer/SynthCore.h | 96 + .../WavetableSynthesizer/SynthCoreAsm.S | 126 + .../WavetableSynthesizer/UpdateTick.inc | 33 + .../WavetableSynthesizer/WaveTable.c | 285 + .../WavetableSynthesizer/WaveTable.h | 19 + Midi/music-box-avr-master/assembly.pdf | Bin 0 -> 127580 bytes Midi/music-box-avr-master/main.c | 82 + Midi/music-box-avr-master/mg_avr.tuo | 16 + Midi/music-box-avr-master/mg_avr.xmp | 33 + Midi/music-box-avr-master/score.c | 264 + Midi/music-box-nv32-master/.cproject | 294 + Midi/music-box-nv32-master/.gitignore | 41 + Midi/music-box-nv32-master/.project | 26 + .../.settings/language.settings.xml | 28 + .../org.eclipse.core.resources.prefs | 2 + Midi/music-box-nv32-master/.travis.yml | 17 + .../music-box-nv32-master/.vscode/launch.json | 23 + .../.vscode/settings.json | 22 + Midi/music-box-nv32-master/BinarySearch.py | 22 + .../music-box-nv32-master/DownloadScoreData.c | 251 + .../music-box-nv32-master/DownloadScoreData.h | 28 + Midi/music-box-nv32-master/KeyScan.c | 64 + Midi/music-box-nv32-master/KeyScan.h | 28 + Midi/music-box-nv32-master/LICENSE | 674 + Midi/music-box-nv32-master/Makefile | 147 + Midi/music-box-nv32-master/README.md | 28 + .../Ring-Buffer/Doxyfile | 1781 ++ .../music-box-nv32-master/Ring-Buffer/LICENSE | 21 + .../Ring-Buffer/README.md | 4 + .../Ring-Buffer/examples/Makefile | 10 + .../Ring-Buffer/examples/simple.c | 86 + .../Ring-Buffer/ringbuffer.c | 75 + .../Ring-Buffer/ringbuffer.h | 132 + .../WaveTableSynthesizer/AlgorithmTest.c | 170 + .../WaveTableSynthesizer/AsmCommon.h | 6 + .../WaveTableSynthesizer/EnvelopTable.c | 19 + .../WaveTableSynthesizer/EnvelopeTable.h | 8 + .../WaveTableSynthesizer/PeriodTimer.h | 12 + .../WaveTableSynthesizer/PeriodTimer.s | 28 + .../WaveTableSynthesizer/Player.c | 189 + .../WaveTableSynthesizer/Player.h | 102 + .../WaveTableSynthesizer/RegDefNv32.h | 11 + .../WaveTableSynthesizer/Synth.inc | 81 + .../WaveTableSynthesizer/SynthCore.c | 123 + .../WaveTableSynthesizer/SynthCore.h | 107 + .../WaveTableSynthesizer/SynthCoreAsm.s | 151 + .../WaveTableSynthesizer/UpdateTick.inc | 35 + .../WaveTable_Celesta_C5.c | 284 + .../WaveTable_Celesta_C5.h | 20 + .../WaveTable_Celesta_C6.c | 159 + .../WaveTable_Celesta_C6.h | 19 + .../doc/NV32F100-系统初始化说明-v1.1.pdf | Bin 0 -> 285324 bytes .../doc/NV32F100_用户手册_V1.55.pdf | Bin 0 -> 1649082 bytes .../doc/NV32F100x_参考手册_v1.17.pdf | Bin 0 -> 12543393 bytes .../doc/music-box-photo.jpg | Bin 0 -> 364130 bytes Midi/music-box-nv32-master/download.py | 118 + .../gcc-stdio-retarget.c | 117 + Midi/music-box-nv32-master/isr.h | 59 + Midi/music-box-nv32-master/main.c | 208 + .../music-box-nv32-master/makefile_std_lib.mk | 74 + Midi/music-box-nv32-master/nv32f100.ld | 190 + .../nv32lib/common/alloc.c | 131 + .../nv32lib/common/assert.c | 28 + .../nv32lib/common/assert.h | 25 + .../nv32lib/common/common.h | 90 + .../nv32lib/common/core_cm0plus.h | 822 + .../nv32lib/common/core_cmFunc.h | 637 + .../nv32lib/common/core_cmInstr.h | 880 + .../nv32lib/common/core_cmSimd.h | 697 + .../music-box-nv32-master/nv32lib/common/io.c | 39 + .../music-box-nv32-master/nv32lib/common/io.h | 30 + .../nv32lib/common/memtest.c | 211 + .../nv32lib/common/memtest.h | 32 + .../nv32lib/common/printf.c | 625 + .../nv32lib/common/queue.c | 124 + .../nv32lib/common/queue.h | 52 + .../nv32lib/common/startup.c | 77 + .../nv32lib/common/startup.h | 15 + .../nv32lib/common/system_nv32.c | 50 + .../nv32lib/common/system_nv32.h | 51 + .../nv32lib/common/typedef.h | 49 + .../nv32lib/common/uif.c | 328 + .../nv32lib/common/uif.h | 123 + .../nv32lib/cpu/arm_cm0.c | 77 + .../nv32lib/cpu/arm_cm0.h | 100 + .../nv32lib/cpu/headers/NV32.h | 2831 +++ .../nv32lib/cpu/headers/derivative.h | 8 + .../music-box-nv32-master/nv32lib/cpu/start.c | 65 + .../music-box-nv32-master/nv32lib/cpu/start.h | 7 + .../nv32lib/cpu/startup_NV32_gcc.s | 88 + .../nv32lib/cpu/startup_NV32_keil.s | 348 + .../nv32lib/cpu/sysinit.c | 257 + .../nv32lib/cpu/sysinit.h | 38 + .../nv32lib/cpu/system_NV32.h | 51 + .../nv32lib/cpu/systick.c | 89 + .../nv32lib/cpu/systick.h | 25 + .../nv32lib/cpu/vectors.c | 171 + .../nv32lib/cpu/vectors.h | 146 + .../nv32lib/drivers/LemcUSB/GPL_EXCEPTION.txt | 11 + .../nv32lib/drivers/LemcUSB/LICENSE.txt | 681 + .../nv32lib/drivers/LemcUSB/c_compat.h | 35 + .../nv32lib/drivers/LemcUSB/usb.c | 381 + .../nv32lib/drivers/LemcUSB/usb.h | 137 + .../nv32lib/drivers/LemcUSB/usb_config.h | 40 + .../nv32lib/drivers/LemcUSB/usb_descriptors.h | 162 + .../drivers/LemcUSB/usb_helperfunctions.h | 63 + .../nv32lib/drivers/LemcUSB/usb_hid.c | 104 + .../nv32lib/drivers/LemcUSB/usb_hid.h | 61 + .../drivers/LemcUSB/usb_internal_bitbangusb.s | 484 + .../nv32lib/drivers/LemcUSB/usb_internal_ll.c | 59 + .../nv32lib/drivers/LemcUSB/usb_internal_ll.h | 60 + .../LemcUSB/usb_internal_prot_handling.s | 329 + .../nv32lib/drivers/LemcUSB/usb_stack.c | 257 + .../nv32lib/drivers/LemcUSB/usb_stack.h | 58 + .../nv32lib/drivers/PMC/pmc.c | 83 + .../nv32lib/drivers/PMC/pmc.h | 298 + .../nv32lib/drivers/acmp/acmp.c | 169 + .../nv32lib/drivers/acmp/acmp.h | 455 + .../nv32lib/drivers/adc/adc.c | 256 + .../nv32lib/drivers/adc/adc.h | 655 + .../nv32lib/drivers/adc/adc.h~RF5818008.TMP | 655 + .../nv32lib/drivers/bitband/bitband.h | 93 + .../nv32lib/drivers/bos/bos.h | 559 + .../nv32lib/drivers/crc/crc.c | 228 + .../nv32lib/drivers/crc/crc.h | 66 + .../nv32lib/drivers/delay/delay.c | 63 + .../nv32lib/drivers/delay/delay.h | 18 + .../nv32lib/drivers/eeprom/eeprom.c | 270 + .../nv32lib/drivers/eeprom/eeprom.h | 33 + .../nv32lib/drivers/etm/etm.c | 852 + .../nv32lib/drivers/etm/etm.h | 1006 ++ .../nv32lib/drivers/gpio/gpio.c | 376 + .../nv32lib/drivers/gpio/gpio.h | 583 + .../nv32lib/drivers/gpio/gpio.h~RF61cebdf.TMP | 601 + .../nv32lib/drivers/ics/ics.c | 1103 ++ .../nv32lib/drivers/ics/ics.h | 347 + .../nv32lib/drivers/iic/i2c.c | 577 + .../nv32lib/drivers/iic/i2c.h | 503 + .../nv32lib/drivers/kbi/kbi.c | 252 + .../nv32lib/drivers/kbi/kbi.h | 372 + .../nv32lib/drivers/nvm/flash.c | 317 + .../nv32lib/drivers/nvm/flash.h | 84 + .../nv32lib/drivers/nvm/flash_cmd.c | 41 + .../nv32lib/drivers/pit/pit.c | 182 + .../nv32lib/drivers/pit/pit.h | 275 + .../nv32lib/drivers/rtc/rtc.c | 137 + .../nv32lib/drivers/rtc/rtc.h | 182 + .../nv32lib/drivers/sim/sim.c | 164 + .../nv32lib/drivers/sim/sim.h | 472 + .../nv32lib/drivers/spi/spi.c | 297 + .../nv32lib/drivers/spi/spi.h | 567 + .../nv32lib/drivers/uart/uart.c | 437 + .../nv32lib/drivers/uart/uart.h | 461 + .../nv32lib/drivers/wdog/wdog.c | 265 + .../nv32lib/drivers/wdog/wdog.h | 153 + .../example/NV32/ACMP_demo/ACMP_demo.c | 79 + .../nv32lib/example/NV32/ACMP_demo/isr.h | 36 + .../NV32/ADC_FIFO_demo/ADC_FIFO_demo.c | 104 + .../nv32lib/example/NV32/ADC_FIFO_demo/isr.h | 29 + .../example/NV32/ADC_HWT_demo/ADC_HWT_demo.c | 164 + .../nv32lib/example/NV32/ADC_HWT_demo/isr.h | 31 + .../example/NV32/ADC_Int_demo/ADC_Int_demo.c | 101 + .../nv32lib/example/NV32/ADC_Int_demo/isr.h | 28 + .../NV32/ADC_Poll_demo/ADC_Poll_demo.c | 52 + .../nv32lib/example/NV32/ADC_Poll_demo/isr.h | 27 + .../ADC_VSource_temp_demo.c | 73 + .../example/NV32/ADC_VSource_Temp_demo/isr.h | 27 + .../nv32lib/example/NV32/BOS_demo/BOS_demo.c | 304 + .../nv32lib/example/NV32/BOS_demo/isr.h | 34 + .../nv32lib/example/NV32/CRC_demo/CRC_demo.c | 64 + .../nv32lib/example/NV32/CRC_demo/isr.h | 23 + .../NV32/ETM_Combine_demo/ETM_Combine_demo.c | 69 + .../example/NV32/ETM_Combine_demo/isr.h | 38 + .../ETM_DualEdgeCapture_demo.c | 87 + .../NV32/ETM_DualEdgeCapture_demo/isr.h | 34 + .../NV32/ETM_EPWM_demo/ETM_EPWM_demo.c | 100 + .../nv32lib/example/NV32/ETM_EPWM_demo/isr.h | 35 + .../ETM_OutputCompare_demo.c | 34 + .../example/NV32/ETM_OutputCompare_demo/isr.h | 34 + .../NV32/ETM_PWMHB_demo/ETM_PWMHB_demo.c | 43 + .../nv32lib/example/NV32/ETM_PWMHB_demo/isr.h | 34 + .../example/NV32/Flash_demo/Flash_demo.c | 120 + .../nv32lib/example/NV32/Flash_demo/isr.h | 27 + .../NV32/GPIO_BOS_demo/GPIO_BOS_demo.c | 73 + .../nv32lib/example/NV32/GPIO_BOS_demo/isr.h | 42 + .../GPIO_OneCycleAccess_demo.c | 81 + .../NV32/GPIO_OneCycleAccess_demo/isr.h | 34 + .../example/NV32/GPIO_demo/GPIO_demo.c | 62 + .../nv32lib/example/NV32/GPIO_demo/isr.h | 34 + .../I2C_MasterInt_demo/I2C_MasterInt_demo.c | 109 + .../example/NV32/I2C_MasterInt_demo/i2c_app.c | 380 + .../example/NV32/I2C_MasterInt_demo/i2c_app.h | 71 + .../example/NV32/I2C_MasterInt_demo/isr.h | 29 + .../I2C_MasterPoll_demo/I2C_MasterPoll_demo.c | 78 + .../example/NV32/I2C_MasterPoll_demo/isr.h | 27 + .../NV32/I2C_Slave_demo/I2C_Slave_demo.c | 90 + .../example/NV32/I2C_Slave_demo/i2c_app.c | 381 + .../example/NV32/I2C_Slave_demo/i2c_app.h | 72 + .../nv32lib/example/NV32/I2C_Slave_demo/isr.h | 31 + .../nv32lib/example/NV32/KBI_demo/KBI_demo.c | 92 + .../nv32lib/example/NV32/KBI_demo/isr.h | 36 + .../nv32lib/example/NV32/KBI_demo/temp | 0 .../nv32lib/example/NV32/PIT_demo/PIT_demo.c | 84 + .../nv32lib/example/NV32/PIT_demo/isr.h | 37 + .../nv32lib/example/NV32/PMC_demo/PMC_demo.c | 74 + .../nv32lib/example/NV32/PMC_demo/isr.h | 27 + .../nv32lib/example/NV32/RTC_demo/RTC_demo.c | 81 + .../nv32lib/example/NV32/RTC_demo/isr.h | 33 + .../SPI_MasterInt_demo/SPI_MasterInt_demo.c | 105 + .../example/NV32/SPI_MasterInt_demo/isr.h | 44 + .../example/NV32/SPI_MasterInt_demo/spi_app.c | 212 + .../example/NV32/SPI_MasterInt_demo/spi_app.h | 48 + .../SPI_MasterPoll_demo/SPI_MasterPoll_demo.c | 91 + .../example/NV32/SPI_MasterPoll_demo/isr.h | 33 + .../NV32/SPI_Slave_demo/SPI_Slave_demo.c | 103 + .../nv32lib/example/NV32/SPI_Slave_demo/isr.h | 43 + .../example/NV32/SPI_Slave_demo/spi_app.c | 212 + .../example/NV32/SPI_Slave_demo/spi_app.h | 47 + .../example/NV32/SYSTICK_demo/Systick_demo.c | 63 + .../nv32lib/example/NV32/SYSTICK_demo/isr.h | 34 + .../UART_Interrupt_demo/UART_Interrupt_demo.c | 83 + .../NV32/UART_Interrupt_demo/UART_app.c | 157 + .../NV32/UART_Interrupt_demo/UART_app.h | 29 + .../example/NV32/UART_Interrupt_demo/isr.h | 39 + .../UART_Loopback_demo/UART_Loopback_demo.c | 58 + .../NV32/UART_Loopback_demo/UART_app.c | 157 + .../NV32/UART_Loopback_demo/UART_app.h | 30 + .../example/NV32/UART_Loopback_demo/isr.h | 43 + .../NV32/UART_Poll_demo/UART_Poll_demo.c | 40 + .../nv32lib/example/NV32/UART_Poll_demo/isr.h | 34 + .../NV32/WDOG_Feed_demo/WDOG_Feed_demo.c | 91 + .../nv32lib/example/NV32/WDOG_Feed_demo/isr.h | 34 + .../nv32lib/example/NV32/platinum/isr.h | 34 + .../nv32lib/example/NV32/platinum/platinum.c | 83 + .../nv32lib/platforms/NV32_config.h | 117 + Midi/music-box-nv32-master/scoreList.raw | Bin 0 -> 94224 bytes Midi/music-box-nv32-master/switch_new_gcc.sh | 1 + Midi/music-box-pc-master/.DS_Store | Bin 0 -> 6148 bytes Midi/music-box-pc-master/.gitignore | 416 + Midi/music-box-pc-master/.gitmodules | 3 + Midi/music-box-pc-master/README.md | 1 + .../WaveTableSynthesizer/AlgorithmTest.c | 165 + .../WaveTableSynthesizer/EnvelopeTable.c | 19 + .../WaveTableSynthesizer/EnvelopeTable.h | 8 + .../WaveTableSynthesizer/Player.c | 84 + .../WaveTableSynthesizer/Player.h | 49 + .../WaveTableSynthesizer/SynthCore.c | 105 + .../WaveTableSynthesizer/SynthCore.h | 82 + .../WaveTableSynthesizer/Synth_rv32.S | 326 + .../WaveTableSynthesizer/WaveTable.c | 2784 +++ .../WaveTableSynthesizer/WaveTable.h | 20 + .../WaveTable_Celesta_C5.c | 284 + .../WaveTable_Celesta_C5.h | 21 + .../WaveTable_Celesta_C6.c | 159 + .../WaveTable_Celesta_C6.h | 21 + .../WaveTableSynthesizer/score.c | 266 + .../codeblocks/music-box-pc-linux.cbp | 70 + .../codeblocks/music-box-pc-linux.layout | 35 + Midi/music-box-pc-master/music-box-pc.cpp | 284 + .../project/music-box-pc.sln | 25 + .../project/music-box-pc.vcxproj | 145 + .../project/music-box-pc.vcxproj.filters | 81 + .../rtaudio/CMakeLists.txt | 371 + Midi/music-box-pc-master/rtaudio/ChangeLog | 10 + Midi/music-box-pc-master/rtaudio/LICENSE | 27 + Midi/music-box-pc-master/rtaudio/Makefile.am | 34 + Midi/music-box-pc-master/rtaudio/README.md | 62 + Midi/music-box-pc-master/rtaudio/RtAudio.cpp | 10979 ++++++++++++ Midi/music-box-pc-master/rtaudio/RtAudio.h | 1189 ++ Midi/music-box-pc-master/rtaudio/autogen.sh | 107 + .../cmake/RtAudioConfigUninstall.cmake.in | 21 + Midi/music-box-pc-master/rtaudio/configure.ac | 324 + .../rtaudio/contrib/go/rtaudio/rtaudio.go | 563 + .../contrib/go/rtaudio/rtaudio_stub.cpp | 4 + .../rtaudio/contrib/go/rtaudio/rtaudio_stub.h | 1 + .../contrib/go/rtaudio/rtaudio_test.go | 71 + .../contrib/python/pyrtaudio/PyRtAudioTest.py | 106 + .../rtaudio/contrib/python/pyrtaudio/readme | 57 + .../python/pyrtaudio/rtaudiomodule.cpp | 711 + .../rtaudio/contrib/python/pyrtaudio/setup.py | 56 + .../rtaudio/doc/Doxyfile.in | 2614 +++ .../rtaudio/doc/Makefile.am | 33 + .../rtaudio/doc/doxygen/acknowledge.txt | 48 + .../rtaudio/doc/doxygen/apinotes.txt | 39 + .../rtaudio/doc/doxygen/compiling.txt | 92 + .../rtaudio/doc/doxygen/duplex.txt | 76 + .../rtaudio/doc/doxygen/error.txt | 5 + .../rtaudio/doc/doxygen/footer.html | 8 + .../rtaudio/doc/doxygen/header.html | 10 + .../rtaudio/doc/doxygen/license.txt | 30 + .../rtaudio/doc/doxygen/multi.txt | 7 + .../rtaudio/doc/doxygen/playback.txt | 82 + .../rtaudio/doc/doxygen/probe.txt | 73 + .../rtaudio/doc/doxygen/recording.txt | 68 + .../rtaudio/doc/doxygen/settings.txt | 48 + .../rtaudio/doc/doxygen/tutorial.txt | 48 + .../rtaudio/doc/images/ccrma.gif | Bin 0 -> 3527 bytes .../rtaudio/doc/images/mcgill.gif | Bin 0 -> 4614 bytes .../rtaudio/doc/images/meson.build | 10 + .../rtaudio/doc/meson.build | 22 + .../rtaudio/doc/release.txt | 201 + .../rtaudio/include/asio.cpp | 257 + .../rtaudio/include/asio.h | 1070 ++ .../rtaudio/include/asiodrivers.cpp | 186 + .../rtaudio/include/asiodrivers.h | 41 + .../rtaudio/include/asiodrvr.h | 76 + .../rtaudio/include/asioinfo.txt | 3 + .../rtaudio/include/asiolist.cpp | 306 + .../rtaudio/include/asiolist.h | 46 + .../rtaudio/include/asiosys.h | 82 + .../rtaudio/include/dsound.h | 2369 +++ .../include/functiondiscoverykeys_devpkey.h | 212 + .../rtaudio/include/ginclude.h | 38 + .../rtaudio/include/iasiodrv.h | 37 + .../rtaudio/include/iasiothiscallresolver.cpp | 572 + .../rtaudio/include/iasiothiscallresolver.h | 202 + .../rtaudio/include/soundcard.h | 1878 ++ Midi/music-box-pc-master/rtaudio/install.txt | 54 + .../rtaudio/m4/ax_cxx_compile_stdcxx.m4 | 951 ++ Midi/music-box-pc-master/rtaudio/meson.build | 136 + .../rtaudio/meson_options.txt | 13 + .../music-box-pc-master/rtaudio/rtaudio.pc.in | 12 + .../music-box-pc-master/rtaudio/rtaudio_c.cpp | 267 + Midi/music-box-pc-master/rtaudio/rtaudio_c.h | 309 + .../rtaudio/tests/CMakeLists.txt | 32 + .../rtaudio/tests/Makefile.am | 32 + .../rtaudio/tests/Windows/audioprobe.dsp | 158 + .../rtaudio/tests/Windows/duplex.dsp | 158 + .../rtaudio/tests/Windows/playraw.dsp | 158 + .../rtaudio/tests/Windows/playsaw.dsp | 158 + .../rtaudio/tests/Windows/record.dsp | 158 + .../rtaudio/tests/Windows/rtaudio.dsw | 101 + .../rtaudio/tests/Windows/testall.dsp | 158 + .../rtaudio/tests/Windows/teststops.dsp | 158 + .../rtaudio/tests/apinames.cpp | 157 + .../rtaudio/tests/audioprobe.cpp | 104 + .../rtaudio/tests/duplex.cpp | 139 + .../rtaudio/tests/meson.build | 10 + .../rtaudio/tests/playraw.cpp | 152 + .../rtaudio/tests/playsaw.cpp | 217 + .../rtaudio/tests/record.cpp | 174 + .../rtaudio/tests/testall.cpp | 233 + .../rtaudio/tests/teststops.cpp | 271 + .../xcode-project/.DS_Store | Bin 0 -> 6148 bytes .../music-box-pc.xcodeproj/project.pbxproj | 300 + .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + Midi/music-box-stm32f1-master/.gitignore | 40 + .../.vscode/launch.json | 17 + Midi/music-box-stm32f1-master/LICENSE | 674 + Midi/music-box-stm32f1-master/Makefile | 145 + Midi/music-box-stm32f1-master/build.bat | 2 + Midi/music-box-stm32f1-master/build.sh | 4 + .../freertos/croutine.c | 395 + .../freertos/event_groups.c | 752 + .../freertos/include/FreeRTOS.h | 1063 ++ .../freertos/include/FreeRTOSConfig.h | 163 + .../freertos/include/StackMacros.h | 171 + .../freertos/include/croutine.h | 762 + .../freertos/include/deprecated_definitions.h | 321 + .../freertos/include/event_groups.h | 797 + .../freertos/include/list.h | 453 + .../freertos/include/mpu_prototypes.h | 177 + .../freertos/include/mpu_wrappers.h | 201 + .../freertos/include/portable.h | 207 + .../freertos/include/projdefs.h | 161 + .../freertos/include/queue.h | 1798 ++ .../freertos/include/semphr.h | 1171 ++ .../freertos/include/stdint.readme | 27 + .../freertos/include/task.h | 2267 +++ .../freertos/include/timers.h | 1314 ++ Midi/music-box-stm32f1-master/freertos/list.c | 240 + .../freertos/portable/GCC/ARM_CM3/port.c | 710 + .../freertos/portable/GCC/ARM_CM3/portmacro.h | 284 + .../freertos/portable/MemMang/heap_1.c | 188 + .../freertos/portable/MemMang/heap_2.c | 314 + .../freertos/portable/MemMang/heap_3.c | 139 + .../freertos/portable/MemMang/heap_4.c | 478 + .../freertos/portable/MemMang/heap_5.c | 527 + .../music-box-stm32f1-master/freertos/queue.c | 2566 +++ .../freertos/readme.txt | 17 + .../music-box-stm32f1-master/freertos/tasks.c | 4807 ++++++ .../freertos/timers.c | 1092 ++ .../makefile_freertos.mk | 22 + .../makefile_std_lib.mk | 42 + Midi/music-box-stm32f1-master/stm32_flash.ld | 135 + .../CMSIS/CM3/CoreSupport/core_cm3.c | 784 + .../CMSIS/CM3/CoreSupport/core_cm3.h | 1818 ++ .../startup/gcc_ride7/startup_stm32f10x_cl.s | 468 + .../startup/gcc_ride7/startup_stm32f10x_hd.s | 465 + .../gcc_ride7/startup_stm32f10x_hd_vl.s | 442 + .../startup/gcc_ride7/startup_stm32f10x_ld.s | 343 + .../gcc_ride7/startup_stm32f10x_ld_vl.s | 383 + .../startup/gcc_ride7/startup_stm32f10x_md.s | 358 + .../gcc_ride7/startup_stm32f10x_md_vl.s | 399 + .../startup/gcc_ride7/startup_stm32f10x_xl.s | 465 + .../DeviceSupport/ST/STM32F10x/stm32f10x.h | 8336 +++++++++ .../ST/STM32F10x/system_stm32f10x.c | 1094 ++ .../ST/STM32F10x/system_stm32f10x.h | 98 + .../Release_Notes.html | 340 + .../STM32F10x_StdPeriph_Driver/inc/misc.h | 226 + .../inc/stm32f10x_adc.h | 489 + .../inc/stm32f10x_bkp.h | 201 + .../inc/stm32f10x_can.h | 703 + .../inc/stm32f10x_cec.h | 216 + .../inc/stm32f10x_crc.h | 100 + .../inc/stm32f10x_dac.h | 323 + .../inc/stm32f10x_dbgmcu.h | 125 + .../inc/stm32f10x_dma.h | 445 + .../inc/stm32f10x_exti.h | 190 + .../inc/stm32f10x_flash.h | 432 + .../inc/stm32f10x_fsmc.h | 739 + .../inc/stm32f10x_gpio.h | 391 + .../inc/stm32f10x_i2c.h | 690 + .../inc/stm32f10x_iwdg.h | 146 + .../inc/stm32f10x_pwr.h | 162 + .../inc/stm32f10x_rcc.h | 733 + .../inc/stm32f10x_rtc.h | 141 + .../inc/stm32f10x_sdio.h | 537 + .../inc/stm32f10x_spi.h | 493 + .../inc/stm32f10x_tim.h | 1170 ++ .../inc/stm32f10x_usart.h | 429 + .../inc/stm32f10x_wwdg.h | 121 + .../STM32F10x_StdPeriph_Driver/src/misc.c | 231 + .../src/stm32f10x_adc.c | 1313 ++ .../src/stm32f10x_bkp.c | 314 + .../src/stm32f10x_can.c | 1421 ++ .../src/stm32f10x_cec.c | 439 + .../src/stm32f10x_crc.c | 166 + .../src/stm32f10x_dac.c | 577 + .../src/stm32f10x_dbgmcu.c | 168 + .../src/stm32f10x_dma.c | 720 + .../src/stm32f10x_exti.c | 275 + .../src/stm32f10x_flash.c | 1685 ++ .../src/stm32f10x_fsmc.c | 872 + .../src/stm32f10x_gpio.c | 656 + .../src/stm32f10x_i2c.c | 1337 ++ .../src/stm32f10x_iwdg.c | 196 + .../src/stm32f10x_pwr.c | 313 + .../src/stm32f10x_rcc.c | 1476 ++ .../src/stm32f10x_rtc.c | 358 + .../src/stm32f10x_sdio.c | 804 + .../src/stm32f10x_spi.c | 914 + .../src/stm32f10x_tim.c | 2896 ++++ .../src/stm32f10x_usart.c | 1065 ++ .../src/stm32f10x_wwdg.c | 230 + .../stm32f10x_conf.h | 95 + .../Release_Notes.html | 894 + .../STM32_USB-FS-Device_Driver/inc/usb_core.h | 272 + .../STM32_USB-FS-Device_Driver/inc/usb_def.h | 103 + .../STM32_USB-FS-Device_Driver/inc/usb_init.h | 72 + .../STM32_USB-FS-Device_Driver/inc/usb_int.h | 55 + .../STM32_USB-FS-Device_Driver/inc/usb_lib.h | 62 + .../STM32_USB-FS-Device_Driver/inc/usb_mem.h | 54 + .../STM32_USB-FS-Device_Driver/inc/usb_regs.h | 757 + .../STM32_USB-FS-Device_Driver/inc/usb_sil.h | 57 + .../STM32_USB-FS-Device_Driver/inc/usb_type.h | 64 + .../STM32_USB-FS-Device_Driver/src/usb_core.c | 1075 ++ .../STM32_USB-FS-Device_Driver/src/usb_init.c | 96 + .../STM32_USB-FS-Device_Driver/src/usb_int.c | 215 + .../STM32_USB-FS-Device_Driver/src/usb_mem.c | 132 + .../STM32_USB-FS-Device_Driver/src/usb_regs.c | 845 + .../STM32_USB-FS-Device_Driver/src/usb_sil.c | 123 + .../user/AlgorithmTest.c | 170 + .../user/EnvelopTable.c | 19 + .../user/EnvelopeTable.h | 8 + .../user/Hal/gcc-stdio-retarget.c | 111 + Midi/music-box-stm32f1-master/user/Hal/hal.c | 363 + Midi/music-box-stm32f1-master/user/Hal/hal.h | 85 + .../user/Hal/hw_config.h | 47 + .../user/Hal/stm32_it.c | 221 + .../user/Hal/stm32_it.h | 64 + .../user/Hal/uart_log.c | 253 + .../user/Hal/uart_log.h | 21 + Midi/music-box-stm32f1-master/user/Player.c | 82 + Midi/music-box-stm32f1-master/user/Player.h | 33 + .../user/PlayerUtils.s | 15 + .../music-box-stm32f1-master/user/SynthCore.c | 87 + .../music-box-stm32f1-master/user/SynthCore.h | 45 + Midi/music-box-stm32f1-master/user/Synth_m3.s | 214 + .../user/Usb/usb_conf.h | 115 + .../user/Usb/usb_desc.c | 345 + .../user/Usb/usb_desc.h | 81 + .../user/Usb/usb_endp.c | 115 + .../user/Usb/usb_istr.c | 242 + .../user/Usb/usb_istr.h | 104 + .../user/Usb/usb_prop.c | 468 + .../user/Usb/usb_prop.h | 100 + .../user/Usb/usb_pwr.c | 351 + .../user/Usb/usb_pwr.h | 82 + .../user/WaveTable_Celesta_C5.c | 284 + .../user/WaveTable_Celesta_C5.h | 11 + .../user/WaveTable_Celesta_C6.c | 159 + .../user/WaveTable_Celesta_C6.h | 11 + Midi/music-box-stm32f1-master/user/main.c | 207 + Midi/music-box-stm32f1-master/user/score.c | 137 + README.md | 7 +- .../.github/workflows/codeql-analysis.yml | 71 + arduino-music-box-master/.gitignore | 22 + arduino-music-box-master/LICENSE | 21 + arduino-music-box-master/README.md | 37 + arduino-music-box-master/docs/circuit_v1.jpg | Bin 0 -> 41467 bytes arduino-music-box-master/docs/circuit_v2.jpg | Bin 0 -> 54837 bytes .../midi-storage/45188.mid | Bin 0 -> 3241 bytes .../midi-storage/Mario_Bros_mono.mid | Bin 0 -> 3262 bytes .../midi-storage/Nokia_tune.mid | Bin 0 -> 192 bytes .../midi-storage/jingle_bells_mono.mid | Bin 0 -> 1042 bytes arduino-music-box-master/package-lock.json | 1392 ++ arduino-music-box-master/package.json | 29 + .../src/arduino/play/play.ino | 45 + .../arduino/playNokia/playNokia/playNokia.ino | 54 + arduino-music-box-master/src/node/index.js | 56 + .../src/node/midi/helper.js | 53 + .../src/node/midi/parser.js | 97 + .../src/node/serial/proxy.js | 24 + arduino-play-melody/musicBox/musicBox.ino | 190 + arduino-play-melody/musicBox/pitches.h | 89 + 699 files changed, 186162 insertions(+), 1 deletion(-) create mode 100644 Midi/arduino-midi-player-master/.gitignore create mode 100644 Midi/arduino-midi-player-master/LICENSE create mode 100644 Midi/arduino-midi-player-master/README.md create mode 100644 Midi/arduino-midi-player-master/arduino-midi-player.ino create mode 100644 Midi/arduino-midi-player-master/jasmid/LICENSE create mode 100644 Midi/arduino-midi-player-master/jasmid/README create mode 100644 Midi/arduino-midi-player-master/jasmid/midifile.js create mode 100644 Midi/arduino-midi-player-master/jasmid/stream.js create mode 100644 Midi/arduino-midi-player-master/midi2wave.h create mode 100644 Midi/arduino-midi-player-master/midi2wave.ino create mode 100644 Midi/arduino-midi-player-master/smf2seq.js create mode 100644 Midi/mg/AVR.INC create mode 100644 Midi/mg/mel.txt create mode 100644 Midi/mg/mel1.txt create mode 100644 Midi/mg/mel2.txt create mode 100644 Midi/mg/mel2asm.pl create mode 100644 Midi/mg/melody.asm create mode 100644 Midi/mg/mg.asm create mode 100644 Midi/mg/mg.hex create mode 100644 Midi/mg/mg.inc create mode 100644 Midi/mg/mg.tuo create mode 100644 Midi/mg/mg.xmp create mode 100644 Midi/mg/p1.wav create mode 100644 Midi/mg/wav2asm.pl create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/ScoreListGen.log create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/generate_score_data.bat create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/hex-file/mg.hex create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/hex-file/mg_167.hex create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/hex-file/mg_m328p.hex create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/Air_on_the_G_String_music_box.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/Always-with-me-musicbox.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/Auld_Lang_Syne_MusicBox.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/Auld_Lang_Syne_MusicBox_va.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/BWV_1068_Air.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/Bach_-_Arioso_from_Cantata_BWV_156.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/Bach_-_Jesu_Joy_of_Mans_Desiring_BWV_147.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/Bach_Jesu_Joy_of_Mans_Desiring_for_flute_and_piano_ver_2.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/Bach_Suite3_2.Air.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/Bad_Apple.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/Bad_Apple_full.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/Beethoven_-_Pathetique.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/Beethoven_-_Violin_Sonata_No.5_Op.24_Spring_movement_I._Allegro.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/Canon in D.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/Card Captor Sakura - Nukumori no Kioku.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/Cardcaptor_Sakura_Clear_Card_-_CLEAR.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/Cardcaptor_Sakura_Tomo_He.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/Classical_Music_Mashup_WIP.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/D498-Musicbox.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/EVA 残酷天使的行动纲领 指弹.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/Edelweiss.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/Eine_Kleine_Nachtmusik.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/Eine_Kleine_Nachtmusik_2nd_Movement.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/HarryPotter.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/Innocent.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/J._S._Bach_Sheep_May_Safely_Graze_BWV_208_No._9_for_Piano_arranged_by_Egon_Petri.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/K381.MID create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/Katyusha.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/Laputa.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/Menuet_from_Divertimento_in_D_K._334_-_W.A._Mozart.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/Menuett_G_dur_BWV.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/Moon_River_Noted_MusicBox.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/Moonlight_Sonata_Beethoven.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/Mozart_-_Piano_Sonata_No.16_K_545_Andante_Music-box.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/Mozart_314_Allegro.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/NYAN_CAT.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/Piano_Sonata_No.16_K_545_Andante.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/Piano_Sonata_No._16_K_545_Allegro_by_W.A._Mozart.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/River_Flows_in_You.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/Senbonzakura (1).mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/Studio_Ghibli_Piano_Suite__Zacky_the_Pianist__Full_Sheets.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/Summer_Joe_Hisaishi.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/Super_Mario_World_Athletic_Theme(1).mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/Tchaikovsky_Waltz_of_the_Flowers_from_The_Nutcracker_Piano_4_hands.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/The_Goldberg_Variations_BWV_988_for_Organ.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/The_Internationale.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/The_Nutcraker_Medley-Four_Hands_VIDEOSCORE.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/Toccata-and-Fugue-in-D-minor.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/Touhou_Medley.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/Vivaldi_-_Summer_-_Piano.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/W.A._Mozart_-_Symphony_no._40_-_Mov._I.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/WTC_1.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/Waltz_Of_The_Flowers-for_Casey.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/Waltz_of_the_flowers.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/Yoru_no_uta_-_yenoge.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/bach_brandeburg_concert_1047_1_(nc)anonym.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/bach_brandeburg_concert_1048_1_(nc)anonym.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/bach_brandeburg_concert_1050_1_(nc)anonym.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/bach_tocatta_fugue_d_minor.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/bwv1052a.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/debussy_bergamasque_01.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/debussy_bergamasque_03.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/inter.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/molihua.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/mozart_k265.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/mozart_k331_1.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/mozart_k331_3.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/mozart_k475.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/mozart_k485.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/mozart_k545_1.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/mozart_k545_3.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/mozart_sonata_2-pianos_375_1_(c)ishenko.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/mozart_sonata_2-pianos_375_2_(c)ishenko.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/mozart_sonata_2-pianos_375_3_(c)ishenko.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/piano_fantasie_475_(c)oguri.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/piano_sonata_457_1_(c)oguri.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/piano_sonata_457_3_(c)oguri.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/polka.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/qianxun.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/qianxun_waltz.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/senbonzakura_flute.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/symphony_7_2_(c)cvikl.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/tchaikovsky_op71a_3.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/twinkle.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/初音未来的消失钢琴.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/千本桜を黒く染め直してみた.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/夜之歌.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/菊花台_musicbox.mid create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-sample/蓝色多瑙河.MID create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midi-to-hex.exe create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/midiFilieList.txt create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/readme.txt create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/scoreList.c create mode 100644 Midi/midi-to-hex-example/midi-to-hex-example/scoreList.raw create mode 100644 Midi/music-box-arduino-master/AlgorithmTest.c create mode 100644 Midi/music-box-arduino-master/AsmCommon.h create mode 100644 Midi/music-box-arduino-master/Doc/Connection for Arduino Nano.png create mode 100644 Midi/music-box-arduino-master/EnvelopTable.c create mode 100644 Midi/music-box-arduino-master/LICENSE create mode 100644 Midi/music-box-arduino-master/MusicBox.cpp create mode 100644 Midi/music-box-arduino-master/MusicBox.h create mode 100644 Midi/music-box-arduino-master/PeriodTimer.S create mode 100644 Midi/music-box-arduino-master/PeriodTimer.h create mode 100644 Midi/music-box-arduino-master/PlaySong/AlgorithmTest.c create mode 100644 Midi/music-box-arduino-master/PlaySong/AsmCommon.h create mode 100644 Midi/music-box-arduino-master/PlaySong/EnvelopTable.c create mode 100644 Midi/music-box-arduino-master/PlaySong/LICENSE create mode 100644 Midi/music-box-arduino-master/PlaySong/MusicBox.cpp create mode 100644 Midi/music-box-arduino-master/PlaySong/MusicBox.h create mode 100644 Midi/music-box-arduino-master/PlaySong/PeriodTimer.S create mode 100644 Midi/music-box-arduino-master/PlaySong/PeriodTimer.h create mode 100644 Midi/music-box-arduino-master/PlaySong/PlaySong.ino create mode 100644 Midi/music-box-arduino-master/PlaySong/Player.c create mode 100644 Midi/music-box-arduino-master/PlaySong/Player.h create mode 100644 Midi/music-box-arduino-master/PlaySong/PlayerAsm.S create mode 100644 Midi/music-box-arduino-master/PlaySong/README.md create mode 100644 Midi/music-box-arduino-master/PlaySong/Synth.S create mode 100644 Midi/music-box-arduino-master/PlaySong/SynthCore.c create mode 100644 Midi/music-box-arduino-master/PlaySong/SynthCore.h create mode 100644 Midi/music-box-arduino-master/PlaySong/SynthCoreAsm.S create mode 100644 Midi/music-box-arduino-master/PlaySong/UpdateTick.S create mode 100644 Midi/music-box-arduino-master/PlaySong/WaveTable.c create mode 100644 Midi/music-box-arduino-master/PlaySong/WaveTable.h create mode 100644 Midi/music-box-arduino-master/PlaySong/library.properties create mode 100644 Midi/music-box-arduino-master/Player.c create mode 100644 Midi/music-box-arduino-master/Player.h create mode 100644 Midi/music-box-arduino-master/PlayerAsm.S create mode 100644 Midi/music-box-arduino-master/README.md create mode 100644 Midi/music-box-arduino-master/Synth.inc create mode 100644 Midi/music-box-arduino-master/SynthCore.c create mode 100644 Midi/music-box-arduino-master/SynthCore.h create mode 100644 Midi/music-box-arduino-master/SynthCoreAsm.S create mode 100644 Midi/music-box-arduino-master/UpdateTick.inc create mode 100644 Midi/music-box-arduino-master/WaveTable.c create mode 100644 Midi/music-box-arduino-master/WaveTable.h create mode 100644 Midi/music-box-arduino-master/examples/PlaySong/PlaySong.ino create mode 100644 Midi/music-box-arduino-master/library.properties create mode 100644 Midi/music-box-avr-master/.gitignore create mode 100644 Midi/music-box-avr-master/.vscode/tasks.json create mode 100644 Midi/music-box-avr-master/Atmel AT1886 Mixing Assembly and C with AVRGCC.pdf create mode 100644 Midi/music-box-avr-master/Atmel-0856-AVR-Instruction-Set-Manual.pdf create mode 100644 Midi/music-box-avr-master/Atmel-42787-AVR-Software-User-Guide_ApplicationNote_AVR42787.pdf create mode 100644 Midi/music-box-avr-master/Makefile create mode 100644 Midi/music-box-avr-master/WavetableSynthesizer/AlgorithmTest.c create mode 100644 Midi/music-box-avr-master/WavetableSynthesizer/AsmCommon.h create mode 100644 Midi/music-box-avr-master/WavetableSynthesizer/EnvelopTable.c create mode 100644 Midi/music-box-avr-master/WavetableSynthesizer/PeriodTimer.S create mode 100644 Midi/music-box-avr-master/WavetableSynthesizer/PeriodTimer.h create mode 100644 Midi/music-box-avr-master/WavetableSynthesizer/Player.c create mode 100644 Midi/music-box-avr-master/WavetableSynthesizer/Player.h create mode 100644 Midi/music-box-avr-master/WavetableSynthesizer/PlayerAsm.S create mode 100644 Midi/music-box-avr-master/WavetableSynthesizer/Synth.inc create mode 100644 Midi/music-box-avr-master/WavetableSynthesizer/SynthCore.c create mode 100644 Midi/music-box-avr-master/WavetableSynthesizer/SynthCore.h create mode 100644 Midi/music-box-avr-master/WavetableSynthesizer/SynthCoreAsm.S create mode 100644 Midi/music-box-avr-master/WavetableSynthesizer/UpdateTick.inc create mode 100644 Midi/music-box-avr-master/WavetableSynthesizer/WaveTable.c create mode 100644 Midi/music-box-avr-master/WavetableSynthesizer/WaveTable.h create mode 100644 Midi/music-box-avr-master/assembly.pdf create mode 100644 Midi/music-box-avr-master/main.c create mode 100644 Midi/music-box-avr-master/mg_avr.tuo create mode 100644 Midi/music-box-avr-master/mg_avr.xmp create mode 100644 Midi/music-box-avr-master/score.c create mode 100644 Midi/music-box-nv32-master/.cproject create mode 100644 Midi/music-box-nv32-master/.gitignore create mode 100644 Midi/music-box-nv32-master/.project create mode 100644 Midi/music-box-nv32-master/.settings/language.settings.xml create mode 100644 Midi/music-box-nv32-master/.settings/org.eclipse.core.resources.prefs create mode 100644 Midi/music-box-nv32-master/.travis.yml create mode 100644 Midi/music-box-nv32-master/.vscode/launch.json create mode 100644 Midi/music-box-nv32-master/.vscode/settings.json create mode 100644 Midi/music-box-nv32-master/BinarySearch.py create mode 100644 Midi/music-box-nv32-master/DownloadScoreData.c create mode 100644 Midi/music-box-nv32-master/DownloadScoreData.h create mode 100644 Midi/music-box-nv32-master/KeyScan.c create mode 100644 Midi/music-box-nv32-master/KeyScan.h create mode 100644 Midi/music-box-nv32-master/LICENSE create mode 100644 Midi/music-box-nv32-master/Makefile create mode 100644 Midi/music-box-nv32-master/README.md create mode 100644 Midi/music-box-nv32-master/Ring-Buffer/Doxyfile create mode 100644 Midi/music-box-nv32-master/Ring-Buffer/LICENSE create mode 100644 Midi/music-box-nv32-master/Ring-Buffer/README.md create mode 100644 Midi/music-box-nv32-master/Ring-Buffer/examples/Makefile create mode 100644 Midi/music-box-nv32-master/Ring-Buffer/examples/simple.c create mode 100644 Midi/music-box-nv32-master/Ring-Buffer/ringbuffer.c create mode 100644 Midi/music-box-nv32-master/Ring-Buffer/ringbuffer.h create mode 100644 Midi/music-box-nv32-master/WaveTableSynthesizer/AlgorithmTest.c create mode 100644 Midi/music-box-nv32-master/WaveTableSynthesizer/AsmCommon.h create mode 100644 Midi/music-box-nv32-master/WaveTableSynthesizer/EnvelopTable.c create mode 100644 Midi/music-box-nv32-master/WaveTableSynthesizer/EnvelopeTable.h create mode 100644 Midi/music-box-nv32-master/WaveTableSynthesizer/PeriodTimer.h create mode 100644 Midi/music-box-nv32-master/WaveTableSynthesizer/PeriodTimer.s create mode 100644 Midi/music-box-nv32-master/WaveTableSynthesizer/Player.c create mode 100644 Midi/music-box-nv32-master/WaveTableSynthesizer/Player.h create mode 100644 Midi/music-box-nv32-master/WaveTableSynthesizer/RegDefNv32.h create mode 100644 Midi/music-box-nv32-master/WaveTableSynthesizer/Synth.inc create mode 100644 Midi/music-box-nv32-master/WaveTableSynthesizer/SynthCore.c create mode 100644 Midi/music-box-nv32-master/WaveTableSynthesizer/SynthCore.h create mode 100644 Midi/music-box-nv32-master/WaveTableSynthesizer/SynthCoreAsm.s create mode 100644 Midi/music-box-nv32-master/WaveTableSynthesizer/UpdateTick.inc create mode 100644 Midi/music-box-nv32-master/WaveTableSynthesizer/WaveTable_Celesta_C5.c create mode 100644 Midi/music-box-nv32-master/WaveTableSynthesizer/WaveTable_Celesta_C5.h create mode 100644 Midi/music-box-nv32-master/WaveTableSynthesizer/WaveTable_Celesta_C6.c create mode 100644 Midi/music-box-nv32-master/WaveTableSynthesizer/WaveTable_Celesta_C6.h create mode 100644 Midi/music-box-nv32-master/doc/NV32F100-系统初始化说明-v1.1.pdf create mode 100644 Midi/music-box-nv32-master/doc/NV32F100_用户手册_V1.55.pdf create mode 100644 Midi/music-box-nv32-master/doc/NV32F100x_参考手册_v1.17.pdf create mode 100644 Midi/music-box-nv32-master/doc/music-box-photo.jpg create mode 100644 Midi/music-box-nv32-master/download.py create mode 100644 Midi/music-box-nv32-master/gcc-stdio-retarget.c create mode 100644 Midi/music-box-nv32-master/isr.h create mode 100644 Midi/music-box-nv32-master/main.c create mode 100644 Midi/music-box-nv32-master/makefile_std_lib.mk create mode 100644 Midi/music-box-nv32-master/nv32f100.ld create mode 100644 Midi/music-box-nv32-master/nv32lib/common/alloc.c create mode 100644 Midi/music-box-nv32-master/nv32lib/common/assert.c create mode 100644 Midi/music-box-nv32-master/nv32lib/common/assert.h create mode 100644 Midi/music-box-nv32-master/nv32lib/common/common.h create mode 100644 Midi/music-box-nv32-master/nv32lib/common/core_cm0plus.h create mode 100644 Midi/music-box-nv32-master/nv32lib/common/core_cmFunc.h create mode 100644 Midi/music-box-nv32-master/nv32lib/common/core_cmInstr.h create mode 100644 Midi/music-box-nv32-master/nv32lib/common/core_cmSimd.h create mode 100644 Midi/music-box-nv32-master/nv32lib/common/io.c create mode 100644 Midi/music-box-nv32-master/nv32lib/common/io.h create mode 100644 Midi/music-box-nv32-master/nv32lib/common/memtest.c create mode 100644 Midi/music-box-nv32-master/nv32lib/common/memtest.h create mode 100644 Midi/music-box-nv32-master/nv32lib/common/printf.c create mode 100644 Midi/music-box-nv32-master/nv32lib/common/queue.c create mode 100644 Midi/music-box-nv32-master/nv32lib/common/queue.h create mode 100644 Midi/music-box-nv32-master/nv32lib/common/startup.c create mode 100644 Midi/music-box-nv32-master/nv32lib/common/startup.h create mode 100644 Midi/music-box-nv32-master/nv32lib/common/system_nv32.c create mode 100644 Midi/music-box-nv32-master/nv32lib/common/system_nv32.h create mode 100644 Midi/music-box-nv32-master/nv32lib/common/typedef.h create mode 100644 Midi/music-box-nv32-master/nv32lib/common/uif.c create mode 100644 Midi/music-box-nv32-master/nv32lib/common/uif.h create mode 100644 Midi/music-box-nv32-master/nv32lib/cpu/arm_cm0.c create mode 100644 Midi/music-box-nv32-master/nv32lib/cpu/arm_cm0.h create mode 100644 Midi/music-box-nv32-master/nv32lib/cpu/headers/NV32.h create mode 100644 Midi/music-box-nv32-master/nv32lib/cpu/headers/derivative.h create mode 100644 Midi/music-box-nv32-master/nv32lib/cpu/start.c create mode 100644 Midi/music-box-nv32-master/nv32lib/cpu/start.h create mode 100644 Midi/music-box-nv32-master/nv32lib/cpu/startup_NV32_gcc.s create mode 100644 Midi/music-box-nv32-master/nv32lib/cpu/startup_NV32_keil.s create mode 100644 Midi/music-box-nv32-master/nv32lib/cpu/sysinit.c create mode 100644 Midi/music-box-nv32-master/nv32lib/cpu/sysinit.h create mode 100644 Midi/music-box-nv32-master/nv32lib/cpu/system_NV32.h create mode 100644 Midi/music-box-nv32-master/nv32lib/cpu/systick.c create mode 100644 Midi/music-box-nv32-master/nv32lib/cpu/systick.h create mode 100644 Midi/music-box-nv32-master/nv32lib/cpu/vectors.c create mode 100644 Midi/music-box-nv32-master/nv32lib/cpu/vectors.h create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/LemcUSB/GPL_EXCEPTION.txt create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/LemcUSB/LICENSE.txt create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/LemcUSB/c_compat.h create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/LemcUSB/usb.c create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/LemcUSB/usb.h create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/LemcUSB/usb_config.h create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/LemcUSB/usb_descriptors.h create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/LemcUSB/usb_helperfunctions.h create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/LemcUSB/usb_hid.c create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/LemcUSB/usb_hid.h create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/LemcUSB/usb_internal_bitbangusb.s create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/LemcUSB/usb_internal_ll.c create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/LemcUSB/usb_internal_ll.h create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/LemcUSB/usb_internal_prot_handling.s create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/LemcUSB/usb_stack.c create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/LemcUSB/usb_stack.h create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/PMC/pmc.c create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/PMC/pmc.h create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/acmp/acmp.c create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/acmp/acmp.h create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/adc/adc.c create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/adc/adc.h create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/adc/adc.h~RF5818008.TMP create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/bitband/bitband.h create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/bos/bos.h create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/crc/crc.c create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/crc/crc.h create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/delay/delay.c create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/delay/delay.h create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/eeprom/eeprom.c create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/eeprom/eeprom.h create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/etm/etm.c create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/etm/etm.h create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/gpio/gpio.c create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/gpio/gpio.h create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/gpio/gpio.h~RF61cebdf.TMP create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/ics/ics.c create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/ics/ics.h create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/iic/i2c.c create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/iic/i2c.h create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/kbi/kbi.c create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/kbi/kbi.h create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/nvm/flash.c create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/nvm/flash.h create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/nvm/flash_cmd.c create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/pit/pit.c create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/pit/pit.h create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/rtc/rtc.c create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/rtc/rtc.h create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/sim/sim.c create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/sim/sim.h create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/spi/spi.c create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/spi/spi.h create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/uart/uart.c create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/uart/uart.h create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/wdog/wdog.c create mode 100644 Midi/music-box-nv32-master/nv32lib/drivers/wdog/wdog.h create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/ACMP_demo/ACMP_demo.c create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/ACMP_demo/isr.h create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/ADC_FIFO_demo/ADC_FIFO_demo.c create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/ADC_FIFO_demo/isr.h create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/ADC_HWT_demo/ADC_HWT_demo.c create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/ADC_HWT_demo/isr.h create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/ADC_Int_demo/ADC_Int_demo.c create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/ADC_Int_demo/isr.h create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/ADC_Poll_demo/ADC_Poll_demo.c create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/ADC_Poll_demo/isr.h create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/ADC_VSource_Temp_demo/ADC_VSource_temp_demo.c create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/ADC_VSource_Temp_demo/isr.h create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/BOS_demo/BOS_demo.c create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/BOS_demo/isr.h create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/CRC_demo/CRC_demo.c create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/CRC_demo/isr.h create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/ETM_Combine_demo/ETM_Combine_demo.c create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/ETM_Combine_demo/isr.h create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/ETM_DualEdgeCapture_demo/ETM_DualEdgeCapture_demo.c create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/ETM_DualEdgeCapture_demo/isr.h create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/ETM_EPWM_demo/ETM_EPWM_demo.c create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/ETM_EPWM_demo/isr.h create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/ETM_OutputCompare_demo/ETM_OutputCompare_demo.c create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/ETM_OutputCompare_demo/isr.h create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/ETM_PWMHB_demo/ETM_PWMHB_demo.c create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/ETM_PWMHB_demo/isr.h create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/Flash_demo/Flash_demo.c create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/Flash_demo/isr.h create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/GPIO_BOS_demo/GPIO_BOS_demo.c create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/GPIO_BOS_demo/isr.h create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/GPIO_OneCycleAccess_demo/GPIO_OneCycleAccess_demo.c create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/GPIO_OneCycleAccess_demo/isr.h create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/GPIO_demo/GPIO_demo.c create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/GPIO_demo/isr.h create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/I2C_MasterInt_demo/I2C_MasterInt_demo.c create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/I2C_MasterInt_demo/i2c_app.c create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/I2C_MasterInt_demo/i2c_app.h create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/I2C_MasterInt_demo/isr.h create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/I2C_MasterPoll_demo/I2C_MasterPoll_demo.c create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/I2C_MasterPoll_demo/isr.h create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/I2C_Slave_demo/I2C_Slave_demo.c create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/I2C_Slave_demo/i2c_app.c create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/I2C_Slave_demo/i2c_app.h create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/I2C_Slave_demo/isr.h create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/KBI_demo/KBI_demo.c create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/KBI_demo/isr.h create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/KBI_demo/temp create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/PIT_demo/PIT_demo.c create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/PIT_demo/isr.h create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/PMC_demo/PMC_demo.c create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/PMC_demo/isr.h create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/RTC_demo/RTC_demo.c create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/RTC_demo/isr.h create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/SPI_MasterInt_demo/SPI_MasterInt_demo.c create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/SPI_MasterInt_demo/isr.h create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/SPI_MasterInt_demo/spi_app.c create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/SPI_MasterInt_demo/spi_app.h create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/SPI_MasterPoll_demo/SPI_MasterPoll_demo.c create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/SPI_MasterPoll_demo/isr.h create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/SPI_Slave_demo/SPI_Slave_demo.c create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/SPI_Slave_demo/isr.h create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/SPI_Slave_demo/spi_app.c create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/SPI_Slave_demo/spi_app.h create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/SYSTICK_demo/Systick_demo.c create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/SYSTICK_demo/isr.h create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/UART_Interrupt_demo/UART_Interrupt_demo.c create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/UART_Interrupt_demo/UART_app.c create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/UART_Interrupt_demo/UART_app.h create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/UART_Interrupt_demo/isr.h create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/UART_Loopback_demo/UART_Loopback_demo.c create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/UART_Loopback_demo/UART_app.c create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/UART_Loopback_demo/UART_app.h create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/UART_Loopback_demo/isr.h create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/UART_Poll_demo/UART_Poll_demo.c create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/UART_Poll_demo/isr.h create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/WDOG_Feed_demo/WDOG_Feed_demo.c create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/WDOG_Feed_demo/isr.h create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/platinum/isr.h create mode 100644 Midi/music-box-nv32-master/nv32lib/example/NV32/platinum/platinum.c create mode 100644 Midi/music-box-nv32-master/nv32lib/platforms/NV32_config.h create mode 100644 Midi/music-box-nv32-master/scoreList.raw create mode 100644 Midi/music-box-nv32-master/switch_new_gcc.sh create mode 100644 Midi/music-box-pc-master/.DS_Store create mode 100644 Midi/music-box-pc-master/.gitignore create mode 100644 Midi/music-box-pc-master/.gitmodules create mode 100644 Midi/music-box-pc-master/README.md create mode 100644 Midi/music-box-pc-master/WaveTableSynthesizer/AlgorithmTest.c create mode 100644 Midi/music-box-pc-master/WaveTableSynthesizer/EnvelopeTable.c create mode 100644 Midi/music-box-pc-master/WaveTableSynthesizer/EnvelopeTable.h create mode 100644 Midi/music-box-pc-master/WaveTableSynthesizer/Player.c create mode 100644 Midi/music-box-pc-master/WaveTableSynthesizer/Player.h create mode 100644 Midi/music-box-pc-master/WaveTableSynthesizer/SynthCore.c create mode 100644 Midi/music-box-pc-master/WaveTableSynthesizer/SynthCore.h create mode 100644 Midi/music-box-pc-master/WaveTableSynthesizer/Synth_rv32.S create mode 100644 Midi/music-box-pc-master/WaveTableSynthesizer/WaveTable.c create mode 100644 Midi/music-box-pc-master/WaveTableSynthesizer/WaveTable.h create mode 100644 Midi/music-box-pc-master/WaveTableSynthesizer/WaveTable_Celesta_C5.c create mode 100644 Midi/music-box-pc-master/WaveTableSynthesizer/WaveTable_Celesta_C5.h create mode 100644 Midi/music-box-pc-master/WaveTableSynthesizer/WaveTable_Celesta_C6.c create mode 100644 Midi/music-box-pc-master/WaveTableSynthesizer/WaveTable_Celesta_C6.h create mode 100644 Midi/music-box-pc-master/WaveTableSynthesizer/score.c create mode 100644 Midi/music-box-pc-master/codeblocks/music-box-pc-linux.cbp create mode 100644 Midi/music-box-pc-master/codeblocks/music-box-pc-linux.layout create mode 100644 Midi/music-box-pc-master/music-box-pc.cpp create mode 100644 Midi/music-box-pc-master/project/music-box-pc.sln create mode 100644 Midi/music-box-pc-master/project/music-box-pc.vcxproj create mode 100644 Midi/music-box-pc-master/project/music-box-pc.vcxproj.filters create mode 100644 Midi/music-box-pc-master/rtaudio/CMakeLists.txt create mode 100644 Midi/music-box-pc-master/rtaudio/ChangeLog create mode 100644 Midi/music-box-pc-master/rtaudio/LICENSE create mode 100644 Midi/music-box-pc-master/rtaudio/Makefile.am create mode 100644 Midi/music-box-pc-master/rtaudio/README.md create mode 100644 Midi/music-box-pc-master/rtaudio/RtAudio.cpp create mode 100644 Midi/music-box-pc-master/rtaudio/RtAudio.h create mode 100644 Midi/music-box-pc-master/rtaudio/autogen.sh create mode 100644 Midi/music-box-pc-master/rtaudio/cmake/RtAudioConfigUninstall.cmake.in create mode 100644 Midi/music-box-pc-master/rtaudio/configure.ac create mode 100644 Midi/music-box-pc-master/rtaudio/contrib/go/rtaudio/rtaudio.go create mode 100644 Midi/music-box-pc-master/rtaudio/contrib/go/rtaudio/rtaudio_stub.cpp create mode 100644 Midi/music-box-pc-master/rtaudio/contrib/go/rtaudio/rtaudio_stub.h create mode 100644 Midi/music-box-pc-master/rtaudio/contrib/go/rtaudio/rtaudio_test.go create mode 100644 Midi/music-box-pc-master/rtaudio/contrib/python/pyrtaudio/PyRtAudioTest.py create mode 100644 Midi/music-box-pc-master/rtaudio/contrib/python/pyrtaudio/readme create mode 100644 Midi/music-box-pc-master/rtaudio/contrib/python/pyrtaudio/rtaudiomodule.cpp create mode 100644 Midi/music-box-pc-master/rtaudio/contrib/python/pyrtaudio/setup.py create mode 100644 Midi/music-box-pc-master/rtaudio/doc/Doxyfile.in create mode 100644 Midi/music-box-pc-master/rtaudio/doc/Makefile.am create mode 100644 Midi/music-box-pc-master/rtaudio/doc/doxygen/acknowledge.txt create mode 100644 Midi/music-box-pc-master/rtaudio/doc/doxygen/apinotes.txt create mode 100644 Midi/music-box-pc-master/rtaudio/doc/doxygen/compiling.txt create mode 100644 Midi/music-box-pc-master/rtaudio/doc/doxygen/duplex.txt create mode 100644 Midi/music-box-pc-master/rtaudio/doc/doxygen/error.txt create mode 100644 Midi/music-box-pc-master/rtaudio/doc/doxygen/footer.html create mode 100644 Midi/music-box-pc-master/rtaudio/doc/doxygen/header.html create mode 100644 Midi/music-box-pc-master/rtaudio/doc/doxygen/license.txt create mode 100644 Midi/music-box-pc-master/rtaudio/doc/doxygen/multi.txt create mode 100644 Midi/music-box-pc-master/rtaudio/doc/doxygen/playback.txt create mode 100644 Midi/music-box-pc-master/rtaudio/doc/doxygen/probe.txt create mode 100644 Midi/music-box-pc-master/rtaudio/doc/doxygen/recording.txt create mode 100644 Midi/music-box-pc-master/rtaudio/doc/doxygen/settings.txt create mode 100644 Midi/music-box-pc-master/rtaudio/doc/doxygen/tutorial.txt create mode 100644 Midi/music-box-pc-master/rtaudio/doc/images/ccrma.gif create mode 100644 Midi/music-box-pc-master/rtaudio/doc/images/mcgill.gif create mode 100644 Midi/music-box-pc-master/rtaudio/doc/images/meson.build create mode 100644 Midi/music-box-pc-master/rtaudio/doc/meson.build create mode 100644 Midi/music-box-pc-master/rtaudio/doc/release.txt create mode 100644 Midi/music-box-pc-master/rtaudio/include/asio.cpp create mode 100644 Midi/music-box-pc-master/rtaudio/include/asio.h create mode 100644 Midi/music-box-pc-master/rtaudio/include/asiodrivers.cpp create mode 100644 Midi/music-box-pc-master/rtaudio/include/asiodrivers.h create mode 100644 Midi/music-box-pc-master/rtaudio/include/asiodrvr.h create mode 100644 Midi/music-box-pc-master/rtaudio/include/asioinfo.txt create mode 100644 Midi/music-box-pc-master/rtaudio/include/asiolist.cpp create mode 100644 Midi/music-box-pc-master/rtaudio/include/asiolist.h create mode 100644 Midi/music-box-pc-master/rtaudio/include/asiosys.h create mode 100644 Midi/music-box-pc-master/rtaudio/include/dsound.h create mode 100644 Midi/music-box-pc-master/rtaudio/include/functiondiscoverykeys_devpkey.h create mode 100644 Midi/music-box-pc-master/rtaudio/include/ginclude.h create mode 100644 Midi/music-box-pc-master/rtaudio/include/iasiodrv.h create mode 100644 Midi/music-box-pc-master/rtaudio/include/iasiothiscallresolver.cpp create mode 100644 Midi/music-box-pc-master/rtaudio/include/iasiothiscallresolver.h create mode 100644 Midi/music-box-pc-master/rtaudio/include/soundcard.h create mode 100644 Midi/music-box-pc-master/rtaudio/install.txt create mode 100644 Midi/music-box-pc-master/rtaudio/m4/ax_cxx_compile_stdcxx.m4 create mode 100644 Midi/music-box-pc-master/rtaudio/meson.build create mode 100644 Midi/music-box-pc-master/rtaudio/meson_options.txt create mode 100644 Midi/music-box-pc-master/rtaudio/rtaudio.pc.in create mode 100644 Midi/music-box-pc-master/rtaudio/rtaudio_c.cpp create mode 100644 Midi/music-box-pc-master/rtaudio/rtaudio_c.h create mode 100644 Midi/music-box-pc-master/rtaudio/tests/CMakeLists.txt create mode 100644 Midi/music-box-pc-master/rtaudio/tests/Makefile.am create mode 100644 Midi/music-box-pc-master/rtaudio/tests/Windows/audioprobe.dsp create mode 100644 Midi/music-box-pc-master/rtaudio/tests/Windows/duplex.dsp create mode 100644 Midi/music-box-pc-master/rtaudio/tests/Windows/playraw.dsp create mode 100644 Midi/music-box-pc-master/rtaudio/tests/Windows/playsaw.dsp create mode 100644 Midi/music-box-pc-master/rtaudio/tests/Windows/record.dsp create mode 100644 Midi/music-box-pc-master/rtaudio/tests/Windows/rtaudio.dsw create mode 100644 Midi/music-box-pc-master/rtaudio/tests/Windows/testall.dsp create mode 100644 Midi/music-box-pc-master/rtaudio/tests/Windows/teststops.dsp create mode 100644 Midi/music-box-pc-master/rtaudio/tests/apinames.cpp create mode 100644 Midi/music-box-pc-master/rtaudio/tests/audioprobe.cpp create mode 100644 Midi/music-box-pc-master/rtaudio/tests/duplex.cpp create mode 100644 Midi/music-box-pc-master/rtaudio/tests/meson.build create mode 100644 Midi/music-box-pc-master/rtaudio/tests/playraw.cpp create mode 100644 Midi/music-box-pc-master/rtaudio/tests/playsaw.cpp create mode 100644 Midi/music-box-pc-master/rtaudio/tests/record.cpp create mode 100644 Midi/music-box-pc-master/rtaudio/tests/testall.cpp create mode 100644 Midi/music-box-pc-master/rtaudio/tests/teststops.cpp create mode 100644 Midi/music-box-pc-master/xcode-project/.DS_Store create mode 100644 Midi/music-box-pc-master/xcode-project/music-box-pc.xcodeproj/project.pbxproj create mode 100644 Midi/music-box-pc-master/xcode-project/music-box-pc.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 Midi/music-box-pc-master/xcode-project/music-box-pc.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 Midi/music-box-stm32f1-master/.gitignore create mode 100644 Midi/music-box-stm32f1-master/.vscode/launch.json create mode 100644 Midi/music-box-stm32f1-master/LICENSE create mode 100644 Midi/music-box-stm32f1-master/Makefile create mode 100644 Midi/music-box-stm32f1-master/build.bat create mode 100644 Midi/music-box-stm32f1-master/build.sh create mode 100644 Midi/music-box-stm32f1-master/freertos/croutine.c create mode 100644 Midi/music-box-stm32f1-master/freertos/event_groups.c create mode 100644 Midi/music-box-stm32f1-master/freertos/include/FreeRTOS.h create mode 100644 Midi/music-box-stm32f1-master/freertos/include/FreeRTOSConfig.h create mode 100644 Midi/music-box-stm32f1-master/freertos/include/StackMacros.h create mode 100644 Midi/music-box-stm32f1-master/freertos/include/croutine.h create mode 100644 Midi/music-box-stm32f1-master/freertos/include/deprecated_definitions.h create mode 100644 Midi/music-box-stm32f1-master/freertos/include/event_groups.h create mode 100644 Midi/music-box-stm32f1-master/freertos/include/list.h create mode 100644 Midi/music-box-stm32f1-master/freertos/include/mpu_prototypes.h create mode 100644 Midi/music-box-stm32f1-master/freertos/include/mpu_wrappers.h create mode 100644 Midi/music-box-stm32f1-master/freertos/include/portable.h create mode 100644 Midi/music-box-stm32f1-master/freertos/include/projdefs.h create mode 100644 Midi/music-box-stm32f1-master/freertos/include/queue.h create mode 100644 Midi/music-box-stm32f1-master/freertos/include/semphr.h create mode 100644 Midi/music-box-stm32f1-master/freertos/include/stdint.readme create mode 100644 Midi/music-box-stm32f1-master/freertos/include/task.h create mode 100644 Midi/music-box-stm32f1-master/freertos/include/timers.h create mode 100644 Midi/music-box-stm32f1-master/freertos/list.c create mode 100644 Midi/music-box-stm32f1-master/freertos/portable/GCC/ARM_CM3/port.c create mode 100644 Midi/music-box-stm32f1-master/freertos/portable/GCC/ARM_CM3/portmacro.h create mode 100644 Midi/music-box-stm32f1-master/freertos/portable/MemMang/heap_1.c create mode 100644 Midi/music-box-stm32f1-master/freertos/portable/MemMang/heap_2.c create mode 100644 Midi/music-box-stm32f1-master/freertos/portable/MemMang/heap_3.c create mode 100644 Midi/music-box-stm32f1-master/freertos/portable/MemMang/heap_4.c create mode 100644 Midi/music-box-stm32f1-master/freertos/portable/MemMang/heap_5.c create mode 100644 Midi/music-box-stm32f1-master/freertos/queue.c create mode 100644 Midi/music-box-stm32f1-master/freertos/readme.txt create mode 100644 Midi/music-box-stm32f1-master/freertos/tasks.c create mode 100644 Midi/music-box-stm32f1-master/freertos/timers.c create mode 100644 Midi/music-box-stm32f1-master/makefile_freertos.mk create mode 100644 Midi/music-box-stm32f1-master/makefile_std_lib.mk create mode 100644 Midi/music-box-stm32f1-master/stm32_flash.ld create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/CMSIS/CM3/CoreSupport/core_cm3.c create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/CMSIS/CM3/CoreSupport/core_cm3.h create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/startup/gcc_ride7/startup_stm32f10x_cl.s create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/startup/gcc_ride7/startup_stm32f10x_hd.s create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/startup/gcc_ride7/startup_stm32f10x_hd_vl.s create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/startup/gcc_ride7/startup_stm32f10x_ld.s create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/startup/gcc_ride7/startup_stm32f10x_ld_vl.s create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/startup/gcc_ride7/startup_stm32f10x_md.s create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/startup/gcc_ride7/startup_stm32f10x_md_vl.s create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/startup/gcc_ride7/startup_stm32f10x_xl.s create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/stm32f10x.h create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.c create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/system_stm32f10x.h create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32F10x_StdPeriph_Driver/Release_Notes.html create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32F10x_StdPeriph_Driver/inc/misc.h create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_adc.h create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_bkp.h create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_can.h create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_cec.h create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_crc.h create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_dac.h create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_dbgmcu.h create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_dma.h create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_exti.h create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_flash.h create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_fsmc.h create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_gpio.h create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_i2c.h create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_iwdg.h create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_pwr.h create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_rcc.h create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_rtc.h create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_sdio.h create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_spi.h create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_tim.h create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_usart.h create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_wwdg.h create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32F10x_StdPeriph_Driver/src/misc.c create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_cec.c create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32F10x_StdPeriph_Driver/stm32f10x_conf.h create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32_USB-FS-Device_Driver/Release_Notes.html create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32_USB-FS-Device_Driver/inc/usb_core.h create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32_USB-FS-Device_Driver/inc/usb_def.h create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32_USB-FS-Device_Driver/inc/usb_init.h create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32_USB-FS-Device_Driver/inc/usb_int.h create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32_USB-FS-Device_Driver/inc/usb_lib.h create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32_USB-FS-Device_Driver/inc/usb_mem.h create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32_USB-FS-Device_Driver/inc/usb_regs.h create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32_USB-FS-Device_Driver/inc/usb_sil.h create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32_USB-FS-Device_Driver/inc/usb_type.h create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32_USB-FS-Device_Driver/src/usb_core.c create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32_USB-FS-Device_Driver/src/usb_init.c create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32_USB-FS-Device_Driver/src/usb_int.c create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32_USB-FS-Device_Driver/src/usb_mem.c create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32_USB-FS-Device_Driver/src/usb_regs.c create mode 100644 Midi/music-box-stm32f1-master/stm32f10x_lib/STM32_USB-FS-Device_Driver/src/usb_sil.c create mode 100644 Midi/music-box-stm32f1-master/user/AlgorithmTest.c create mode 100644 Midi/music-box-stm32f1-master/user/EnvelopTable.c create mode 100644 Midi/music-box-stm32f1-master/user/EnvelopeTable.h create mode 100644 Midi/music-box-stm32f1-master/user/Hal/gcc-stdio-retarget.c create mode 100644 Midi/music-box-stm32f1-master/user/Hal/hal.c create mode 100644 Midi/music-box-stm32f1-master/user/Hal/hal.h create mode 100644 Midi/music-box-stm32f1-master/user/Hal/hw_config.h create mode 100644 Midi/music-box-stm32f1-master/user/Hal/stm32_it.c create mode 100644 Midi/music-box-stm32f1-master/user/Hal/stm32_it.h create mode 100644 Midi/music-box-stm32f1-master/user/Hal/uart_log.c create mode 100644 Midi/music-box-stm32f1-master/user/Hal/uart_log.h create mode 100644 Midi/music-box-stm32f1-master/user/Player.c create mode 100644 Midi/music-box-stm32f1-master/user/Player.h create mode 100644 Midi/music-box-stm32f1-master/user/PlayerUtils.s create mode 100644 Midi/music-box-stm32f1-master/user/SynthCore.c create mode 100644 Midi/music-box-stm32f1-master/user/SynthCore.h create mode 100644 Midi/music-box-stm32f1-master/user/Synth_m3.s create mode 100644 Midi/music-box-stm32f1-master/user/Usb/usb_conf.h create mode 100644 Midi/music-box-stm32f1-master/user/Usb/usb_desc.c create mode 100644 Midi/music-box-stm32f1-master/user/Usb/usb_desc.h create mode 100644 Midi/music-box-stm32f1-master/user/Usb/usb_endp.c create mode 100644 Midi/music-box-stm32f1-master/user/Usb/usb_istr.c create mode 100644 Midi/music-box-stm32f1-master/user/Usb/usb_istr.h create mode 100644 Midi/music-box-stm32f1-master/user/Usb/usb_prop.c create mode 100644 Midi/music-box-stm32f1-master/user/Usb/usb_prop.h create mode 100644 Midi/music-box-stm32f1-master/user/Usb/usb_pwr.c create mode 100644 Midi/music-box-stm32f1-master/user/Usb/usb_pwr.h create mode 100644 Midi/music-box-stm32f1-master/user/WaveTable_Celesta_C5.c create mode 100644 Midi/music-box-stm32f1-master/user/WaveTable_Celesta_C5.h create mode 100644 Midi/music-box-stm32f1-master/user/WaveTable_Celesta_C6.c create mode 100644 Midi/music-box-stm32f1-master/user/WaveTable_Celesta_C6.h create mode 100644 Midi/music-box-stm32f1-master/user/main.c create mode 100644 Midi/music-box-stm32f1-master/user/score.c create mode 100644 arduino-music-box-master/.github/workflows/codeql-analysis.yml create mode 100644 arduino-music-box-master/.gitignore create mode 100644 arduino-music-box-master/LICENSE create mode 100644 arduino-music-box-master/README.md create mode 100644 arduino-music-box-master/docs/circuit_v1.jpg create mode 100644 arduino-music-box-master/docs/circuit_v2.jpg create mode 100644 arduino-music-box-master/midi-storage/45188.mid create mode 100644 arduino-music-box-master/midi-storage/Mario_Bros_mono.mid create mode 100644 arduino-music-box-master/midi-storage/Nokia_tune.mid create mode 100644 arduino-music-box-master/midi-storage/jingle_bells_mono.mid create mode 100644 arduino-music-box-master/package-lock.json create mode 100644 arduino-music-box-master/package.json create mode 100644 arduino-music-box-master/src/arduino/play/play.ino create mode 100644 arduino-music-box-master/src/arduino/playNokia/playNokia/playNokia.ino create mode 100644 arduino-music-box-master/src/node/index.js create mode 100644 arduino-music-box-master/src/node/midi/helper.js create mode 100644 arduino-music-box-master/src/node/midi/parser.js create mode 100644 arduino-music-box-master/src/node/serial/proxy.js create mode 100644 arduino-play-melody/musicBox/musicBox.ino create mode 100644 arduino-play-melody/musicBox/pitches.h diff --git a/Midi/arduino-midi-player-master/.gitignore b/Midi/arduino-midi-player-master/.gitignore new file mode 100644 index 0000000..dcc58d2 --- /dev/null +++ b/Midi/arduino-midi-player-master/.gitignore @@ -0,0 +1,5 @@ +*.mid +.DS_Store +sequence.h +*.json + diff --git a/Midi/arduino-midi-player-master/LICENSE b/Midi/arduino-midi-player-master/LICENSE new file mode 100644 index 0000000..856ce47 --- /dev/null +++ b/Midi/arduino-midi-player-master/LICENSE @@ -0,0 +1,8 @@ +The MIT License (MIT) +Copyright (c) 2016 ilufang + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/Midi/arduino-midi-player-master/README.md b/Midi/arduino-midi-player-master/README.md new file mode 100644 index 0000000..118fe78 --- /dev/null +++ b/Midi/arduino-midi-player-master/README.md @@ -0,0 +1,45 @@ +Arduino MIDI Player +=================== + +This program plays MIDI music on Arduino by generating analog/PWM waves on a port connected to a speaker/buzzer. We use timer 2 to do direct digital synthesis (DDS). + +Features +-------- + +- **Chords/multiple notes!** The DDS can add multiple waves together on a single timer and single port. Unlike `tone()` which you can only run one frequency at any time. +- **Sine waves!** You can define any arbitrary function/wave sample to use as the instrument in `smf2seq.js`. No more square waves of the built-in `tone()` function. +- **Tested on UNO!** Though it might not work directly on other models, after some modification the concept should work on any Arduino. (since UNO is the crappiest model) + + +How to use +---------- + +**Hardware** + +1. Connect buzzer/speaker to PWM port 11. Use a proper resister. +2. A variable-resistance resister is recommended to adjust the volume. +3. (Optional) Connect LEDs to port 2-7. +4. Ground everything. + +**Software** + +1. Place your `.mid` file under the main directory +2. Run `node smf2seq.js ` to generate `sequence.h` (You will need to install node.js if you don't have one) +3. Open `arduino-midi-player.ino` in Arduino IDE +4. Compile & Upload + +Limitations +----------- + +Due to the hardware of Arduino, your MIDI might not work perfectly. (Apparently an Arduino UNO will NEVER be able to handle a black MIDI) + +- **Large files.** The max internal storage is 32KB and `smf2seq.js` use 6 bytes for each note. +- **Short time intervals/High BPM.** 1/2048 notes will not likely to play because of the internal clock +- **High/Low pitches.** The clock might not be fast enough to generate a desired wave of the specified frequency +- **Complex chords.** The clock interrupt cannot only process a limit number (4-6) of notes within the clock interval. Lower notes that exceed the limit of `KEYBUF_SIZE` will be discarded +- **Instruments.** MIDI instruments will be disregarded and everything will be sine waves + +Notes +----- + +- macros like `sbi`, `cbi`, `OCR2A` are used instead of API functions like `digitalWrite` to improve performance. Google them for more details diff --git a/Midi/arduino-midi-player-master/arduino-midi-player.ino b/Midi/arduino-midi-player-master/arduino-midi-player.ino new file mode 100644 index 0000000..6680095 --- /dev/null +++ b/Midi/arduino-midi-player-master/arduino-midi-player.ino @@ -0,0 +1,135 @@ +/* + * Arduino MIDI Player + * + * Setup Arduino and use timer2 to synthesize and output sine wave + * + * 2016 by ilufang + */ + +/* + * Part of this file contains code modified/referenced from + * http://interface.khm.de/index.php/lab/interfaces-advanced/arduino-dds-sinewave-generator/ + * + * DDS Sine Generator mit ATMEGS 168 + * Timer2 generates the 31250 KHz Clock Interrupt + * + * KHM 2009 / Martin Nawrath + * Kunsthochschule fuer Medien Koeln + * Academy of Media Arts Cologne + */ + +#include "avr/pgmspace.h" + +#include "midi2wave.h" + +#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) +#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) + +#define POW2_32 4294967296 +#define refclk 31376.6 // Reference clock + +// variables in interrupt service +volatile int timer_tick = 0; // seeking position in wave +volatile unsigned char timer_micro = 0; // timing counter in microseconds +volatile unsigned short timer_milli = 0; // timing counter in milliseconds +volatile unsigned long phaccu_1, phaccu_2, phaccu_3, phaccu_4, phaccu_5, phaccu_6, phaccu_7, phaccu_8; // phase accumulator +volatile unsigned long tword_m_1, tword_m_2, tword_m_3, tword_m_4, tword_m_5, tword_m_6, tword_m_7, tword_m_8; // DDS tuning word m +unsigned long phaccu_all; + +void setup() +{ + Serial.begin(9600); + Serial.println("Hello"); + for (int i = 2; i <= 8; ++i) + pinMode(i,OUTPUT); // LED output + + pinMode(11,OUTPUT); // PWM Wave output + setupMidi(); + setupTimer2(); +} + +void loop() +{ + while(true) { + if (timer_milli > event_length) { // wait for the next midi event + cbi (TIMSK2,TOIE2); + loadNextEvent(); + // calculate new DDS tuning word + tword_m_1=POW2_32*PIANO(active_keys[0])/refclk; + tword_m_2=POW2_32*PIANO(active_keys[1])/refclk; + tword_m_3=POW2_32*PIANO(active_keys[2])/refclk; + tword_m_4=POW2_32*PIANO(active_keys[3])/refclk; + if (!tword_m_1) phaccu_1 = 0; + if (!tword_m_2) phaccu_2 = 0; + if (!tword_m_3) phaccu_3 = 0; + if (!tword_m_4) phaccu_4 = 0; + timer_milli=0; + sbi (TIMSK2,TOIE2); + } + } +} + +/* + * timer2 setup + * + * set pre-scaler to 1, PWM mode to phase correct PWM, 16000000/510 = 31372.55 Hz clock + */ +void setupTimer2() { + // Timer2 Clock Pre-scaler to : 1 + sbi (TCCR2B, CS20); + cbi (TCCR2B, CS21); + cbi (TCCR2B, CS22); + + // Timer2 PWM Mode set to Phase Correct PWM + cbi (TCCR2A, COM2A0); // clear Compare Match + sbi (TCCR2A, COM2A1); + + sbi (TCCR2A, WGM20); // Mode 1 / Phase Correct PWM + cbi (TCCR2A, WGM21); + cbi (TCCR2B, WGM22); + + // initialize DDS tuning word + tword_m_1=0; + tword_m_2=0; + tword_m_3=0; + tword_m_4=0; + + // disable Timer0 interrupts to avoid timing distortion + cbi (TIMSK0,TOIE0); + // start Timer2! + sbi (TIMSK2,TOIE2); + +} + +/* + * Timer2 Interrupt Service + * + * Running at 31372,550 KHz = 32uSec + * this is the timebase REFCLOCK for the DDS generator + * FOUT = (M (REFCLK)) / (2 exp 32) + * runtime : 8 microseconds ( inclusive push and pop) + */ +ISR(TIMER2_OVF_vect) { + // soft DDS, phase accumulator with 32 bits + phaccu_1 += tword_m_1; + phaccu_2 += tword_m_2; + phaccu_3 += tword_m_3; + phaccu_4 += tword_m_4; + phaccu_5 += tword_m_5; + + // use upper 8 bits for phase accumulator as frequency information + int phaccu_all = sine[phaccu_1>>24]; + phaccu_all += sine[phaccu_2>>24]; + phaccu_all += sine[phaccu_3>>24]; + phaccu_all += sine[phaccu_4>>24]; + phaccu_all += sine[phaccu_5>>24]; + + // Write to PWM port 11 + OCR2A = phaccu_all/KEYBUF_SIZE; + + // Increment timing counter + if(++timer_micro == 31) { + ++timer_milli; + timer_micro=0; + } +} diff --git a/Midi/arduino-midi-player-master/jasmid/LICENSE b/Midi/arduino-midi-player-master/jasmid/LICENSE new file mode 100644 index 0000000..407a442 --- /dev/null +++ b/Midi/arduino-midi-player-master/jasmid/LICENSE @@ -0,0 +1,24 @@ +Copyright (c) 2010, Matt Westcott & Ben Firshman +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * The names of its contributors may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/Midi/arduino-midi-player-master/jasmid/README b/Midi/arduino-midi-player-master/jasmid/README new file mode 100644 index 0000000..e877b12 --- /dev/null +++ b/Midi/arduino-midi-player-master/jasmid/README @@ -0,0 +1,51 @@ +# Midifile.js + +This module parses the Standard Midi File. + +The code was modified to adapt to the 'require' way of nodejs. Irrelevant code have been removed. + +The SMF parser part of the jasmid project is used. See jasmid's README and LICENSE for more info + +Jasmid's original repository: https://github.com/gasman/jasmid + +# JASMID Original Readme + +``` +jasmid - A Javascript MIDI file reader and synthesiser + +Originally presented at BarCamp London 8, 13-14 November 2010 + +Instructions: +Open index.html in browser. Turn up volume. Click on link. + +Sound output is via one of the following mechanisms, according to what your +browser supports: +* Mozilla Audio Data API +* Web Audio API + +* a Flash fallback originally taken from dynamicaudio.js by Ben Firshman + and hacked around by me. + + +The code: +stream.js - helper library for reading a string as a stream of typed data +midifile.js - parses the MIDI file format into a header and a list of tracks, + each consisting of a list of event objects +replayer.js - steps over the data structure generated by midifile.js and calls + the appropriate operations on the synthesiser +synth.js - audio synthesiser; generates waveforms according to tweakable + parameters +audio.js - passes the generated waveform to either the Audio Data API or the + Flash fallback widget (da.swf) + + +Limitations: +* The only event types supported by replayer.js are note on, note off, tempo + change and program change +* There are currently only two instrument presets defined in synth.js - one for + strings and a 'piano' one for everything else - and neither of them are + particularly good (just a single volume-modulated sine wave). + + +Matt Westcott - @gasmanic - http://matt.west.co.tt/ +``` diff --git a/Midi/arduino-midi-player-master/jasmid/midifile.js b/Midi/arduino-midi-player-master/jasmid/midifile.js new file mode 100644 index 0000000..f239e4c --- /dev/null +++ b/Midi/arduino-midi-player-master/jasmid/midifile.js @@ -0,0 +1,241 @@ +// This file has been converted for node 'require' +/* +class to parse the .mid file format +(depends on stream.js) +*/ +var Stream = require("./stream.js"); + +module.exports = function(data) { + function readChunk(stream) { + var id = stream.read(4); + var length = stream.readInt32(); + return { + 'id': id, + 'length': length, + 'data': stream.read(length) + }; + } + + var lastEventTypeByte; + + function readEvent(stream) { + var event = {}; + event.deltaTime = stream.readVarInt(); + var eventTypeByte = stream.readInt8(); + if ((eventTypeByte & 0xf0) == 0xf0) { + /* system / meta event */ + if (eventTypeByte == 0xff) { + /* meta event */ + event.type = 'meta'; + var subtypeByte = stream.readInt8(); + var length = stream.readVarInt(); + switch(subtypeByte) { + case 0x00: + event.subtype = 'sequenceNumber'; + if (length != 2) throw "Expected length for sequenceNumber event is 2, got " + length; + event.number = stream.readInt16(); + return event; + case 0x01: + event.subtype = 'text'; + event.text = stream.read(length); + return event; + case 0x02: + event.subtype = 'copyrightNotice'; + event.text = stream.read(length); + return event; + case 0x03: + event.subtype = 'trackName'; + event.text = stream.read(length); + return event; + case 0x04: + event.subtype = 'instrumentName'; + event.text = stream.read(length); + return event; + case 0x05: + event.subtype = 'lyrics'; + event.text = stream.read(length); + return event; + case 0x06: + event.subtype = 'marker'; + event.text = stream.read(length); + return event; + case 0x07: + event.subtype = 'cuePoint'; + event.text = stream.read(length); + return event; + case 0x20: + event.subtype = 'midiChannelPrefix'; + if (length != 1) throw "Expected length for midiChannelPrefix event is 1, got " + length; + event.channel = stream.readInt8(); + return event; + case 0x2f: + event.subtype = 'endOfTrack'; + if (length != 0) throw "Expected length for endOfTrack event is 0, got " + length; + return event; + case 0x51: + event.subtype = 'setTempo'; + if (length != 3) throw "Expected length for setTempo event is 3, got " + length; + event.microsecondsPerBeat = ( + (stream.readInt8() << 16) + + (stream.readInt8() << 8) + + stream.readInt8() + ) + return event; + case 0x54: + event.subtype = 'smpteOffset'; + if (length != 5) throw "Expected length for smpteOffset event is 5, got " + length; + var hourByte = stream.readInt8(); + event.frameRate = { + 0x00: 24, 0x20: 25, 0x40: 29, 0x60: 30 + }[hourByte & 0x60]; + event.hour = hourByte & 0x1f; + event.min = stream.readInt8(); + event.sec = stream.readInt8(); + event.frame = stream.readInt8(); + event.subframe = stream.readInt8(); + return event; + case 0x58: + event.subtype = 'timeSignature'; + if (length != 4) throw "Expected length for timeSignature event is 4, got " + length; + event.numerator = stream.readInt8(); + event.denominator = Math.pow(2, stream.readInt8()); + event.metronome = stream.readInt8(); + event.thirtyseconds = stream.readInt8(); + return event; + case 0x59: + event.subtype = 'keySignature'; + if (length != 2) throw "Expected length for keySignature event is 2, got " + length; + event.key = stream.readInt8(true); + event.scale = stream.readInt8(); + return event; + case 0x7f: + event.subtype = 'sequencerSpecific'; + event.data = stream.read(length); + return event; + default: + // console.log("Unrecognised meta event subtype: " + subtypeByte); + event.subtype = 'unknown' + event.data = stream.read(length); + return event; + } + event.data = stream.read(length); + return event; + } else if (eventTypeByte == 0xf0) { + event.type = 'sysEx'; + var length = stream.readVarInt(); + event.data = stream.read(length); + return event; + } else if (eventTypeByte == 0xf7) { + event.type = 'dividedSysEx'; + var length = stream.readVarInt(); + event.data = stream.read(length); + return event; + } else { + throw "Unrecognised MIDI event type byte: " + eventTypeByte; + } + } else { + /* channel event */ + var param1; + if ((eventTypeByte & 0x80) == 0) { + /* running status - reuse lastEventTypeByte as the event type. + eventTypeByte is actually the first parameter + */ + param1 = eventTypeByte; + eventTypeByte = lastEventTypeByte; + } else { + param1 = stream.readInt8(); + lastEventTypeByte = eventTypeByte; + } + var eventType = eventTypeByte >> 4; + event.channel = eventTypeByte & 0x0f; + event.type = 'channel'; + switch (eventType) { + case 0x08: + event.subtype = 'noteOff'; + event.noteNumber = param1; + event.velocity = stream.readInt8(); + return event; + case 0x09: + event.noteNumber = param1; + event.velocity = stream.readInt8(); + if (event.velocity == 0) { + event.subtype = 'noteOff'; + } else { + event.subtype = 'noteOn'; + } + return event; + case 0x0a: + event.subtype = 'noteAftertouch'; + event.noteNumber = param1; + event.amount = stream.readInt8(); + return event; + case 0x0b: + event.subtype = 'controller'; + event.controllerType = param1; + event.value = stream.readInt8(); + return event; + case 0x0c: + event.subtype = 'programChange'; + event.programNumber = param1; + return event; + case 0x0d: + event.subtype = 'channelAftertouch'; + event.amount = param1; + return event; + case 0x0e: + event.subtype = 'pitchBend'; + event.value = param1 + (stream.readInt8() << 7); + return event; + default: + throw "Unrecognised MIDI event type: " + eventType + /* + console.log("Unrecognised MIDI event type: " + eventType); + stream.readInt8(); + event.subtype = 'unknown'; + return event; + */ + } + } + } + + stream = Stream(data); + var headerChunk = readChunk(stream); + if (headerChunk.id != 'MThd' || headerChunk.length != 6) { + throw "Bad .mid file - header not found"; + } + var headerStream = Stream(headerChunk.data); + var formatType = headerStream.readInt16(); + var trackCount = headerStream.readInt16(); + var timeDivision = headerStream.readInt16(); + + if (timeDivision & 0x8000) { + throw "Expressing time division in SMTPE frames is not supported yet" + } else { + ticksPerBeat = timeDivision; + } + + var header = { + 'formatType': formatType, + 'trackCount': trackCount, + 'ticksPerBeat': ticksPerBeat + } + var tracks = []; + for (var i = 0; i < header.trackCount; i++) { + tracks[i] = []; + var trackChunk = readChunk(stream); + if (trackChunk.id != 'MTrk') { + throw "Unexpected chunk - expected MTrk, got "+ trackChunk.id; + } + var trackStream = Stream(trackChunk.data); + while (!trackStream.eof()) { + var event = readEvent(trackStream); + tracks[i].push(event); + //console.log(event); + } + } + + return { + 'header': header, + 'tracks': tracks + } +} diff --git a/Midi/arduino-midi-player-master/jasmid/stream.js b/Midi/arduino-midi-player-master/jasmid/stream.js new file mode 100644 index 0000000..291f134 --- /dev/null +++ b/Midi/arduino-midi-player-master/jasmid/stream.js @@ -0,0 +1,71 @@ +// This file has been converted for node 'require' + +/* Wrapper for accessing strings through sequential reads */ +module.exports = function(str) { + var position = 0; + + function read(length) { + var result = str.substr(position, length); + position += length; + return result; + } + + /* read a big-endian 32-bit integer */ + function readInt32() { + var result = ( + (str.charCodeAt(position) << 24) + + (str.charCodeAt(position + 1) << 16) + + (str.charCodeAt(position + 2) << 8) + + str.charCodeAt(position + 3)); + position += 4; + return result; + } + + /* read a big-endian 16-bit integer */ + function readInt16() { + var result = ( + (str.charCodeAt(position) << 8) + + str.charCodeAt(position + 1)); + position += 2; + return result; + } + + /* read an 8-bit integer */ + function readInt8(signed) { + var result = str.charCodeAt(position); + if (signed && result > 127) result -= 256; + position += 1; + return result; + } + + function eof() { + return position >= str.length; + } + + /* read a MIDI-style variable-length integer + (big-endian value in groups of 7 bits, + with top bit set to signify that another byte follows) + */ + function readVarInt() { + var result = 0; + while (true) { + var b = readInt8(); + if (b & 0x80) { + result += (b & 0x7f); + result <<= 7; + } else { + /* b is the last byte */ + return result + b; + } + } + } + + return { + 'eof': eof, + 'read': read, + 'readInt32': readInt32, + 'readInt16': readInt16, + 'readInt8': readInt8, + 'readVarInt': readVarInt + } +} diff --git a/Midi/arduino-midi-player-master/midi2wave.h b/Midi/arduino-midi-player-master/midi2wave.h new file mode 100644 index 0000000..33662ca --- /dev/null +++ b/Midi/arduino-midi-player-master/midi2wave.h @@ -0,0 +1,58 @@ +/* + * Midi2Wave + * + * Playback controller + * + * Load MIDI events into the global variable + */ + +#ifndef __MIDI2WAVE_H__ +#define __MIDI2WAVE_H__ + +#include "sequence.h" + +#define MAX_NOTE 128 +#define KEYBUF_SIZE 5 +#define SINE_SAMPLE_SIZE 256 + +#define PIANO(key) (key?(pow(1.0594630943592952645618252949463,key+1-32-49+24)*440):0) + +#define NOTE_NUMBER(index) pgm_read_byte_near(notes+index) +#define NOTE_DELAY(index) (pgm_read_word_near(params+index)>>4) +#define NOTE_VEL(index) (pgm_read_word_near(params+index)&15) + +unsigned char volatile active_keys[KEYBUF_SIZE]; +unsigned char volatile key_vels[MAX_NOTE]; + +volatile char note_count = 0; + +// The current length in milliseconds +int event_length = 0; + +// The primary key +char key = 61; + +/* + * Setup + * + * Initialize stuff + */ +void setupMidi(); + +/* + * Render wave buffer + * + * Generate the wave buffer with current notes + */ +void renderWaveBuffer(); + +/* + * Load next event + * + * Load the next midi note/chord + * Updates the next delay variable + * Updates LEDs + */ +void loadNextEvent(); + +#endif diff --git a/Midi/arduino-midi-player-master/midi2wave.ino b/Midi/arduino-midi-player-master/midi2wave.ino new file mode 100644 index 0000000..5d78e2f --- /dev/null +++ b/Midi/arduino-midi-player-master/midi2wave.ino @@ -0,0 +1,84 @@ +/* + * Midi2Wave + * + * Implementation + */ + + +#include "midi2wave.h" + +#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) +#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) + +short ptr; + +void setupMidi() { + for (int i=0; i=0; --i) // Goes down: make sure the most significant note gets played + if ( key_vels[i] && !(key_vels[i]&32) ) { + for (char j=0; j= SONG_LEN) + { + // Restart in 3s + Serial.println("Ended."); + setupMidi(); + event_length = 3000; + for (int i = 0; i < 7; ++i) + sbi(PORTD, i+2); + return; + } + + int new_length = NOTE_DELAY(ptr)*TEMPO; + key_vels[NOTE_NUMBER(ptr)-1] = NOTE_VEL(ptr); + + ++ptr; + if (new_length == 0) + loadNextEvent(); + else { + renderWaveBuffer(); + event_length = new_length; + } +} diff --git a/Midi/arduino-midi-player-master/smf2seq.js b/Midi/arduino-midi-player-master/smf2seq.js new file mode 100644 index 0000000..018a8de --- /dev/null +++ b/Midi/arduino-midi-player-master/smf2seq.js @@ -0,0 +1,152 @@ +/* + * SMF to SEQ + * + * Convert Standard MIDI file to event array + * Output file as sequence.h: to be compiled with ino files + * + * This program uses part of jasmid to decode and parse .mid files + * Please refer to jasmid/LICENSE for the jasmid license + * + * Run this file with node.js + * $ node smf2seq.js [SMF filename] + * + * 2016 by ilufang + */ + +Midifile = require("./jasmid/midifile.js"); +fs = require("fs"); + +// # Read and parse SMF +var filename = process.argv[2]?process.argv[2]:"song.mid"; +var midi_blob = fs.readFileSync(filename); +var t = ""; +for (var i=0; i 127) + seq[i].velocity = 127; + notes.push(seq[i].noteNumber); + note_params.push((seq[i].deltaTime<<4)+(seq[i].velocity>>3)); + } + } +} + +fs.writeFileSync("midi.json", JSON.stringify(seq, null, '\t')); + +// # Generate sin table +var file = "// MIDI events\n// Generated by smf2seq.js\n"; + +var sine_sample = [], sine_sample_size = 256; +for (var i = 0; i < sine_sample_size; i++) { + sine_sample.push(128+Math.round(128*Math.sin(2*Math.PI*i/sine_sample_size))); +} + +file += "const unsigned char sine[] = {"+sine_sample.join(",")+"};\n"; +file += "#define TEMPO "+tempo+"\n"; +file += "#define SONG_LEN "+notes.length+"\n"; +file += "PROGMEM const unsigned char notes[] = {"+notes.join(",")+"};\n"; +file += "PROGMEM const int params[] = {"+note_params.join(",")+"};\n"; + +console.log("Using memory: "+(notes.length*3)); +console.log("Total memory: 32256"); + +// # Write to file +fs.writeFileSync("sequence.h",file); diff --git a/Midi/mg/AVR.INC b/Midi/mg/AVR.INC new file mode 100644 index 0000000..85a7003 --- /dev/null +++ b/Midi/mg/AVR.INC @@ -0,0 +1,368 @@ +;------------------------------------------------; +; Constants + +.equ RAMTOP = 0x60 ; SRAM top address +.equ RAMTOP100 = 0x100 ; For memory mapped I/O devices + + +.equ bit0 = 0b00000001 +.equ bit1 = 0b00000010 +.equ bit2 = 0b00000100 +.equ bit3 = 0b00001000 +.equ bit4 = 0b00010000 +.equ bit5 = 0b00100000 +.equ bit6 = 0b01000000 +.equ bit7 = 0b10000000 + + +.def T0L = r0 +.def T0H = r1 +.def T2L = r2 +.def T2H = r3 +.def T4L = r4 +.def T4H = r5 +.def T6L = r6 +.def T6H = r7 +.def T8L = r8 +.def T8H = r9 +.def T10L = r10 +.def T10H = r11 +.def T12L = r12 +.def T12H = r13 +.def T14L = r14 +.def T14H = r15 + + +.def AL = r16 +.def AH = r17 +.def BL = r18 +.def BH = r19 +.def CL = r20 +.def CH = r21 +.def DL = r22 +.def DH = r23 +.def EL = r24 +.def EH = r25 + + + +;------------------------------------------------; +; Push/Pop register pair +; +; pushw Z + +.macro pushw + push @0H + push @0L +.endm + +.macro popw + pop @0L + pop @0H +.endm + + +;------------------------------------------------; +; Load/store word from/to direct memory/immediate +; +; ldsw Z,mem +; ldiw Z,imm + +.macro ldiw + ldi @0L,low(@1) + ldi @0H,high(@1) +.endm + +.macro ldsw + lds @0L,@1 + lds @0H,@1+1 +.endm + +.macro stsw + sts @0+1,@1H + sts @0,@1L +.endm + +.macro lddw + ldd @0L,@1 + ldd @0H,@1+1 +.endm + +.macro stdw + std @0+1,@1H + std @0,@1L +.endm + +.macro ldw + ld @0L,@1 + ld @0H,@1 +.endm + +.macro stw + st @0,@1L + st @0,@1H +.endm + +.macro inw + in @0L,@1L + in @0H,@1H +.endm + +.macro outw + out @0H,@1H + out @0L,@1L +.endm + + +;------------------------------------------------; +; Store immediate into indirect memory via r16 +; +; sti Z,imm +; stdi Z+d,imm + +.macro sti + ldi r16,@1 + st @0,r16 +.endm + +.macro stdi + ldi r16,@1 + std @0,r16 +.endm + +.macro muli + ldi r16,@1 + mul @0,r16 +.endm + + +;------------------------------------------------; +; add/sub/subc/cp/cpc/lsl/lsr/rol/ror to register pair +; + +.macro addiw + subi @0L,low(-(@1)) + sbci @0H,high(-(@1)) +.endm + +.macro subiw + subi @0L,low(@1) + sbci @0H,high(@1) +.endm + +.macro addw + add @0L,@1L + adc @0H,@1H +.endm + +.macro adcw + adc @0L,@1L + adc @0H,@1H +.endm + +.macro subw + sub @0L,@1L + sbc @0H,@1H +.endm + +.macro sbcw + sbc @0L,@1L + sbc @0H,@1H +.endm + +.macro cpw + cp @0L,@1L + cpc @0H,@1H +.endm + +.macro cpcw + cpc @0L,@1L + cpc @0H,@1H +.endm + +.macro cpiw + cpi @0L,low(@1) + ldi r16,high(@1) + cpc @0H,r16 +.endm + +.macro andw + and @0L,@1L + and @0H,@1H +.endm + +.macro andiw + andi @0L,low(@1) + andi @0H,high(@1) +.endm + +.macro orw + or @0L,@1L + or @0H,@1H +.endm + +.macro oriw + ori @0L,low(@1) + ori @0H,high(@1) +.endm + +.macro lslw + lsl @0L + rol @0H +.endm + +.macro lsrw + lsr @0H + ror @0L +.endm + +.macro asrw + asr @0H + ror @0L +.endm + +.macro rolw + rol @0L + rol @0H +.endm + +.macro rorw + ror @0H + ror @0L +.endm + +.macro clrw + clr @0L + clr @0H +.endm + +.macro comw + com @0L + com @0H +.endm + +.macro negw + com @0H + neg @0L + brne PC+2 + inc @0H +.endm + +.macro movew + mov @0L, @1L + mov @0H, @1H +.endm + +.macro lpmw + lpm @0L, @1 + lpm @0H, @1 +.endm + + +;------------------------------------------------; +; Store immediate into direct memory via r16 +; +; stsi var,imm + +.macro stsi + ldi r16,@1 + sts @0,r16 +.endm + + +;------------------------------------------------; +; Output port immediate via r16 +; +; outi port,var + +.macro outi + ldi r16,@1 + out @0,r16 +.endm + + +;------------------------------------------------; +; Add immediate to register + +.macro addi + subi @0,-(@1) +.endm + + +;------------------------------------------------; +; Long branch + + +.macro rjne + breq PC+2 + rjmp @0 +.endm + +.macro rjeq + brne PC+2 + rjmp @0 +.endm + +.macro rjcc + brcs PC+2 + rjmp @0 +.endm + +.macro rjcs + brcc PC+2 + rjmp @0 +.endm + +.macro rjtc + brts PC+2 + rjmp @0 +.endm + +.macro rjts + brtc PC+2 + rjmp @0 +.endm + +.macro rjge + brlt PC+2 + rjmp @0 +.endm + +.macro rjlt + brge PC+2 + rjmp @0 +.endm + + +.macro retcc + brcs PC+2 + ret +.endm + +.macro retcs + brcc PC+2 + ret +.endm + +.macro reteq + brne PC+2 + ret +.endm + +.macro retne + breq PC+2 + ret +.endm + + +;------------------------------------------------; +; Move single bit between two registers +; +; bmov dstreg,dstbit,srcreg.srcbit + +.macro movb + bst @2,@3 + bld @0,@1 +.endm + + diff --git a/Midi/mg/mel.txt b/Midi/mg/mel.txt new file mode 100644 index 0000000..fdc6e61 --- /dev/null +++ b/Midi/mg/mel.txt @@ -0,0 +1,499 @@ +;For Elise (3/8, 60bpm) + +;