Jump to content
IGNORED

MuseScore/4a - Music for the TI


SteveB

Recommended Posts

Hi 99ers,

MuseScore4a.png.16e6f40d7341da6fc478cb9717cb0ce4.png

 

there are plenty of graphic tools around for our beloved TI-99/4a, but very few for audio. Instead of building a mediocre audio editor we decided to use the greatest free music notation tool MuseScore and just build a bridge to the TI. With the included soundfont you can hear how your score will sound on the TI. Since MuseScore can import MIDI files, you can use them as a base as well. We use the MusicXML format to create CALL SOUND or DATA sequences for the TI. You may cut&paste to a TI emulator, TiCodEd or save as a FIAD TI-FILE program using the LibXBTKN32.DLL library.

 

Examples:

 

Fuer Elise.mp3  Program: elise       Score: Für_Elise.mscz

Lullaby.mp3      Program: lullaby

 

Here is a short video introduction:

 

 

The program is a Windows 32 bit application that comes with a manual, a small MusicXML example and Lazarus source. 

 

TI-MuseScore4a.zip

 

Enjoy,

SteveB and Grammostola

 

 

  • Like 12
  • Thanks 8
Link to comment
Share on other sites

Brandenburg Concerto No. 2 in F Major, BWV 1047 by Johann Sebastian Bach

This is with Flute, Oboe, Violin and Violocello. Dos not sound great. BUT, it is cool that you can with musicXML get all this code for "free". Thx, @SteveB

PS! Will try to take off instruments to see if I get a better sounding code.

 

Spoiler

100 DATA 250,146,0,0,250,220,0,0,250,174,0,0,250,220,0,0,250,440,146,0,250,440,220,0
110 DATA 250,493,195,0,250,493,246,0,250,493,164,0,250,440,195,0,125,391,138,0,125,493,138,0
120 DATA 250,440,164,0,250,349,146,0,250,349,220,0,250,329,174,0,250,293,220,0,250,440,698,146
130 DATA 250,440,698,174,250,493,698,195,250,493,659,164,250,493,138,0,250,440,164,0
140 DATA 125,391,659,110,125,493,659,110,125,440,698,130,125,440,783,130,250,349,659,146
150 DATA 250,349,587,110,250,329,174,0,250,293,110,0,250,880,698,146,250,880,698,174
160 DATA 250,987,698,195,250,987,659,123,250,987,164,0,250,880,195,0,125,783,659,110
170 DATA 125,987,659,110,125,880,698,220,125,880,783,220,250,698,659,146,250,698,587,220
180 DATA 250,659,174,0,250,587,220,0,250,880,349,146,250,880,349,174,250,987,349,207
190 DATA 250,987,329,123,250,987,164,0,125,1046,195,0,125,1174,195,0,125,1046,349,110
200 DATA 125,987,349,110,250,1046,349,146,250,830,349,164,250,830,329,246,250,739,207,0
210 DATA 250,659,246,0,250,1046,659,220,250,1046,659,261,250,1046,698,293,250,987,698,349
220 DATA 250,698,246,0,250,659,293,0,125,987,587,195,125,987,880,195,125,1046,783,246
230 DATA 125,1174,783,246,250,987,698,261,250,880,659,329,250,587,220,0,250,523,261,0
240 DATA 250,880,493,174,250,880,440,220,250,880,587,246,250,830,587,293,250,587,698,207
250 DATA 250,523,659,246,125,783,493,164,125,783,587,164,250,783,523,329,250,830,493,220
260 DATA 250,880,440,261,250,493,174,0,250,440,220,0,250,880,698,146,250,880,698,123
270 DATA 250,880,698,164,250,880,659,146,250,880,587,164,250,987,523,164,125,659,587,164
280 DATA 125,880,698,164,250,830,659,164,250,880,587,110,250,880,523,164,250,493,130,0
290 DATA 250,440,164,0,250,1046,523,110,250,1046,523,130,250,1046,587,123,250,987,587,146
300 DATA 250,587,195,0,125,659,123,0,125,698,123,0,125,987,659,130,125,987,783,130
310 DATA 125,1046,698,130,125,1174,698,130,250,987,698,174,250,880,698,110,250,659,195,0
320 DATA 250,587,123,0,250,880,523,110,250,880,587,130,250,880,523,123,250,783,493,146
330 DATA 250,587,195,0,125,659,123,0,125,698,123,0,250,783,493,130,125,880,523,261
340 DATA 125,987,587,261,250,783,493,174,250,698,440,220,250,659,195,0,250,587,246,0
350 DATA 250,1046,440,220,250,1046,440,261,250,1174,440,246,250,1174,391,293,250,1174,195,0
360 DATA 125,1318,246,0,125,1396,246,0,125,1318,391,138,125,1567,391,138,125,1396,440,164
370 DATA 125,1396,493,164,250,1396,391,146,250,1396,349,220,250,1318,174,0,250,1174,220,0
380 DATA 250,1046,587,146,250,987,587,174,250,1567,587,164,250,1567,523,174,250,1396,523,195
390 DATA 250,1318,493,195,250,1174,493,195,125,1046,440,195,125,1046,493,195,250,1046,523,130
400 DATA 250,1046,523,164,250,146,0,0,250,174,0,0,250,783,164,0,250,783,195,0,250,880,174,0
410 DATA 250,880,146,0,250,880,123,0,250,783,146,0,125,698,195,0,125,880,195,0,250,783,123,0
420 DATA 250,659,130,0,125,783,110,0,125,739,110,0,250,783,123,0,125,987,184,0,125,880,184,0
430 DATA 250,1174,987,195,250,1174,987,123,250,1244,987,130,250,1244,880,155,250,1244,110,0
440 DATA 250,1174,130,0,125,1046,880,146,125,1318,880,146,125,1174,987,146,125,1174,1046,146
450 DATA 250,1046,880,195,250,987,783,164,125,1174,174,0,125,1108,174,0,250,1174,138,0
460 DATA 125,1396,440,146,125,1318,440,146,250,1396,440,146,250,1396,493,195,250,1396,493,246
470 DATA 250,1318,493,164,250,440,195,0,125,391,1046,220,125,493,1046,220,250,1318,440,110
480 DATA 125,1396,349,146,125,1567,349,146,250,1318,349,220,250,1174,329,174,250,293,220,0
490 DATA 250,698,440,146,250,698,440,174,250,698,493,195,250,622,493,246,250,493,155,0
500 DATA 125,523,195,0,125,587,195,0,125,659,622,130,125,659,587,130,125,698,659,164
510 DATA 125,783,659,164,250,622,440,174,250,587,440,220,250,391,146,0,250,349,174,0
520 DATA 250,587,493,123,250,1396,587,146,250,1396,587,155,250,1567,523,130,250,1567,493,174
530 DATA 250,1567,523,174,250,1396,523,174,125,1244,587,174,125,1567,622,174,250,1396,523,123
540 DATA 250,1244,493,174,250,1174,698,146,250,698,174,0,250,987,123,0,250,587,987,146
550 DATA 250,587,987,174,250,587,880,261,250,523,523,220,250,523,261,0,250,880,698,174
560 DATA 250,880,698,220,250,880,698,130,250,783,622,195,250,155,0,0,250,783,195,0
570 DATA 250,783,659,130,250,1046,659,164,250,1046,622,195,250,1046,587,293,250,987,587,246
580 DATA 250,587,293,0,250,783,195,0,250,987,783,246,250,987,783,146,250,987,739,220
590 DATA 250,880,184,0,250,220,0,0,250,987,195,0,250,1174,987,246,250,1174,987,261
600 DATA 250,1244,880,311,250,1244,220,0,250,1244,261,0,250,1174,880,174,125,1046,987,220
610 DATA 125,1567,1046,220,250,1396,880,246,250,1244,783,293,250,1174,195,0,250,1046,246,0
620 DATA 250,987,587,155,250,880,587,195,250,783,622,220,250,1046,622,261,250,1046,622,184
630 DATA 250,1046,587,220,125,987,523,146,125,987,659,146,125,880,587,293,125,1046,587,293
640 DATA 250,987,523,195,250,880,493,246,250,783,440,155,250,391,195,0,250,440,783,130
650 DATA 125,1244,493,110,125,1244,523,110,250,1244,493,146,250,1244,493,130,250,1174,493,146
660 DATA 250,1046,440,146,250,987,440,146,125,1046,493,146,125,1318,493,146,250,1174,391,195
670 DATA 250,1046,391,293,250,987,783,246,250,880,293,0,250,783,587,195,250,587,493,246
680 DATA 250,659,493,138,250,659,493,164,250,659,440,110,125,698,130,0,125,783,130,0
690 DATA 125,698,146,0,125,659,146,0,250,493,698,195,250,493,554,110,250,493,554,164
700 DATA 250,440,493,138,250,440,164,0,250,110,0,0,250,783,659,130,250,783,659,146
710 DATA 250,783,659,220,250,698,587,174,250,220,0,0,250,587,146,0,250,587,349,174
720 DATA 250,587,349,110,250,554,349,164,250,329,138,0,250,164,0,0,250,659,110,0
730 DATA 250,391,659,130,250,391,659,146,250,391,587,220,250,349,174,0,250,220,0,0
740 DATA 250,146,0,0,250,698,587,174,250,698,587,110,250,698,587,164,250,659,329,138
750 DATA 250,329,164,0,250,391,110,0,250,391,523,130,250,391,523,146,250,369,554,220
760 DATA 250,587,184,0,250,880,220,0,250,880,739,146,250,1046,739,174,250,1046,739,195
770 DATA 250,1046,783,293,250,987,246,0,250,587,293,0,250,587,195,0,250,987,698,246
780 DATA 250,987,698,130,250,987,698,195,250,1046,391,164,250,391,195,0,250,466,130,0
790 DATA 250,466,659,164,250,493,659,174,250,440,659,261,250,698,220,0,250,523,261,0
800 DATA 250,523,440,174,250,622,440,220,250,622,440,123,250,622,493,174,250,587,146,0
810 DATA 250,698,174,0,250,698,123,0,250,698,880,146,250,698,880,164,250,698,880,246
820 DATA 250,659,987,195,250,987,246,0,250,587,164,0,250,587,987,195,250,587,987,110
830 DATA 250,554,987,164,250,880,138,0,250,659,164,0,250,659,659,110,250,783,659,130
840 DATA 250,783,659,146,250,783,587,220,250,698,174,0,250,220,0,0,250,146,0,0,250,698,440,174
850 DATA 250,698,440,195,250,698,493,246,250,659,493,164,250,493,195,0,250,440,130,0
860 DATA 125,659,391,164,125,659,587,164,125,698,523,174,125,783,523,174,250,659,493,220
870 DATA 250,587,440,146,250,391,174,0,250,1174,349,123,250,587,1174,146,250,587,987,164
880 DATA 250,587,987,195,250,554,987,138,250,880,391,164,125,783,349,110,125,987,349,110
890 DATA 250,523,880,220,250,523,783,146,250,554,698,174,250,587,659,123,250,587,146,0
900 DATA 250,659,195,0,125,587,698,164,125,587,783,164,250,587,698,110,250,587,698,195
910 DATA 250,587,698,110,250,587,659,110,250,659,659,110,125,440,698,110,125,587,698,110
920 DATA 250,554,554,123,500,783,554,123,125,783,587,123,125,987,587,123,250,880,415,123
930 DATA 250,783,415,123,250,698,391,123,250,698,440,123,125,698,349,110,125,554,349,110
940 DATA 250,587,349,110,250,587,329,110,250,587,293,110,375,523,293,146,1125,587,293,146
950 DATA 500,587,369,0
960 ! Player code
970 FOR I=1 to 433
980 READ DUR,F1,F2,F3
990 IF F2=0 THEN CALL SOUND(DUR,F1,0 ) ELSE IF F3=0 THEN CALL SOUND(DUR,F1,0 ,F2,0 ) ELSE CALL SOUND(DUR,F1,0 ,F2,0 ,F3,0 )
1000 NEXT I

 


 

Link to comment
Share on other sites

Violin and Violocello sounds OK. To much with the others. The TI dos not handle it good or it dos not sound good.

This is so cool!!!

 

Spoiler

100 DATA 250,146,0,0,250,220,0,0,250,174,0,0,250,220,0,0,250,440,146,0,250,440,220,0
110 DATA 250,493,195,0,250,493,246,0,250,493,164,0,250,440,195,0,125,391,138,0,125,493,138,0
120 DATA 250,440,164,0,250,349,146,0,250,349,220,0,250,329,174,0,250,293,220,0,250,698,146,0
130 DATA 250,698,174,0,250,698,195,0,250,659,164,0,250,138,0,0,250,164,0,0,250,659,110,0
140 DATA 125,698,130,0,125,783,130,0,250,659,146,0,250,587,110,0,250,174,0,0,250,110,0,0
150 DATA 250,587,146,0,250,587,174,0,250,587,195,0,250,554,123,0,250,164,0,0,250,195,0,0
160 DATA 250,523,110,0,250,523,220,0,250,554,146,0,250,587,220,0,250,174,0,0,250,220,0,0
170 DATA 250,146,0,0,250,174,0,0,250,207,0,0,250,123,0,0,250,164,0,0,250,195,0,0
180 DATA 250,349,110,0,250,349,146,0,250,349,164,0,250,329,246,0,250,207,0,0,250,246,0,0
190 DATA 250,220,0,0,250,261,0,0,250,293,0,0,250,349,0,0,250,246,0,0,250,293,0,0
200 DATA 250,195,0,0,250,246,0,0,250,261,0,0,250,329,0,0,250,220,0,0,250,261,0,0
210 DATA 250,880,174,0,250,880,220,0,250,698,246,0,250,698,293,0,250,698,207,0,250,659,246,0
220 DATA 125,587,164,0,125,698,164,0,250,659,329,0,250,587,220,0,250,523,261,0,250,493,174,0
230 DATA 250,440,220,0,250,493,146,0,125,523,123,0,125,587,123,0,250,523,164,0,250,523,146,0
240 DATA 250,523,164,0,500,493,164,0,250,523,164,0,250,493,110,0,250,440,164,0,250,130,0,0
250 DATA 250,164,0,0,250,110,0,0,250,130,0,0,250,123,0,0,250,146,0,0,250,195,0,0
260 DATA 250,123,0,0,500,130,0,0,250,174,0,0,250,110,0,0,250,195,0,0,250,123,0,0
270 DATA 250,523,110,0,250,523,130,0,250,587,123,0,250,587,146,0,250,587,195,0,125,659,123,0
280 DATA 125,698,123,0,125,659,130,0,125,783,130,0,250,698,261,0,250,698,174,0,250,698,220,0
290 DATA 250,659,195,0,250,587,246,0,250,523,220,0,250,587,261,0,250,523,246,0,250,493,293,0
300 DATA 250,195,0,0,250,246,0,0,250,493,138,0,125,523,164,0,125,587,164,0,250,493,146,0
310 DATA 250,440,220,0,250,174,0,0,250,220,0,0,250,698,146,0,250,698,174,0,250,698,164,0
320 DATA 250,659,174,0,250,880,195,0,250,783,195,0,250,698,195,0,250,783,195,0,250,659,130,0
330 DATA 250,659,164,0,250,146,0,0,250,174,0,0,250,783,164,0,250,783,195,0,250,880,174,0
340 DATA 250,880,146,0,250,880,123,0,250,783,146,0,125,698,195,0,125,880,195,0,250,783,123,0
350 DATA 250,659,130,0,125,783,110,0,125,739,110,0,250,783,123,0,125,987,184,0,125,880,184,0
360 DATA 250,987,195,0,250,987,123,0,250,987,130,0,250,880,155,0,250,110,0,0,250,130,0,0
370 DATA 250,880,146,0,125,987,146,0,125,1046,146,0,250,880,195,0,250,783,164,0
380 DATA 250,174,0,0,250,138,0,0,500,1174,146,0,250,1174,195,0,250,1108,246,0,250,164,0,0
390 DATA 250,195,0,0,250,1046,220,0,250,1046,110,0,250,1108,146,0,250,1174,220,0
400 DATA 250,174,0,0,250,220,0,0,250,440,146,0,250,440,174,0,250,493,195,0,250,493,246,0
410 DATA 250,493,155,0,125,523,195,0,125,587,195,0,125,622,130,0,125,587,130,0,250,659,164,0
420 DATA 250,440,174,0,250,440,220,0,250,391,146,0,250,349,174,0,250,493,123,0,250,493,146,0
430 DATA 250,493,155,0,250,493,130,0,250,493,174,0,250,523,174,0,500,440,174,0,250,440,123,0
440 DATA 250,493,174,0,250,146,0,0,250,174,0,0,250,123,0,0,250,146,0,0,250,174,0,0
450 DATA 250,261,0,0,250,523,220,0,250,523,261,0,250,698,174,0,250,698,220,0,250,698,130,0
460 DATA 250,622,195,0,250,155,0,0,250,195,0,0,250,659,130,0,250,659,164,0,250,622,195,0
470 DATA 250,587,293,0,250,246,0,0,250,293,0,0,250,195,0,0,250,246,0,0,250,146,0,0
480 DATA 250,220,0,0,250,184,0,0,250,220,0,0,250,987,195,0,250,987,246,0,250,987,261,0
490 DATA 250,880,311,0,250,220,0,0,250,261,0,0,250,880,174,0,125,987,220,0,125,1046,220,0
500 DATA 250,880,246,0,250,783,293,0,250,195,0,0,250,246,0,0,250,783,155,0,250,783,195,0
510 DATA 250,783,220,0,250,739,261,0,250,184,0,0,250,220,0,0,250,698,146,0,250,698,293,0
520 DATA 250,739,195,0,250,783,246,0,250,155,0,0,250,195,0,0,250,783,130,0,250,783,110,0
530 DATA 250,783,146,0,250,783,130,0,250,783,146,0,250,880,146,0,125,587,146,0,125,783,146,0
540 DATA 250,739,146,0,250,739,195,0,250,783,293,0,250,783,246,0,250,293,0,0,250,195,0,0
550 DATA 250,493,246,0,250,493,138,0,250,493,164,0,250,440,110,0,250,130,0,0,250,146,0,0
560 DATA 250,195,0,0,250,110,0,0,250,164,0,0,250,138,0,0,250,164,0,0,250,110,0,0
570 DATA 250,659,130,0,250,659,146,0,250,659,220,0,250,587,174,0,250,220,0,0,250,146,0,0
580 DATA 250,349,174,0,250,349,110,0,250,349,164,0,250,329,138,0,250,164,0,0,250,110,0,0
590 DATA 250,130,0,0,250,146,0,0,250,220,0,0,250,174,0,0,250,220,0,0,250,146,0,0
600 DATA 250,587,174,0,250,587,110,0,250,587,164,0,250,554,138,0,250,164,0,0,250,110,0,0
610 DATA 250,523,130,0,250,523,146,0,250,554,220,0,250,587,184,0,250,220,0,0,250,146,0,0
620 DATA 250,174,0,0,250,195,0,0,250,293,0,0,250,246,0,0,250,587,293,0,250,587,195,0
630 DATA 250,698,246,0,250,698,130,0,250,698,195,0,250,659,164,0,250,195,0,0,250,130,0,0
640 DATA 250,659,164,0,250,659,174,0,250,659,261,0,250,698,220,0,250,261,0,0,250,174,0,0
650 DATA 250,220,0,0,250,123,0,0,250,174,0,0,250,146,0,0,250,698,174,0,250,698,123,0
660 DATA 250,880,146,0,250,880,164,0,250,880,246,0,250,783,195,0,250,246,0,0,250,164,0,0
670 DATA 250,987,195,0,250,987,110,0,250,987,164,0,250,880,138,0,250,164,0,0,250,110,0,0
680 DATA 250,130,0,0,250,146,0,0,250,220,0,0,250,174,0,0,250,220,0,0,250,146,0,0
690 DATA 250,440,174,0,250,440,195,0,250,493,246,0,250,493,164,0,250,493,195,0,250,440,130,0
700 DATA 125,391,164,0,125,587,164,0,250,523,174,0,250,493,220,0,250,440,146,0,250,391,174,0
710 DATA 250,349,123,0,250,329,146,0,250,293,164,0,250,391,195,0,250,391,138,0,250,391,164,0
720 DATA 250,349,110,0,125,329,220,0,125,391,220,0,250,349,146,0,250,329,174,0,250,293,123,0
730 DATA 250,146,0,0,250,195,0,0,250,987,164,0,250,987,110,0,250,987,195,0,250,880,110,0
740 DATA 250,783,110,0,250,698,110,0,250,783,110,0,250,880,123,0,250,698,123,0,750,659,123,0
750 DATA 250,698,123,0,500,587,123,0,250,587,110,0,125,659,110,0,125,698,110,0,250,440,110,0
760 DATA 250,391,110,0,250,493,146,0,250,440,146,0,1000,369,146,0,500,369,0,0
770 ! Player code
780 FOR I=1 to 399
790 READ DUR,F1,F2,F3
800 IF F2=0 THEN CALL SOUND(DUR,F1,0 ) ELSE IF F3=0 THEN CALL SOUND(DUR,F1,0 ,F2,0 ) ELSE CALL SOUND(DUR,F1,0 ,F2,0 ,F3,0 )
810 NEXT I

 

 

Link to comment
Share on other sites

Always remember, the TI can only play three dirty square-wave tones at a time. Your score has 14 simultanious instruments. This is way beyond the capabilities of the TI and not an intended use-case of the program. You have two options:

 

1. the selection of instruments is still possible, just count the checkboxes. As all instruments are single-voiced, you may select up to three instruments.

 

2. you do a selection on MIDI import in MuseScore:

image.thumb.png.9e79752485f80341e130528449fc6d0f.png

 

Only the selected MIDI instruments get transferred to the actual score. I usually disable all rhythm instruments like percussions in this step.

 

So I would recommend downstripping the in instruments in MuseScore and use the preview with the included TI Soundfont for picking the best instruments. I looked for some distinctive instruments and chose Flute, Bass Clarinet and Trombone. The MuseScore MP3 export sounds like:

Happy_Birthday.mp3

 

Then I only exported those three instruments to MusicXML and the instrument selection now looks much nicer:

image.thumb.png.823c7c4b84b5f2a777c5125ef08b1039.png

 

I selected all of them by double-clicking the whole box and exported as DATA:

100 DATA 500,523,293,130,500,587,329,146,500,523,293,130,500,698,391,174,1000,659,349,164
110 DATA 500,523,293,130,500,587,329,146,500,523,293,130,500,783,440,195,1000,698,391,174
120 DATA 500,523,293,130,500,1046,587,261,500,880,493,220,500,698,391,174,500,659,349,164
130 DATA 500,587,329,146,500,987,523,246,500,880,493,220,500,698,391,174,500,783,440,195
140 DATA 1500,698,391,174,500,523,293,130,500,587,391,146,500,523,391,130,500,698,391,174
150 DATA 1000,659,293,195,500,523,195,0,500,587,293,195,500,523,293,195,500,783,293,164
160 DATA 1000,698,391,174,500,523,174,0,500,1046,391,174,500,880,391,174,500,698,391,174
170 DATA 500,659,261,195,500,587,261,174,500,987,261,195,500,880,293,174,500,698,293,174
180 DATA 500,783,293,164,1500,698,391,130
190 ! Player code
200 FOR I=1 to 42
210 READ DUR,F1,F2,F3
220 IF F2=0 THEN CALL SOUND(DUR,F1,0 ) ELSE IF F3=0 THEN CALL SOUND(DUR,F1,0 ,F2,0 ) ELSE CALL SOUND(DUR,F1,0 ,F2,0 ,F3,0 )
230 NEXT I

 

 

 

  • Like 2
Link to comment
Share on other sites

Yes, but...

I have tried and it is a good thing to have all 14 in your tool. Then I can test with 3 goes best together or only two. Just like in "Brandenburg Concerto No. 2 in F Major, BWV 1047 by Johann Sebastian Bach" I found all 4 to be a mess, 3... still messy, but in the end 2 of them fit together. So... to be able to play around and find what works together would be nice.

BUT, where do I find the TI soundfont?

Edited by oddemann
bugs :p
Link to comment
Share on other sites

29 minutes ago, SteveB said:

It is the SF2 file in the ZIP. The manual describes two options to use it in MuseScore and how to activate it for your score.

 

 

I looked at you YT and did what you did and then started to look for musicXML files to play with ? Your YT was so good that it got me started to play around with your tool (no need to read manual or anything else, hehehe).

Again... very cool tool! Now I only need to get a hold of the notes for TOTO's music ? hehehehe

Found this... cool in MuseScore3 with all the instruments... BUT can it be ported over to the TI and sound half decent ? hehehe (trying to understand how to do the sorting before your tool.)

StIIPerMSco.musicxml

IMSLP190146-WIMA.5926-StIIPerM-xml.zip


PS! I am looking for the music in Elite and see if I can get it to sound OK on the TI.

Edited by oddemann
Challange to SteveB...
  • Like 1
Link to comment
Share on other sites

Well this is very cool! I have very little musical inclinations unfortunately, but there are lots of MIDI files out there ripe for conversion.

As an exercise, I converted the score for Pirates of the Caribbean to the TI format mp3 and it actually sounds pretty darn good! I'll have to see if I can find a suitable cover for my current project. By the way, all of this is working fine under Linux. Musescore is available natively for Linux and musescore4a runs perfectly fine under Wine.

Well done. 

 

EDIT: I converted the mp3 file to xml per the instructions then used musecore4a to convert it to a DATA file with left and right piano and note duration, but the resulting program does not sound quite right. I tried it with Classic 99 and js99er with similar results. Could someone double check me here? Perhaps I am doing something wrong...

 

Pirates of the Caribbean - He's a Pirate (3).mid

Pirates of the Caribbean - He's a Pirate (3).mp3

Pirates of the Caribbean - He's a Pirate (3).musicxml

PIRATES

  • Like 3
Link to comment
Share on other sites

One of my fav classical music... Toccata & Fuge

Not VERY good but it is OK.
 

Spoiler

100 DATA 180,880,440,0,540,783,880,0,1440,880,440,0,360,220,0,0,180,783,391,0,180,698,349,0
110 DATA 180,659,329,0,180,587,293,0,360,554,277,0,2160,587,293,0,1680,220,0,0,120,440,220,0
120 DATA 1080,391,440,0,720,440,220,0,360,220,0,0,360,329,164,0,360,349,174,0,360,277,138,0
130 DATA 720,293,146,0,2520,220,0,0,180,220,110,0,180,220,195,0,360,220,220,0,1800,220,110,0
140 DATA 180,220,195,0,180,220,174,0,180,220,164,0,180,220,146,0,360,138,138,0,720,146,146,0
150 DATA 3240,220,0,0,1440,146,0,0,540,130,146,0,900,164,130,146,540,277,164,146
160 DATA 4250,329,277,146,2160,293,146,146,720,174,146,0,4250,146,0,0,720,277,138,0
170 DATA 480,293,146,0,480,329,164,0,480,261,130,0,480,293,146,0,480,329,164,0,480,261,130,0
180 DATA 480,293,146,0,414,329,164,0,414,261,130,0,822,293,146,0,618,329,164,0,618,349,174,0
190 DATA 480,391,195,0,480,329,164,0,480,349,174,0,480,391,195,0,480,329,164,0,480,349,174,0
200 DATA 360,391,195,0,360,329,164,0,720,349,174,0,720,391,195,0,720,440,220,0,360,493,246,0
210 DATA 360,391,195,0,720,440,220,0,360,493,246,0,360,391,195,0,720,440,220,0,360,493,246,0
220 DATA 360,391,195,0,720,440,220,0,4250,146,0,0,720,554,277,0,480,587,293,0,480,659,329,0
230 DATA 480,523,261,0,480,587,293,0,480,659,329,0,480,523,261,0,480,587,293,0,414,659,329,0
240 DATA 414,523,261,0,822,587,293,0,618,659,329,0,618,698,349,0,480,783,391,0,480,659,329,0
250 DATA 480,698,349,0,480,783,391,0,480,659,329,0,480,698,349,0,360,783,391,0,360,659,329,0
260 DATA 720,659,698,0,360,783,698,0,360,783,391,0,360,880,783,0,360,880,440,0,360,987,493,0
270 DATA 360,783,391,0,720,880,440,0,360,987,493,0,360,783,391,0,720,880,440,0,360,987,493,0
280 DATA 360,783,391,0,1080,880,440,0,4250,146,0,0,720,880,440,0,480,783,391,0,480,987,493,0
290 DATA 480,659,329,0,480,783,391,0,480,987,493,0,480,659,329,0,480,698,349,0,480,880,440,0
300 DATA 480,587,293,0,480,698,349,0,480,880,440,0,480,587,293,0,480,659,329,0,480,783,391,0
310 DATA 480,523,261,0,480,659,329,0,480,783,391,0,480,523,261,0,480,587,293,0,480,698,349,0
320 DATA 480,698,493,0,480,698,587,0,480,698,698,0,480,698,493,0,480,698,523,0,216,659,261,0
330 DATA 198,659,329,0,414,440,329,0,6,523,329,0,408,523,220,0,6,659,220,0,612,659,246,0
340 DATA 6,440,246,0,318,440,293,0,90,440,195,0,552,493,195,0,66,493,246,0,252,587,246,0
350 DATA 66,587,293,0,576,391,293,0,66,391,195,0,252,493,195,0,66,493,220,0,564,587,220,0
360 DATA 78,587,261,0,318,391,261,0,630,440,261,0,12,523,440,0,318,523,261,0,642,523,349,0
370 DATA 642,523,440,0,240,523,261,0,12,523,195,0,66,523,246,0,318,523,349,0,630,523,391,0
380 DATA 12,391,246,0,480,493,246,0,480,493,329,0,480,493,391,0,480,493,493,0,480,493,329,0
390 DATA 480,493,349,0,216,440,174,0,264,440,220,0,354,293,220,0,126,293,146,0,288,349,146,0
400 DATA 192,349,164,0,426,440,164,0,54,440,195,0,264,293,195,0,216,293,138,0,426,329,138,0
410 DATA 54,329,164,0,264,391,164,0,216,391,195,0,426,277,195,0,54,277,130,0,480,329,130,0
420 DATA 108,391,130,0,252,391,0,0,336,261,0,0,690,261,146,0,54,261,130,146,264,130,146,0
430 DATA 1896,130,164,146,720,261,130,146,540,391,261,146,4250,493,391,146,156,493,440,146
440 DATA 204,493,440,0,360,493,391,0,180,493,349,0,180,349,261,0,360,329,261,0,360,293,261,0
450 DATA 288,277,261,0,252,277,246,0,120,246,246,0,840,261,246,0,228,220,246,0,216,220,220,0
460 DATA 276,220,220,195,480,261,220,195,180,220,174,195,288,329,220,195,72,329,246,195
470 DATA 540,391,246,195,120,349,246,195,120,391,246,195,30,246,174,195,180,349,246,195
480 DATA 198,391,246,195,36,349,391,195,36,349,391,0,72,349,246,0,36,391,246,0,108,391,261,0
490 DATA 120,349,261,0,24,349,587,0,144,391,587,0,144,349,587,0,144,391,587,0,144,349,587,0
500 DATA 144,587,329,0,144,391,587,0,72,329,587,0,504,329,523,0,144,329,293,0,3432,349,293,0
510 DATA 1800,349,329,0,1104,261,329,0,540,440,261,0,156,440,523,0,24,659,440,0
520 DATA 180,659,349,0,876,659,587,0,360,587,659,0,360,659,587,0,360,659,698,0,360,349,659,0
530 DATA 360,349,783,0,708,349,659,0,372,349,659,146,360,587,698,146,360,659,587,146
540 DATA 360,659,783,146,78,659,659,146,630,698,659,146,12,698,659,0
550 ! Player code
560 FOR I=1 to 261
570 READ DUR,F1,F2,F3
580 IF F2=0 THEN CALL SOUND(DUR,F1,0 ) ELSE IF F3=0 THEN CALL SOUND(DUR,F1,0 ,F2,0 ) ELSE CALL SOUND(DUR,F1,0 ,F2,0 ,F3,0 )
590 NEXT I

 

 

Link to comment
Share on other sites

1 hour ago, Vorticon said:

One request for a future release: would it be possible to have a button in musescore4a which copies the contents of the conversion window to the clipboard? This would be more convenient than selecting and copying.

Will have a look, I never programmed the clipboard in Lazarus before ... 

 

PS: I save in FIAD and load in Classic99, which is faster than Paste XB for larger programs.

Edited by SteveB
Added PS
  • Like 1
  • Thanks 1
Link to comment
Share on other sites

LOL - TOTO - Africa!!! (Have to play around to find the best combo of instruments)

 

Spoiler

100 DATA 4250,1318,0,0,240,164,220,0,120,1318,0,0,120,164,220,0,120,1318,0,0,600,164,220,0
110 DATA 240,146,195,0,2400,195,261,0,240,164,220,0,120,1318,0,0,120,164,220,0,120,1318,0,0
120 DATA 600,164,220,0,240,146,195,0,2400,195,261,0,240,164,220,0,120,1318,0,0,120,164,220,0
130 DATA 120,1318,0,0,600,164,220,0,240,146,195,0,2400,195,261,0,240,164,220,0,120,1318,0,0
140 DATA 120,164,220,0,120,1318,0,0,600,164,220,0,240,146,195,0,2400,195,261,0,960,246,293,0
150 DATA 480,233,261,0,480,220,261,0,1920,195,246,0,480,220,261,0,480,195,220,0
160 DATA 960,195,246,0,960,174,246,0,240,164,220,0,120,261,0,0,120,164,220,0,120,261,0,0
170 DATA 600,164,220,0,240,146,195,0,480,195,261,0,960,246,293,0,480,233,261,0,480,220,261,0
180 DATA 1920,195,246,0,480,220,261,0,480,195,220,0,960,195,246,0,960,174,246,0
190 DATA 240,164,220,0,120,261,0,0,120,164,220,0,120,261,0,0,600,164,220,0,240,146,195,0
200 DATA 480,195,261,0,960,246,293,0,480,233,261,0,480,220,261,0,1920,195,246,0
210 DATA 480,220,261,0,480,195,220,0,960,195,246,0,960,174,246,0,240,164,220,0,120,261,0,0
220 DATA 120,164,220,0,120,261,0,0,600,164,220,0,240,146,195,0,480,195,261,0,960,246,293,0
230 DATA 480,233,261,0,480,220,261,0,1920,195,246,0,240,164,220,0,120,523,659,0
240 DATA 120,164,220,0,120,493,523,0,240,164,220,0,15,493,587,0,45,164,220,0,60,110,493,0
250 DATA 240,164,220,0,240,146,195,0,2400,195,261,0,960,261,349,0,960,349,220,0
260 DATA 960,329,220,0,720,329,195,0,240,329,246,0,960,261,349,0,960,349,220,0,960,329,220,0
270 DATA 720,329,195,0,240,329,246,0,1920,220,349,0,960,220,440,0,960,195,246,0
280 DATA 960,261,349,0,960,349,220,0,1920,261,329,0,960,164,195,0,45,174,174,0,195,246,174,0
290 DATA 240,174,220,0,480,195,329,0,240,164,220,0,120,246,220,0,120,164,220,0,120,246,220,0
300 DATA 600,164,220,0,240,246,146,0,1440,246,195,0,960,195,261,0,240,164,220,0
310 DATA 120,1318,0,0,120,164,220,0,120,1318,0,0,600,164,220,0,240,146,195,0,2400,195,261,0
320 DATA 960,246,293,0,960,233,261,0,1920,195,246,0,960,220,261,0,960,195,246,0
330 DATA 960,174,246,0,240,164,220,0,120,261,1174,0,120,164,220,0,120,261,1174,0
340 DATA 600,164,220,0,240,146,195,0,480,195,261,0,960,246,293,0,960,233,261,0,1920,195,246,0
350 DATA 960,220,261,0,960,195,246,0,960,174,246,0,240,164,220,0,120,261,1174,0
360 DATA 120,164,220,0,120,261,1174,0,600,164,220,0,240,146,195,0,480,195,261,0
370 DATA 960,246,293,0,960,233,261,0,1920,195,246,0,240,164,220,0,120,659,1174,0
380 DATA 120,164,220,0,120,659,1174,0,240,164,220,0,15,659,1174,0,45,164,220,0,60,110,659,0
390 DATA 240,164,220,0,240,146,195,0,2400,195,261,0,960,220,440,0,960,220,293,0
400 DATA 960,220,261,0,720,195,246,0,240,246,391,0,960,261,220,0,960,293,220,0,960,261,329,0
410 DATA 480,329,391,0,240,329,440,0,240,329,391,0,960,220,440,0,960,220,293,0,960,220,261,0
420 DATA 720,195,246,0,240,246,391,0,480,261,349,0,480,261,349,293,480,349,220,293
430 DATA 480,349,329,1318
440 ! Player code
450 FOR I=1 to 185
460 READ DUR,F1,F2,F3
470 IF F2=0 THEN CALL SOUND(DUR,F1,0 ) ELSE IF F3=0 THEN CALL SOUND(DUR,F1,0 ,F2,0 ) ELSE CALL SOUND(DUR,F1,0 ,F2,0 ,F3,0 )
480 NEXT I

 

 

Ver. 2

 

Spoiler

100 DATA 4250,174,0,0,240,164,220,0,120,174,0,0,120,164,220,0,120,174,0,0,600,164,220,0
110 DATA 240,146,195,0,240,195,261,0,120,195,261,698,120,195,261,659,120,195,261,523
120 DATA 120,195,261,659,120,195,261,698,120,195,261,659,120,195,261,523,120,195,261,659
130 DATA 120,195,261,523,120,195,261,659,120,195,261,523,120,195,261,493,120,195,261,523
140 DATA 120,195,261,493,120,195,261,391,120,195,261,698,240,195,261,659,240,164,220,0
150 DATA 120,659,0,0,120,164,220,0,120,659,0,0,600,164,220,0,240,146,195,0,240,195,261,0
160 DATA 240,195,261,523,720,195,261,0,360,195,261,523,120,195,261,493,120,195,261,523
170 DATA 120,195,261,493,120,195,261,391,120,195,261,698,240,195,261,659,240,164,220,0
180 DATA 120,659,0,0,120,164,220,0,120,659,0,0,600,164,220,0,240,146,195,0,240,195,261,0
190 DATA 120,195,261,698,120,195,261,659,120,195,261,523,120,195,261,659,120,195,261,698
200 DATA 120,195,261,659,120,195,261,523,120,195,261,659,240,195,261,698,120,195,261,523
210 DATA 120,195,261,493,120,195,261,523,120,195,261,493,480,195,261,523,240,164,220,0
220 DATA 120,523,0,0,120,164,220,0,120,523,0,0,600,164,220,0,240,146,195,0,240,195,261,0
230 DATA 120,195,261,698,120,195,261,659,120,195,261,523,120,195,261,659,120,195,261,698
240 DATA 120,195,261,659,120,195,261,523,120,195,261,659,240,195,261,698,120,195,261,523
250 DATA 120,195,261,493,120,195,261,523,120,195,261,493,120,195,261,523,120,195,261,659
260 DATA 240,195,261,698,120,246,293,523,120,246,293,493,120,246,293,523,120,246,293,493
270 DATA 120,246,293,391,120,246,293,698,240,246,293,659
280 ! Player code
290 FOR I=1 to 92
300 READ DUR,F1,F2,F3
310 IF F2=0 THEN CALL SOUND(DUR,F1,0 ) ELSE IF F3=0 THEN CALL SOUND(DUR,F1,0 ,F2,0 ) ELSE CALL SOUND(DUR,F1,0 ,F2,0 ,F3,0 )
320 NEXT I

 

 

 

 

 

 

 

Edited by oddemann
New ver.
  • Like 1
Link to comment
Share on other sites

1 hour ago, Vorticon said:

EDIT: I converted the mp3 file to xml per the instructions then used musecore4a to convert it to a DATA file with left and right piano and note duration, but the resulting program does not sound quite right. I tried it with Classic 99 and js99er with similar results. Could someone double check me here? Perhaps I am doing something wrong...

There are three problems with this score ...

 

image.png.d5922e17d6c5c7b0229d7165ec577d2e.png

  1. The Piano has an attack and a reverb, while the TI as just a steady, constant sound, which is a big difference.
  2. You play 5 notes at a time (one column) ... two of them will be ommitted
  3. The TI can only play sounds of 110Hz or higher, the 2A is the lowes possible note. Your score goes lower.

For the last problem you have the option to transpose the score one or two octaves. But piano tunes with cords regulary go beyond the three sound limit...

 

 

  • Like 1
Link to comment
Share on other sites

36 minutes ago, mizapf said:

What about the noise generator? Could this be used for lower frequencies?

I played around a little to use it as a drum substitute, but they are not very flexible. The shortest sound in normal speed is about 77ms, otherwise you get gaps between the notes.

 

Listen yourself:

 

10 for i=1 to 8

20 print i

30 for j=1 to 8

40 call sound(75,-i,0)

50 call sound(425,220,30)

60 next j

70 next i

 

Only 5 as a high-hat and 7 as some drum have some potential in some tunes, but nothing I could generalize enough. As a "Bass" they are just some disharminic low frequencies.

 

 

Link to comment
Share on other sites

6 minutes ago, mizapf said:

You can influence them by sound generator 3.

 


10 FOR I=400 TO 1000 STEP 10
20 CALL SOUND(-100,110,30,110,30,I,30,-4,0)
30 NEXT I

 

This I didn't know! I always shrugged on "Periodic Noise that varies with the frequency of the third tone specified."

 

But anyway, there is no way to get the third tone below 110Hz. Or do you have any documentation on how exactly the noise is based on the third tone?

 

 

 

 

Link to comment
Share on other sites

If this works by constantly sending new commands, then you will run into the problem that the noise generator resets every time it gets a command.  For instance, if you send >65 to the sound chip repeatedly, the noise generator will restart the white noise bit-stream.  This makes for some neat effects if you mean to do so, but if you are just adjusting volume then it can have an undesired effect.

Link to comment
Share on other sites

Just now, SteveB said:

This I didn't know! I always shrugged on "Periodic Noise that varies with the frequency of the third tone specified."

 

But anyway, there is no way to get the third tone below 110Hz. Or do you have any documentation on how exactly the noise is based on the third tone?

The periodic noise channel produces a frequency which is roughly three octaves minus one semi-tone, 35 semi-tone steps, lower than the frequency of generator 3.

Link to comment
Share on other sites

7 minutes ago, OLD CS1 said:

The periodic noise channel produces a frequency which is roughly three octaves minus one semi-tone, 35 semi-tone steps, lower than the frequency of generator 3.

So to play a G in Octave 0 with 24.5 Hz I would set the Tone Three to G sharp in Ocatve 3 with 207 Hz?

 

 

Link to comment
Share on other sites

4 minutes ago, SteveB said:

So to play a G in Octave 0 with 24.5 Hz I would set the Tone Three to G sharp in Ocatve 3 with 207 Hz?

F#3.  Sorry, I read my notes backward.

   /* increase tone 3 by 35 semitones (three octaves, minus one) */
   call transform_value 'v3+35'

 

Link to comment
Share on other sites

Remember that the sound of the noise generator is no clean square wave; you know the sound from Car Wars. But it may be suited for the bass voice - if you can live without the third generator (at least for the time when you produce the bass voice). Try to produce a sound of 55 Hz with the CALL SOUND statement, add generator one with 110 Hz, and check whether it sounds like an octave below it.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...