The new ZXDB database update will be applied today at 1600BST. The site goes down whilst this happens, and normally takes 30 minutes.
ZX Spectrum 48 beeper music colection
Re: ZX Spectrum 48 beeper music colection
三好 智己: I Am Setsuna - Path of Redemption (ZX Spectrum 1 bit beeper cover (Fuse Unfiltered))
https://codeberg.org/DW0RKiN/M4_FORTH/s ... mption.tap
https://codeberg.org/DW0RKiN/M4_FORTH/s ... mption.tap
Z80 Forth compiler (ZX Spectrum 48kb): https://codeberg.org/DW0RKiN/M4_FORTH
Re: ZX Spectrum 48 beeper music colection
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
[video][/video]
https://codeberg.org/DW0RKiN/M4_FORTH/s ... re_ete.tap
Z80 Forth compiler (ZX Spectrum 48kb): https://codeberg.org/DW0RKiN/M4_FORTH
Re: ZX Spectrum 48 beeper music colection
いきものがかり: Naruto - Blue Bird (ZX Spectrum 1 bit beeper cover (Fuse Unfiltered))
download: https://codeberg.org/DW0RKiN/M4_FORTH/s ... e_Bird.tap
download: https://codeberg.org/DW0RKiN/M4_FORTH/s ... e_Bird.tap
Z80 Forth compiler (ZX Spectrum 48kb): https://codeberg.org/DW0RKiN/M4_FORTH
Re: ZX Spectrum 48 beeper music colection
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
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
Re: ZX Spectrum 48 beeper music colection
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
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
Re: ZX Spectrum 48 beeper music colection
Tom Odell: Another Love - another version (ZX Spectrum 1 bit beeper cover (Fuse Unfiltered))
Download: https://codeberg.org/DW0RKiN/M4_FORTH/s ... _love2.tap
Download: https://codeberg.org/DW0RKiN/M4_FORTH/s ... _love2.tap
Z80 Forth compiler (ZX Spectrum 48kb): https://codeberg.org/DW0RKiN/M4_FORTH
Re: ZX Spectrum 48 beeper music colection
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
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
Re: ZX Spectrum 48 beeper music colection
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
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
Re: ZX Spectrum 48 beeper music colection
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/
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
Re: ZX Spectrum 48 beeper music colection
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
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
Re: ZX Spectrum 48 beeper music colection
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
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
Re: ZX Spectrum 48 beeper music colection
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...
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
Re: ZX Spectrum 48 beeper music colection
James Paul McCartney: Yesterday (ZX Spectrum 1 bit beeper cover (Fuse Unfiltered))
https://youtu.be/jPr7PC2Sz38
https://youtu.be/jPr7PC2Sz38
Z80 Forth compiler (ZX Spectrum 48kb): https://codeberg.org/DW0RKiN/M4_FORTH
Re: ZX Spectrum 48 beeper music colection
Gordon Matthew Thomas Sumner: Roxanne (ZX Spectrum 1 bit beeper cover (Fuse Unfiltered))
https://youtu.be/-l9HJFpmpc4
https://youtu.be/-l9HJFpmpc4
Z80 Forth compiler (ZX Spectrum 48kb): https://codeberg.org/DW0RKiN/M4_FORTH
Re: ZX Spectrum 48 beeper music colection
Some of the highest notes hurt a bit. Is that unavoidable with the engine, or can they be softened somehow?
Re: ZX Spectrum 48 beeper music colection
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
Re: ZX Spectrum 48 beeper music colection
The Cure: Friday im in love (ZX Spectrum 1 bit beeper cover (Fuse Unfiltered))
https://youtu.be/LjXsE2y7HGE
https://youtu.be/LjXsE2y7HGE
Z80 Forth compiler (ZX Spectrum 48kb): https://codeberg.org/DW0RKiN/M4_FORTH
Re: ZX Spectrum 48 beeper music colection
I came across a strange thing today.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![]()
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'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
Re: ZX Spectrum 48 beeper music colection
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
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
Re: ZX Spectrum 48 beeper music colection
Z80 Forth compiler (ZX Spectrum 48kb): https://codeberg.org/DW0RKiN/M4_FORTH
Re: ZX Spectrum 48 beeper music colection
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.“
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
Re: ZX Spectrum 48 beeper music colection
I really like this one. Is there a TAP or TZX download anywhere?
Re: ZX Spectrum 48 beeper music colection
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
Re: ZX Spectrum 48 beeper music colection
I managed to compile it with an online service as well.
Search the net for "g++ ubuntu online"
https://www.onworks.net/os-distribution ... s/g-online will find it for you
g++ is there because I had some problem installing it, so it contains both g++ and gcc.
reinstall
m4, zmakebas, fuse-emulator-gtk, pasmo
I entered the Download directory and opened the terminal there with the right mouse button.
sudo apt-get install m4
password is 123456
sudo apt-get install zmakebas
sudo apt-get install fuse-emulator-gtk
sudo apt-get install pasmo
There is a problem with Pasmo because it is an old version... 0.5.3 will show you this during installation.
download the m4_forth sources
Sometimes I couldn't do it through firefox, so I downloaded it directly through wget from the address.
wget codeberg.org/dw0rkin/m4_forth/archive/master.zip
unzip master.zip
cd ./m4_forth/Testing
cat learning_to_fly
and I copy the line with which parameters it will start
before that you have to use "bash" because you haven't given rights to the music.sh script (it can be solved by right-clicking on the file)
And then press ENTER.
Then the hell begins. .)
Because Pasmo 0.5.5 is not installed and 0.5.3 does not support the IFNDEF macro.
So I redrew music.sh so that it accepts the "-old" parameter. If it is added between param="...", it can eliminate IFNDEF from m4 and from the DAT file that the conversion generates.
But it turns out that's not all. IFNDEF and IFDEF is also part of the asm file of the engine.
So from each octode2k16_core... "IFNDEF coreX" must be changed to "IF 1".
And the engine's main file contains even more.
"ifndef OCTODE2K16_ROUTINE" is changed to "IF 1" and then there are others (this time IFDEF) and that part is simply deleted.
PS: Definitely do not use shortcuts like ALT+F4, because this will close your Internet browser and not the program in it.
PPS: If there is an undiscovered word "band" in the English translation, it should be "pasmo".
Because "pasmo" in the Czech language is
and other interpretations
Search the net for "g++ ubuntu online"
https://www.onworks.net/os-distribution ... s/g-online will find it for you
g++ is there because I had some problem installing it, so it contains both g++ and gcc.
reinstall
m4, zmakebas, fuse-emulator-gtk, pasmo
I entered the Download directory and opened the terminal there with the right mouse button.
sudo apt-get install m4
password is 123456
sudo apt-get install zmakebas
sudo apt-get install fuse-emulator-gtk
sudo apt-get install pasmo
There is a problem with Pasmo because it is an old version... 0.5.3 will show you this during installation.
download the m4_forth sources
Sometimes I couldn't do it through firefox, so I downloaded it directly through wget from the address.
wget codeberg.org/dw0rkin/m4_forth/archive/master.zip
unzip master.zip
cd ./m4_forth/Testing
cat learning_to_fly
and I copy the line with which parameters it will start
before that you have to use "bash" because you haven't given rights to the music.sh script (it can be solved by right-clicking on the file)
And then press ENTER.
Then the hell begins. .)
Because Pasmo 0.5.5 is not installed and 0.5.3 does not support the IFNDEF macro.
So I redrew music.sh so that it accepts the "-old" parameter. If it is added between param="...", it can eliminate IFNDEF from m4 and from the DAT file that the conversion generates.
But it turns out that's not all. IFNDEF and IFDEF is also part of the asm file of the engine.
So from each octode2k16_core... "IFNDEF coreX" must be changed to "IF 1".
And the engine's main file contains even more.
"ifndef OCTODE2K16_ROUTINE" is changed to "IF 1" and then there are others (this time IFDEF) and that part is simply deleted.
Spoiler
Code: Select all
ifdef __NO_LOOP_MUSIC
jp exit ; 3:10 ...
endif
ifdef __LIMITED_TIMES_LOOP_MUSIC
dec L ; 1:4
jr z, exit ; 2:7/12 ...
push HL ; 1:11
pop HL ; 1:10
endif
etc.
PPS: If there is an undiscovered word "band" in the English translation, it should be "pasmo".
Because "pasmo" in the Czech language is
Spoiler
![Image](https://b2bpartnercdn.vshcdn.net/content/images/product/default/merici-pasmo-20-m_3467.jpg)
Z80 Forth compiler (ZX Spectrum 48kb): https://codeberg.org/DW0RKiN/M4_FORTH
Re: ZX Spectrum 48 beeper music colection
Johann Sebastian Bach - Air on the G String - 48k Spectrum Beeper Rick O'Neill cover
https://www.youtube.com/watch?v=tBRSoiCZQVo
I wanted to try it in octode before, so I did it now (quickly without too much playing and polishing) and this version was better, so good job.
https://www.youtube.com/watch?v=tBRSoiCZQVo
I wanted to try it in octode before, so I did it now (quickly without too much playing and polishing) and this version was better, so good job.
Z80 Forth compiler (ZX Spectrum 48kb): https://codeberg.org/DW0RKiN/M4_FORTH