ZX Spectrum 48 beeper music colection

On the creation of AY or Beeper music, including the packages used to do so.
_dw
Microbot
Posts: 123
Joined: Thu Dec 07, 2023 1:52 am

Re: ZX Spectrum 48 beeper music colection

Post by _dw »

三好 智己: I Am Setsuna - Path of Redemption (ZX Spectrum 1 bit beeper cover (Fuse Unfiltered))

https://codeberg.org/DW0RKiN/M4_FORTH/s ... mption.tap
Z80 Forth compiler (ZX Spectrum 48kb): https://codeberg.org/DW0RKiN/M4_FORTH
_dw
Microbot
Posts: 123
Joined: Thu Dec 07, 2023 1:52 am

Re: ZX Spectrum 48 beeper music colection

Post by _dw »

Yann Pierre Tiersen: Comptine d'un autre été (ZX Spectrum 1 bit beeper cover (Fuse Unfiltered))
[video][/video]
https://codeberg.org/DW0RKiN/M4_FORTH/s ... re_ete.tap
Z80 Forth compiler (ZX Spectrum 48kb): https://codeberg.org/DW0RKiN/M4_FORTH
_dw
Microbot
Posts: 123
Joined: Thu Dec 07, 2023 1:52 am

Re: ZX Spectrum 48 beeper music colection

Post by _dw »

いきものがかり: Naruto - Blue Bird (ZX Spectrum 1 bit beeper cover (Fuse Unfiltered))

download: https://codeberg.org/DW0RKiN/M4_FORTH/s ... e_Bird.tap
Z80 Forth compiler (ZX Spectrum 48kb): https://codeberg.org/DW0RKiN/M4_FORTH
_dw
Microbot
Posts: 123
Joined: Thu Dec 07, 2023 1:52 am

Re: ZX Spectrum 48 beeper music colection

Post by _dw »

Hans Zimmer: Cornfield Chase (Interstellar) (ZX Spectrum 1 bit beeper cover (Fuse Unfiltered))

https://youtu.be/jGd53Whi3-w
download: https://codeberg.org/DW0RKiN/M4_FORTH/s ... tellar.tap
Z80 Forth compiler (ZX Spectrum 48kb): https://codeberg.org/DW0RKiN/M4_FORTH
_dw
Microbot
Posts: 123
Joined: Thu Dec 07, 2023 1:52 am

Re: ZX Spectrum 48 beeper music colection

Post by _dw »

Bradley Ira Fiedel: Terminator 2 theme (ZX Spectrum 1 bit beeper cover (Fuse Unfiltered))

https://youtu.be/tSWrDnY0-Vk
download: https://codeberg.org/DW0RKiN/M4_FORTH/s ... nator2.tap
Z80 Forth compiler (ZX Spectrum 48kb): https://codeberg.org/DW0RKiN/M4_FORTH
_dw
Microbot
Posts: 123
Joined: Thu Dec 07, 2023 1:52 am

Re: ZX Spectrum 48 beeper music colection

Post by _dw »

Tom Odell: Another Love - another version (ZX Spectrum 1 bit beeper cover (Fuse Unfiltered))

Download: https://codeberg.org/DW0RKiN/M4_FORTH/s ... _love2.tap
Z80 Forth compiler (ZX Spectrum 48kb): https://codeberg.org/DW0RKiN/M4_FORTH
_dw
Microbot
Posts: 123
Joined: Thu Dec 07, 2023 1:52 am

Re: ZX Spectrum 48 beeper music colection

Post by _dw »

Bedřich Smetana: Vltava / Friedrich Sahne: Moldau (ZX Spectrum 1 bit beeper cover (Fuse Unfiltered))

https://youtu.be/U8g-IPJnKrE
download: https://codeberg.org/DW0RKiN/M4_FORTH/s ... Vltava.tap
Z80 Forth compiler (ZX Spectrum 48kb): https://codeberg.org/DW0RKiN/M4_FORTH
_dw
Microbot
Posts: 123
Joined: Thu Dec 07, 2023 1:52 am

Re: ZX Spectrum 48 beeper music colection

Post by _dw »

Johann Pachelbel: Canon in ZX (ZX Spectrum 1 bit beeper cover (Fuse Unfiltered))

https://youtu.be/YQBJ2W25rkw
download: https://codeberg.org/DW0RKiN/M4_FORTH/s ... helbel.tap
Z80 Forth compiler (ZX Spectrum 48kb): https://codeberg.org/DW0RKiN/M4_FORTH
_dw
Microbot
Posts: 123
Joined: Thu Dec 07, 2023 1:52 am

Re: ZX Spectrum 48 beeper music colection

Post by _dw »

Antonio Lucio Vivaldi: Le quattro stagioni - L'inverno I. (ZX Spectrum 1 bit beeper cover (Fuse Unfiltered))

https://youtu.be/cBpG2KVOE9E
You can download and compile from:
https://codeberg.org/DW0RKiN/M4_FORTH/
Z80 Forth compiler (ZX Spectrum 48kb): https://codeberg.org/DW0RKiN/M4_FORTH
_dw
Microbot
Posts: 123
Joined: Thu Dec 07, 2023 1:52 am

Re: ZX Spectrum 48 beeper music colection

Post by _dw »

Gigi D'Agostino: L'Amour Toujours (ZX Spectrum 1 bit beeper cover (Fuse Unfiltered))

https://youtu.be/iyNumBsejz0
You can download the executable from: https://codeberg.org/DW0RKiN/M4_FORTH/s ... /Amour.tap

Borislav Slavov: I Want to Live (ZX Spectrum 1 bit beeper cover (Fuse Unfiltered))

https://youtu.be/kg1G0B25gJw
You can download the executable from: https://codeberg.org/DW0RKiN/M4_FORTH/s ... o_Live.tap
Z80 Forth compiler (ZX Spectrum 48kb): https://codeberg.org/DW0RKiN/M4_FORTH
_dw
Microbot
Posts: 123
Joined: Thu Dec 07, 2023 1:52 am

Re: ZX Spectrum 48 beeper music colection

Post by _dw »

Basil Konstantine Poledouris: Anvil of Crom (ZX Spectrum 1 bit beeper cover (Fuse Unfiltered))

https://youtu.be/eysPEN9rao8

Jökull Júlíusson: Way Down We Go (ZX Spectrum 1 bit beeper cover (Fuse Unfiltered))

https://youtu.be/F2up9ktXBVU
Z80 Forth compiler (ZX Spectrum 48kb): https://codeberg.org/DW0RKiN/M4_FORTH
_dw
Microbot
Posts: 123
Joined: Thu Dec 07, 2023 1:52 am

Re: ZX Spectrum 48 beeper music colection

Post by _dw »

Jack-All / X-Factor: A Burning Glance (ZX Spectrum 1 bit beeper cover (Fuse Unfiltered))

https://youtu.be/1tlpYx1_-Es
You can download the executable from:
codeberg.org/DW0RKiN/M4_FORTH/src/branch/master/Testing/a_burning_glance.tap

PS: 7 minute track...
Z80 Forth compiler (ZX Spectrum 48kb): https://codeberg.org/DW0RKiN/M4_FORTH
_dw
Microbot
Posts: 123
Joined: Thu Dec 07, 2023 1:52 am

Re: ZX Spectrum 48 beeper music colection

Post by _dw »

James Paul McCartney: Yesterday (ZX Spectrum 1 bit beeper cover (Fuse Unfiltered))

https://youtu.be/jPr7PC2Sz38
Z80 Forth compiler (ZX Spectrum 48kb): https://codeberg.org/DW0RKiN/M4_FORTH
_dw
Microbot
Posts: 123
Joined: Thu Dec 07, 2023 1:52 am

Re: ZX Spectrum 48 beeper music colection

Post by _dw »

Gordon Matthew Thomas Sumner: Roxanne (ZX Spectrum 1 bit beeper cover (Fuse Unfiltered))

https://youtu.be/-l9HJFpmpc4
Z80 Forth compiler (ZX Spectrum 48kb): https://codeberg.org/DW0RKiN/M4_FORTH
User avatar
R-Tape
Site Admin
Posts: 6655
Joined: Thu Nov 09, 2017 11:46 am

Re: ZX Spectrum 48 beeper music colection

Post by R-Tape »

Some of the highest notes hurt a bit. Is that unavoidable with the engine, or can they be softened somehow?
_dw
Microbot
Posts: 123
Joined: Thu Dec 07, 2023 1:52 am

Re: ZX Spectrum 48 beeper music colection

Post by _dw »

R-Tape wrote: Fri Jun 21, 2024 1:58 pm Some of the highest notes hurt a bit. Is that unavoidable with the engine, or can they be softened somehow?
You can lower the octave en masse for the whole song. The engine has a range from 0 to 6. The higher the octave, the "more audible/louder/more expressive" the tone.
Most songs use a range of about 4 octaves, so there is room for variation.

But at 6 octaves, the higher tones are already a bit off, and the lowest ones are "crackling" again. I do not know how to describe it. But it never plays a separate tone, it's always mixed with others, so it's more complicated.
I wasn't aware of the squeaking problem here. I had other problems. With the irregularity of XM trying to play a ton of every 7.3 row... lol. And when its length is different thanks to how it fits on the row divider.

So I made myself work with the next version, which again has other problems. I even raised them an octave. .)

Gordon Matthew Thomas Sumner: Roxanne version 2 (ZX Spectrum 1 bit beeper cover (Fuse Unfiltered))

https://youtu.be/9eGpJiGwEuM
Z80 Forth compiler (ZX Spectrum 48kb): https://codeberg.org/DW0RKiN/M4_FORTH
_dw
Microbot
Posts: 123
Joined: Thu Dec 07, 2023 1:52 am

Re: ZX Spectrum 48 beeper music colection

Post by _dw »

The Cure: Friday im in love (ZX Spectrum 1 bit beeper cover (Fuse Unfiltered))

https://youtu.be/LjXsE2y7HGE
Z80 Forth compiler (ZX Spectrum 48kb): https://codeberg.org/DW0RKiN/M4_FORTH
_dw
Microbot
Posts: 123
Joined: Thu Dec 07, 2023 1:52 am

Re: ZX Spectrum 48 beeper music colection

Post by _dw »

utz wrote: Thu Mar 28, 2024 2:45 pm Glad you're having fun with octode2k16! Those conversions are great. You're one of the very few people using that engine, actually.

To answer some questions: Yes, the sound on actual hardware is more raspy. The "unfiltered" option in Fuse provides a fairly accurate rendition of how it will sound on the real machine. Some other emulators tend to overemphasize the raspyness, though. In addition to the imperfections caused by hardware limitations, there some also bugs in the engine that lead to even more unwanted noise. But hey, I was young and naive when I wrote that :P



No, all the tracks are identical.



No, the frequencies of all tracks are generated for each sample for a whopping total sample rate of 4557 KHz.
I came across a strange thing today.
I'm constantly running into some limits on what the engine can handle, and I was struggling to squeeze Doroles from the Cranberries under about 30 kb. I was at about a 3 and a half minute track on 38kb (that's without added drums). If I reduce the number of rows by half (and I will immediately reduce the speed to half, i.e. speed 2 to 4), I reached the limit, but this had an audible effect on the sound.
I looked at the DAT file again and saw that each "row" has 8 values... like the maximum number of tracks per row.
I looked into the cpp converter and it actually creates a new item for each unique line.
But... I had a problem finding identical patterns, which I was looking for based on whether they contain the same identical row.
The problem I had was that the input files were very chaotic, and at first glance similar patterns did not show me a high degree of agreement.
If a tone is only recorded in another track, it no longer matches...
Because the search to see if the row already exists compared exactly the tracks at the same positions...
When I wrote something more complex for comparison, I went from 38 kb to 24 kb!
And the sound sounds the same as when I deleted the end of the file and created a tap with the original cpp converter XM->DAT.

Does it matter how the tones are stored in the specific track? What happens if he plays a single note, but gradually changes the track number? Or if I make the storage so that the highest tones will be played first and then gradually lower and the duplicate tone will be nicely behind and it will end with the lowest and then zeros if nothing is played? Will it affect the sound? Or does it just optimize the DAT file size?
Spoiler

Code: Select all

//return the number of the row buffer that represents the current row of the current pattern, creating a new row buffer if necessary
uint16_t assignNoteRow(int row) {

	int assign = 0;
	bool matchFound = false;
	
	
	while (assign < maxRows && !matchFound) {
	
		assign++;
		if (assign > 1935) return assign;
#if 0
		if (noteRows[assign][0] == notes[row][0] && noteRows[assign][1] == notes[row][1] && noteRows[assign][2] == notes[row][2]
		&& noteRows[assign][3] == notes[row][3] && noteRows[assign][4] == notes[row][4] && noteRows[assign][5] == notes[row][5]
		&& noteRows[assign][6] == notes[row][6] && noteRows[assign][7] == notes[row][7]) matchFound = true;
#else	
		bool arrayFound[8] = {false,false,false,false,false,false,false,false};
		for (int i1 = 0; i1 < 8; i1++)
		{
			matchFound = false;
			for (int i2 = 0; i2 < 8; i2++)
			{		
				if ( arrayFound[i2] ) continue;
					
				if ( noteRows[assign][i1] == notes[row][i2]) 
				{
					arrayFound[i2] = true; // use 1 time
					matchFound = true;
					break;
				}
			}
			if ( matchFound == false ) break;
		}
#endif
		
	}
	
	if (!matchFound) {
		
		maxRows++;
		assign = maxRows;
		for (int i = 0; i < 8; i++) {
			noteRows[assign][i] = notes[row][i];
		}
	}

	return assign;
}
Z80 Forth compiler (ZX Spectrum 48kb): https://codeberg.org/DW0RKiN/M4_FORTH
_dw
Microbot
Posts: 123
Joined: Thu Dec 07, 2023 1:52 am

Re: ZX Spectrum 48 beeper music colection

Post by _dw »

So I finally finished it in the morning.

The Cranberries: Animal instinct (ZX Spectrum 1 bit beeper cover (Fuse Unfiltered))

https://youtu.be/Y-L9L6ZlwEw
Z80 Forth compiler (ZX Spectrum 48kb): https://codeberg.org/DW0RKiN/M4_FORTH
_dw
Microbot
Posts: 123
Joined: Thu Dec 07, 2023 1:52 am

Re: ZX Spectrum 48 beeper music colection

Post by _dw »

Linkin Park: Numb (ZX Spectrum 1 bit beeper cover (Fuse Unfiltered))

https://youtu.be/b0RTkgjTihc
Z80 Forth compiler (ZX Spectrum 48kb): https://codeberg.org/DW0RKiN/M4_FORTH
_dw
Microbot
Posts: 123
Joined: Thu Dec 07, 2023 1:52 am

Re: ZX Spectrum 48 beeper music colection

Post by _dw »

Thomas Earl Petty & Jeffrey Lynne: Learning To Fly (ZX Spectrum 1 bit beeper cover, Fuse Unfiltered)

https://youtu.be/1hT1GwJWfh4
„Ist nicht so schlimm, kann mal vorkommen. Ich muss mich etwas ausruhen, dann machen wir weiter.“
Z80 Forth compiler (ZX Spectrum 48kb): https://codeberg.org/DW0RKiN/M4_FORTH
User avatar
R-Tape
Site Admin
Posts: 6655
Joined: Thu Nov 09, 2017 11:46 am

Re: ZX Spectrum 48 beeper music colection

Post by R-Tape »

_dw wrote: Fri Jun 28, 2024 3:50 pm Thomas Earl Petty & Jeffrey Lynne: Learning To Fly (ZX Spectrum 1 bit beeper cover, Fuse Unfiltered)
I really like this one. Is there a TAP or TZX download anywhere?
_dw
Microbot
Posts: 123
Joined: Thu Dec 07, 2023 1:52 am

Re: ZX Spectrum 48 beeper music colection

Post by _dw »

R-Tape wrote: Fri Jun 28, 2024 4:51 pm I really like this one. Is there a TAP or TZX download anywhere?
No, you have to compile it yourself (just run one script with parameters) or ask someone with linux.
Z80 Forth compiler (ZX Spectrum 48kb): https://codeberg.org/DW0RKiN/M4_FORTH
Post Reply