[AUDIO] Authentic Early Medieval MEGA PACK - Interactive and Random Soundtrack Generation

Hi Unity Devs!
Well, I think this is my FINAL and ULTIMATE Medieval Audio Pack. It combines both the Authentic Early Medieval Audio Pack and the Authentic Medieval Battle PRO.

All in all, you get an incredible combination of fixed soundtracks and dynamically/randomly generated music.

The soundtracks have been carefully composed using a combination of virtual instruments from the Middle Ages and live instruments such as drums, recorders and classical guitar (emulating the sound of a lute) to ensure historical accuracy. The melodies and general sonority are based on extensive listening of pieces of music composed around the 10th and 11th century and on research of early medieval music harmony.

The combination of authenticity and random/interactive music generation makes this Asset unbeatable and truly the only one of it’s kind on the Unity Assetstore.

This pack includes:

  • 9 full pieces (all of which are both loopable and non-loopable)

  • 9 random soundtrack generation scripts:

  • 2 medieval church organs (minor/major)

  • 2 Gregorian chants (one ensemble in minor, one “live” singers in major)

  • A medieval lute (a sort of guitar)

  • A medieval harp

  • A medieval flute

  • A medieval folk dance music generation

  • A medieval battle music generation

  • These two last ones offer an incomparable variety of randomly generated soundtracks as they include a great number of melodies, song structures and instruments.

  • 2 Interactive and/or Randomly generated soundtracks

  • One basic interactive “Exploration and Battle” script

  • One Interactive and Randomly generated Medieval Battle music which switches between “Peace” and “Battle” mood.

  • An easy DRAG AND DROP Prefab system for quick “in game” integration. NO CODING REQUIRED! Simply drag and drop the Prefabs of your choice into your game, reposition the triggers, and YOU ARE DONE! (see the demo videos)

  • A system to change the tempo/pitch of several of the randomly generated soundtracks for even more variety!

  • 18 different chimes to underline events like a victory, defeat, a click on a button and the likes…

  • Multiple ambiance sounds including campfire, battle, castle courtyard, forest, horses walking, winter wind…, all loopable.

  • As a bonus, over 200 medieval sound FX!

In short, with this pack, the music will always stay fresh, varied and your players will never hear the same soundtrack twice!

THE PACK SHOULD BE AVAILABLE SOMEWHERE AROUND MID-MAY. Stay tuned!!! :smile:

:sunglasses:

Hi there

I already own the two packs. Will you still update the two existing packs, or only the new/combined pack?

1 Like

I like what you do with the scripts and prefabs. It’s helpful! :slight_smile:

1 Like

Hi!

@Parallaxe : Both packs are being updated to the latest version as we speak!
So yes, don’t worry, you’ll get all of it for “free”! :wink:
Basically, a brand new battle music and 3 new randomly generated soundtracks. :sunglasses:

@hopeful : Thanks! It means a lot! I really try to make my packs as easy to use as possible… Not everyone is into scripting… :stuck_out_tongue:

1 Like

Love this! Thank you. :slight_smile:

1 Like

The pack is out! :wink:

Wow, this asset looks amazing. I do not understand why it is not more known or this post has more pages.

I have a couple of questions. First, I’m a bit confused with so much different version of Authentic Early Medieval and upgrades, what would I have to buy to have it all?

Another question, when you generate a song randomly, do you generate it with a seed? Is it possible to repeat the same song again?

Well, it’s good music and there’s only so much you can say about it, since it doesn’t need a lot of support. :slight_smile:

One thing you might look into is Marma’s full library of music. If it’s within your budget, I’d think it would give you everything you need and much more.

2 Likes

At first I am interested in everything he has about authentic medieval music. Maybe in the future I might also be interested in the asset of the drums or if he makes assets from other cultures.

I have another question about his asset, other than the two I made. Let’s see if Marma goes through his post to answer them.

Periodically the forum fails to notify thread owners of new posts. You might try contacting him by support email, as normally he would have responded by now.

1 Like

Ok, I just sent him an email. Let’s hope he goes through here.

Hi guys!
Sorry about the delay in answering, indeed, I received no notification for your posts! :hushed:
Thanks a lot hopeful, for helping out! :wink:

Duende: Yes, it’s a bit of a “mess” my medieval series, I published many different assets and tried to break them up in separate packs to cater for different needs. If you want everything medieval related, then the Mega Pack is what you need. https://assetstore.unity.com/packages/audio/music/world/authentic-early-medieval-mega-pack-62367

The “Giga Pack” includes all my assets, so it’s a real bargain, but if you only need medieval stuff, then of course, no use buying all the stuff. You can always upgrade by the way, for the price difference!

About the song generation, no, there is no way to “repeat” a previously randomly generated track.
However, if you have basic knowledge in audio sequencing, you can easily “assemble” your own custom medieval song by simply drag/dropping the various samples… They are well organized in the “Resources” folder into subfolders, sorted by tempo and such, so all of the samples will fit together.

If you have any other question, feel free to ask! I’ll try to monitor this thread a bit more diligently… :smile:
Sincerely,
Marma

1 Like

Thank you very much for answering. :slight_smile:

I do not know how your algorithm will choose songs randomly, but maybe you do not know that it is possible to always get the same random value, so with a seed you can get the same song. To make my game I am working a lot with procedural algorithms and randomness and I could help you to add this feature, if you want.

I think that would be faster than gutting all the algorithms of your asset to find out how you create the songs randomly. :stuck_out_tongue:

I have another couple of questions:

Would it be possible to know when an instrument is playing? An example of what I want to do: a random song is chosen where there is a laud, a flute and a drum. The flute sounds in some parts but not always. So the game would create 3 characters, each with their instrument, and the flute character would only perform their playing animation when the flute sounds in the song.

Another question, do you plan to make assets from the same historical period but from other cultures?

Hi!
OK, so basically, the songs are generated via two main features:

  • The first one is a “grid” where the song “structure” is built (for instance, drums start at measure 1, melody starts at measure 4…)
  • The second one is a random integer which determines out of for instance 8 drum samples, which one is playing.

So basically, if you manually set the integer for the song “structure” and all the integers for which melody is playing, then you can “force” the script to play the music you want.

If you want to know which instrument is playing, I think this is linked to the “song structures”. Some have flute, others have other instruments…

As far as other historical periods, the only asset I’ve produced along those lines is the “Infinite Drums” one, which is more “ethnic/jungle”, but also “epic orchestral” if you so choose…
What exactly did you have in mind?

I downloaded the free version and it has been very easy to change your algorithm in order to play the same song using a seed. I mark the changes between comments:

using UnityEngine;
using System.Collections;

public class random_guitar : MonoBehaviour {

   public AudioSource audio_guitarA;
   public AudioSource audio_guitarB;
   int guitarA;
   int guitarB;
   Object[] AudioArray_guitarA;
   Object[] AudioArray_guitarB;
   public float bpm = 100.0F;
   public int beatsPerMeasure = 4;
   private double singleMeasureTime;
   private double delayEvent;
   private bool running = false;
   private int i;

    // Changed -----------------------------------------
    public int seed;
    System.Random randomNumber;
    // Changed -----------------------------------------

    // Use this for initialization
    void Start () {
       // Changed -----------------------------------------
       randomNumber = new System.Random(seed.GetHashCode());
       // Changed -----------------------------------------

       bpm = 100.0F;
       beatsPerMeasure = 4;
       int i = 0;
       singleMeasureTime = AudioSettings.dspTime + 2.0F;
       running = true;
        // Changed -----------------------------------------
        guitarA = randomNumber.Next(0, 4);
        guitarB = randomNumber.Next(0, 4);
        // Changed -----------------------------------------

        //Load the GUITAR A samples into the AudioClip Array
        audio_guitarA = (AudioSource)gameObject.AddComponent <AudioSource>();

       AudioArray_guitarA = Resources.LoadAll("random/minor/4-4/100/guitar",typeof(AudioClip));
       
       Debug.Log("The Length of the GUITAR A array is " + AudioArray_guitarA.Length);
       audio_guitarA.clip = AudioArray_guitarA[guitarA] as AudioClip;         
       
       //Load the GUITAR B samples into the AudioClip Array
       audio_guitarB = (AudioSource)gameObject.AddComponent <AudioSource>();

       AudioArray_guitarB = Resources.LoadAll("random/minor/4-4/100/guitar",typeof(AudioClip));
       
       Debug.Log("The Length of the GUITAR B array is " + AudioArray_guitarB.Length);
       
       audio_guitarB.clip = AudioArray_guitarB[guitarB] as AudioClip;                     
   }   
   
   // Update is called once per frame
   void Update () {
       if (!running)
           return;
       double time = AudioSettings.dspTime;
       if (i == 0) {       
           if (time + 1.0F > singleMeasureTime) {
                // Changed -----------------------------------------
                guitarA = randomNumber.Next(0, 4);
                // Changed -----------------------------------------
                audio_guitarA.clip = AudioArray_guitarA[guitarA] as AudioClip;
               audio_guitarA.PlayScheduled (time);
           }
       }
       if (i==4 ){
           if (time + 1.0F > singleMeasureTime) {
                // Changed -----------------------------------------
                guitarB = randomNumber.Next(0, 4);
                // Changed -----------------------------------------
                audio_guitarB.clip = AudioArray_guitarB[guitarB] as AudioClip;
               audio_guitarB.PlayScheduled(time);
           }
       }                 
       //THE most important part of this script: this is the metronome, keeping count of the measures and making sure the audio is in sync
       if (time + 1.0F > singleMeasureTime) {
           i +=1;
           Debug.Log ("The i int equals  " + i);
           if (i==8){
               i = 0;
           }
           singleMeasureTime += 60.0F / bpm * beatsPerMeasure;
           Debug.Log("The single measure time is " + singleMeasureTime);
       }
   }
}

Yes, looking at the free version and some of your videos, I think it is possible to know what instrument is playing.

The drums is another asset that also interests me. Although the songs you have for example do not sound like a traditional song that a tribe would play in the village, but as something more environmental and modern.
As well, Gregorian chants do not work for me because they sound with a church echo, I would have preferred the clean chant and add the echo in runtime, depending on where it sounds.

I am thinking of multiple cultures: Asian (China, Japan, Mongol, etc.), Hindu, Near East (Persia, Arabia, etc.), African, Ancient Greece and Rome, Nordic, Native Americans of the South and North, Celtic, Pirate or maritime… even some more I can think… :smile:

Wow!
Ok, that’s a LOT of different “cultures”… Some of them however, will sound very similar. Between China and Japan for instance.
Ancient Greece and Rome, actually, we have very little information on the music that was played, but it was probably monophonic and very basic. I have made a couple of tracks for a game jam in this style, but nothing of the “scale” and complexity as the Medieval music.
Some of the ones you list would ideally also include chants, which is always difficult to emulate.

In any case, I can see that you know your way around code!
I’m sure you’ll have no problem tweaking my scripts, although I must confess I learned all this by myself, so it’s not very “clean” or optimized… :stuck_out_tongue:

As regards the Infinite Drums pack, I was thinking of this track which is a bit more “jungle”/ethnic, but perhaps it’s a bit too complex?

I also have one variation where there are “only” drums, which may do the trick.

Yes, there are many similarities and others are not “cultures”, like the songs of sailors or pirates. Hahaha
But between China and Japan there are similarities but their traditional songs are different, even different instruments.

I know, but you can always add some imagination and your own invention to make it look like music from that era. Something similar to tribal songs of Africa or Native Americans would happen, there is not much information about those songs but you can do something that looks like it.

For example, other cultures, which would not be realistic, would be songs of elves and dwarves. You would have no choice but to invent everything. :stuck_out_tongue:

I showed you the code so you could see how easy it is, it’s a feature that you can add to your asset very quickly. So that the user can choose if he wants a particular song or a random seed and the songs are always different.

In any case, I do not know how will be the rest of the scripts you have created, but I would like to play and compose songs as well as you programing. :wink:

Yes, that song might be worth it but with the drums only, I suppose.

In general, I’m very interested in your work because you create random songs and also separate the instruments that sound. It’s just what I was looking for and needed.

Therefore, in the future (when I have the game prepared for a Kickstarter), if you do not make new assets from other cultures, I would like to hire you to create them. If you’re interested.

Thanks for thinking of me, Duende! :slight_smile:
We’ll keep in touch then!
In the meantime, if you decide to buy the Medieval Pack, feel free to play around with it.
If you manage to tweak it for creating custom songs, I’ll include it in an upgrade, and I can compose a certain number of songs for you in exchange for your work! :wink:

Just wanted to underline that keying off of a random seed is a great way to coordinate the music over a multiplayer network. :slight_smile:

1 Like

Count on it. :slight_smile:

I have another question, is it possible to filter instruments? For example: that a song be played only with laud and drums, or with flute and drums, or with flute and lute, only laud, only flute, flute and drums, etc.