Royalty Free Musics for your Oric Games

Probably the most technical forum around. It does not have to be coding related, or assembly code only. Just talk about how you can use the AY chip to do cool sounding things :)
User avatar
jbperin
Squad Leader
Posts: 536
Joined: Wed Nov 06, 2019 11:00 am
Location: Valence, France

Royalty Free Musics for your Oric Games

Post by jbperin »

Please find attached here below three music that you can freely use in your Oric game.

License free and nNo authoring mention is required to use them (you're even strongly invited not to mention who you got them from :? )

I post them in .zip file because the forum doesn't allow to attach YM file .. but they actually are YM file that you can convert with ym2mym and transform in buffer with header in order to have them played with the mymplayer

These are 16 bars long music at tempo 120.
RFM_01_CMaj_I_VI_II_V.zip
(1.48 KiB) Downloaded 479 times
RFM_02_FMaj_I_IV_V_I.zip
(1.38 KiB) Downloaded 465 times
RFM_03_DMaj_I_IV_V_IV.zip
(1.39 KiB) Downloaded 489 times

PS: Just an advice .. If you plan to use these music, don't forget to add an easily accessible "Music Off" feature in your game .. or some Orics are going to fly through windows.
User avatar
iss
Wing Commander
Posts: 1775
Joined: Sat Apr 03, 2010 5:43 pm
Location: Bulgaria
Contact:

Re: Royalty Free Musics for your Oric Games

Post by iss »

jbperin wrote: Sat Apr 23, 2022 10:19 am License free and no authoring mention is required to use them ...
Thanks! Just wondering who's OSME? :D
User avatar
ibisum
Wing Commander
Posts: 1866
Joined: Fri Apr 03, 2009 8:56 am
Location: Vienna, Austria
Contact:

Re: Royalty Free Musics for your Oric Games

Post by ibisum »

Great! Has anyone rendered these yet, so we can listen without assembly?
User avatar
jbperin
Squad Leader
Posts: 536
Joined: Wed Nov 06, 2019 11:00 am
Location: Valence, France

Re: Royalty Free Musics for your Oric Games

Post by jbperin »

iss wrote: Sat Apr 23, 2022 11:32 am Thanks! Just wondering who's OSME? :D
OSME stands for Oric Sound and Music Engine.

It is one of my fantasy project of creating an automatic music generation system on Oric.

The idea is that, instead of loading pre-encoded music and have them played by an embedded player, the Oric could generate the music on the fly.

Expected benefits are:
  • Lower the memory fingerprints of music in game (a music generator could occupy less space than music data + music player)
  • Make the music possibly adapt to game context (generating music rather then playing it could allow to change it dynamically (changing tempo, rhythm, harmony) to create more stressing or relaxing music .. depending on the game situation)
The music provided above are result of my first python prototype that I use to test and elaborate algorithms.
It generates YM files from:
  • a random number generator,
  • some basic harmonic rules and a bunch of predefined cadences
  • Euclidean Rhythm generator
User avatar
jbperin
Squad Leader
Posts: 536
Joined: Wed Nov 06, 2019 11:00 am
Location: Valence, France

Re: Royalty Free Musics for your Oric Games

Post by jbperin »

ibisum wrote: Sat Apr 23, 2022 11:46 am Great! Has anyone rendered these yet, so we can listen without assembly?
I personally use the YM player for PC STSOUND to listen to YM files (was recommanded by Dbug).

I think it allows to render wav files so I'll try to render some files if I manage to get some interesting result.
User avatar
iss
Wing Commander
Posts: 1775
Joined: Sat Apr 03, 2010 5:43 pm
Location: Bulgaria
Contact:

Re: Royalty Free Musics for your Oric Games

Post by iss »

Ay_Emul works too.
And congrats :!: The files sound really well and (imho) they are ready for background music of an adventure game.
User avatar
Dbug
Site Admin
Posts: 4906
Joined: Fri Jan 06, 2006 10:00 pm
Location: Oslo, Norway
Contact:

Re: Royalty Free Musics for your Oric Games

Post by Dbug »

I added YM and MYM formats to the forum attachment list of approved extensions.
User avatar
jbperin
Squad Leader
Posts: 536
Joined: Wed Nov 06, 2019 11:00 am
Location: Valence, France

Re: Royalty Free Musics for your Oric Games

Post by jbperin »

iss wrote: Sat Apr 23, 2022 12:32 pm Ay_Emul works too.
And congrats :!: The files sound really well and (imho) they are ready for background music of an adventure game.
Thank you Iss, I'm exactly wanting to have an easy and cheap way to get background music for games.
I think I need to enhance the sound variety in the produced music. For now I only use basic sound .. I'd like to experiment with some more elaborated sounds (using noise modulation). But it's not so that easy.
Dbug wrote: Sat Apr 23, 2022 1:50 pm I added YM and MYM formats to the forum attachment list of approved extensions.
So let me be the first one to post an YM file here. :D
Here's a test of an arpeggiator implementation.
RFM_04_BMaj_I_VI_II_V.ym
(25.1 KiB) Downloaded 513 times
ibisum wrote: Sat Apr 23, 2022 11:46 am Great! Has anyone rendered these yet, so we can listen without assembly?
Here's an mp3 rendering of the file using the arpegiator.
RFM_04_BMaj_I_VI_II_V.mp3
(751.22 KiB) Downloaded 511 times
and a render of one of the previous file:
RFM_01_CMaj_I_VI_II_V.mp3
(379.59 KiB) Downloaded 522 times
Keep in mind that these are generated music. It is not supposed to become a hit .. It aims at providing background music with very limited memory consumption.
User avatar
ibisum
Wing Commander
Posts: 1866
Joined: Fri Apr 03, 2009 8:56 am
Location: Vienna, Austria
Contact:

Re: Royalty Free Musics for your Oric Games

Post by ibisum »

Keep in mind that these are generated music. It is not supposed to become a hit .. It aims at providing background music with very limited memory consumption.
Fun little ditties nevertheless... ;). Thanks for rendering!
User avatar
rax
Flying Officer
Posts: 200
Joined: Tue Jul 24, 2018 3:16 pm

Re: Royalty Free Musics for your Oric Games

Post by rax »

Unbelievable! Nice job! The tracks sound good. I think they are pretty good for home screen and/or menus (sounds like that to me)

It's really interesting if ORIC can dynamically generate music.

I had an idea to look for tools that automatically generate some music, but I never found anything that could be used.
For me, music and sounds is a big problem, so I still have unfinished things that are only missing music.
jsk
2nd Star Corporal
Posts: 18
Joined: Mon Jun 29, 2020 10:11 pm

Re: Royalty Free Musics for your Oric Games

Post by jsk »

jbperin wrote: Sat Apr 23, 2022 10:19 am Please find attached here below three music that you can freely use in your Oric game.

License free and nNo authoring mention is required to use them (you're even strongly invited not to mention who you got them from :? )

I post them in .zip file because the forum doesn't allow to attach YM file .. but they actually are YM file that you can convert with ym2mym and transform in buffer with header in order to have them played with the mymplayer

These are 16 bars long music at tempo 120.

RFM_01_CMaj_I_VI_II_V.zip
RFM_02_FMaj_I_IV_V_I.zip
RFM_03_DMaj_I_IV_V_IV.zip


PS: Just an advice .. If you plan to use these music, don't forget to add an easily accessible "Music Off" feature in your game .. or some Orics are going to fly through windows.
It seems you do lots of interesting stuff!

If i understand this clearly, you have written a python program that generates ym (14-byte register) samples as output?

If it doesn't use lots of specialized libraries to, can i make a stab at working a cc65 program based of the generator?

It would seem (?) to be a relative easy thing to do on the actual Atmos instead of sitting and loading it?
.
I just today started to create my cc65 rom-less routines for sound... First I'll base it of basically loading the 14 registers!

Btw: a lot of pointers to oric stuff on osdn? Are all broken...
User avatar
Dbug
Site Admin
Posts: 4906
Joined: Fri Jan 06, 2006 10:00 pm
Location: Oslo, Norway
Contact:

Re: Royalty Free Musics for your Oric Games

Post by Dbug »

jsk wrote: Thu Jan 16, 2025 9:11 pm Btw: a lot of pointers to oric stuff on osdn? Are all broken...
OSDN is gone, but all the relative links are still valid to https://github.com/Oric-Software-Develo ... ree/master
User avatar
jbperin
Squad Leader
Posts: 536
Joined: Wed Nov 06, 2019 11:00 am
Location: Valence, France

Re: Royalty Free Musics for your Oric Games

Post by jbperin »

jsk wrote: Thu Jan 16, 2025 9:11 pm If i understand this clearly, you have written a python program that generates ym (14-byte register) samples as output?
Correct
jsk wrote: Thu Jan 16, 2025 9:11 pm If it doesn't use lots of specialized libraries to, can i make a stab at working a cc65 program based of the generator?
It doesn't use specialized libraries. I think it is pure python. Euclidian rhythms are very simple.
This is a version of the script:
https://github.com/jbperin/OSME/blob/de ... s/genym.py
jsk wrote: Thu Jan 16, 2025 9:11 pm It would seem (?) to be a relative easy thing to do on the actual Atmos instead of sitting and loading it?
I choosed Euclidian rhythms because it is very simple mecanism.
And it can create so many variations.
It is the equivalent of Bressemham for music.

If you look at the script, you'll realize that it is designed to be run on a 50 Hz IT.
The ultimate goal is to have this algorithm run right on the atmos instead of on a PC to generate YM.

I even made a version of this script in C .. and ran it on the atmos.
And I could have it run in real time!!
This C program generates sample for the YM into a memory area .. and the 50 Hz consume this generated sample and write them to the YM.

The problem is that the C is very slow .. and I need a very large memory area to buffer enough music for the music not to stop.
But that's not a real problem because the goal is to get rid of the C program .. and only keep the 50Hz IT in ASM that generate music on the fly. No intermediary buffer.

My conviction is that Euclidian Rhythms are simple enough to fit in a 50Hz IT handler.
Bound with a random generator they can create almost infinite music with variation.
Without even having to store music data.
User avatar
ibisum
Wing Commander
Posts: 1866
Joined: Fri Apr 03, 2009 8:56 am
Location: Vienna, Austria
Contact:

Re: Royalty Free Musics for your Oric Games

Post by ibisum »

Without even having to store music data.
If you use the ATMOS ROM as a factory preset, you've got, literally, thousands of usable sounds already onboard the Atmos, which nobody has really explored much, yet ..

;)
jsk
2nd Star Corporal
Posts: 18
Joined: Mon Jun 29, 2020 10:11 pm

Re: Royalty Free Musics for your Oric Games

Post by jsk »

jbperin wrote: Fri Jan 17, 2025 10:59 am
jsk wrote: Thu Jan 16, 2025 9:11 pm If i understand this clearly, you have written a python program that generates ym (14-byte register) samples as output?
Correct
jsk wrote: Thu Jan 16, 2025 9:11 pm If it doesn't use lots of specialized libraries to, can i make a stab at working a cc65 program based of the generator?
It doesn't use specialized libraries. I think it is pure python. Euclidian rhythms are very simple.
This is a version of the script:
https://github.com/jbperin/OSME/blob/de ... s/genym.py
jsk wrote: Thu Jan 16, 2025 9:11 pm It would seem (?) to be a relative easy thing to do on the actual Atmos instead of sitting and loading it?
I choosed Euclidian rhythms because it is very simple mecanism.
And it can create so many variations.
It is the equivalent of Bressemham for music.

If you look at the script, you'll realize that it is designed to be run on a 50 Hz IT.
The ultimate goal is to have this algorithm run right on the atmos instead of on a PC to generate YM.

I even made a version of this script in C .. and ran it on the atmos.
And I could have it run in real time!!
This C program generates sample for the YM into a memory area .. and the 50 Hz consume this generated sample and write them to the YM.

The problem is that the C is very slow .. and I need a very large memory area to buffer enough music for the music not to stop.
But that's not a real problem because the goal is to get rid of the C program .. and only keep the 50Hz IT in ASM that generate music on the fly. No intermediary buffer.

My conviction is that Euclidian Rhythms are simple enough to fit in a 50Hz IT handler.
Bound with a random generator they can create almost infinite music with variation.
Without even having to store music data.
Ok, thanks for sharing. Looking at the C code...

Hmmm, You know I just wrote a pure version C setAYreg, lol, got it working today and I can the 14-bytes reg-dumps that are ZIP, PING, etc!

So, I'm trying to understand the code:

Not sure why in tools/gensym.py it prints out the values in a strinage order, doesn't seem to be r0..r13?
print ("%d %d %d %d: 0x%02x%02x %02d, 0x%02x%02x %02d, 0x%02x%02x %02d, 0x%02x%02x %02d %02x %02d"%\
(
theOSME.kernel_s, theOSME.kernel_cs, theOSME.kernel_beat, theOSME.kernel_fraction,

theFrame['r1'],theFrame['r0'],theFrame['r10'],
theFrame['r3'],theFrame['r2'],theFrame['r11'],
theFrame['r5'],theFrame['r4'],theFrame['r12'],
theFrame['r13'],theFrame['r14'], theFrame['r6'],theFrame['r7'],theFrame['r15'])
)
#aYM.addFrame(theFrame)
So, here is my ignorance, as the code is a bit OO ;-)

a) I'd assume to generate a music, you initialize the random number generator with a seed, and with this seed, and same random number generator (your own is better for predicatablility) it generates exactly the same music every time you run wherever? Don't see the seed.

b) I'd assume you can also input how long/many samples you want it to generate? How?

c) If I could just see a simple version that outputs r0..r13 and I just need to pump it to the AY just like that every 50Hz clock interrupt, that'd be easy.

d) I looked at the Euclide webpage and it all seems simple, except, then somehow it's mapped to music! There seems to be some really clever stuff going on interpreting the "beats" soming out as single tune + chords + drum beats? Not sure how it gets there and what the theory is about it. Need to read some more!

Any links to more indepts algos, examples?

e) I just coded MUSIC/SOUND/PLAY for oric raw, TODAY!, without relying on the ROM. More or less works... This would be an excellent usage of it! LOL And incidentally, I did just test to have a C-routine called 50x per/s by interrupt... So this is doable.

d) is this all integer math, or does it rely on more advanced math? I see fractions being mentioned. I'm guessing with your 3D-expericence you use some variant of fix-point math!

e) I've written various C-implementations of float point math (dec24, dec30) that basically just implements + - * / so far...

Since I'm not on a PC I rely on ONLY cc65 under Linux/termux(Android) actually, and typically very simple build-procedures. I think it's good enough to prototype and if you push it, using char etc for indexing it generates descent simple code.
Post Reply