Advertisement
Marlingaming

MTF Music Writer V2

Sep 15th, 2021 (edited)
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.18 KB | None | 0 0
  1. --MTF SOng Creator
  2. --this script allows user side song creation using my MTF Format(Music Text Format)
  3. --this Program is for minecraft, CC Tweaked
  4.  
  5.  
  6. local FileName = nil
  7. local Note = 1
  8. local Instruments = {"block.note_block.bass", "block.note_block.snare", "block.note_block.basedrum", "block.note_block.bell", "block.note_block.flute", "block.note_block.chime", "block.note_block.guitar", "block.note_block.xyloph", "block.note_block.bit", "block.note_block.pling", "block.note_block.harp"}
  9. local Pitch = {2,4,6,8,10,2,2,2,2,2,2}
  10. local Step = 1
  11. local WritenNotes_1 = {..}
  12. local WritenNotes_2 = {..}
  13. local Note = 1
  14.  
  15. function CreationSet()
  16. term.clear()
  17. term.setCursorPos(1,1)
  18. print("Music Text Format Song Writer------")
  19. print("Step = "..Step)
  20. CreationManage()
  21. end
  22.  
  23. function CreationManage()
  24. if Step == 1 then
  25. print("Please Enter Song name, then press enter to save")
  26. local input = read()
  27. repeat
  28. local event, key = os.pullEvent("key")
  29. until key == keys.enter
  30. FileName = input..".mtf"
  31. print("Saved as: "..FileName)
  32. Step = 2
  33. elseif Step == 2 then
  34. print("please enter the number for desired note, then click enter to go to the next note. to stop press e")
  35. local input = read()
  36. repeat
  37. local event, key = os.pullEvent("key")
  38. until key == keys.enter or key == keys.e
  39. WritenNotes_1[Note] = input
  40. if key == keys.enter then
  41. Note = Note + 1
  42. elseif key == keys.e then
  43. Note = 1
  44. Step = 3
  45. end
  46. elseif Step == 3 then
  47. print("Please now type the pitch for each note until you have given all of them a Pitch")
  48. print("Note "..Note.."'s Instrument = "..Instruments[WritenNotes_1[Note]])
  49. print("press 1-5 for the pitch, the actual pitch would be what you typed times 2")
  50. repeat
  51. local event, key = os.pullEvent("key")
  52. until key == keys.one or key == keys.two or key == keys.three or key == keys.four or key == keys.five
  53. if key == keys.one then
  54. WritenNotes_2[Note] = 1
  55. elseif key == keys.two then
  56. WritenNotes_2[Note] = 2
  57. elseif key == keys.three then
  58. WritenNotes_2[Note] = 3
  59. elseif key == keys.four then
  60. WritenNotes_2[Note] = 4
  61. elseif key == keys.five then
  62. WritenNotes_2[Note] = 5
  63. end
  64. Note = Note + 1
  65. if Note > #WritenNotes_1 then
  66. Step = 4
  67. else
  68.  
  69. end
  70. elseif Step == 4 then
  71. print("Song Completed!")
  72. print("before it is saved, do you wish to hear it?")
  73. print("Y/N")
  74. repeat
  75. local event, key = os.pullEvent("key")
  76. until key == keys.y or key == keys.n
  77. Step = 5
  78. if key == keys.n then
  79. SaveSong()
  80. elseif key == keys.y then
  81. TestSong()
  82. SaveSong()
  83. end
  84. end
  85. sleep(5)
  86. if Step < 4 then
  87. CreationSet()
  88. end
  89. end
  90.  
  91. function SaveSong()
  92. local Data = ""
  93. for Note = 1, #WritenNotes_1 do
  94. Data = Data..WritenNotes_1[Note]..WritenNotes_2[Note]
  95. Note = Note + 1
  96. end
  97. local file = fs.open(FileName,"w")
  98. file.write(Data)
  99. file.close()
  100. end
  101.  
  102. function TestSong()
  103. local speaker = peripheral.find("speaker")
  104. Note = 1
  105. while Note <= #WritenNotes_1 do
  106. speaker.playNote(Instrument[WritenNotes_1[Note]], Volume, Pitch[WritenNotes_2[Note]])
  107. Note = Note + 1
  108. sleep(2)
  109. end
  110. print("Song Over")
  111. print("Stopping program in 10 seconds")
  112. sleep(10)
  113. end
  114.  
  115. CreationSet()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement