Search Unity

  1. Welcome to the Unity Forums! Please take the time to read our Code of Conduct to familiarize yourself with the forum rules and how to post constructively.
  2. Dismiss Notice

Stepp 2.0 - A Music Sequencing Plugin

Discussion in 'Assets and Asset Store' started by Pelican_7, Aug 19, 2016.

  1. Pelican_7

    Pelican_7

    Joined:
    Nov 25, 2014
    Posts:
    190
    Stepp 2.0 - A Music Sequencing Plugin
    Asset Store:
    https://www.assetstore.unity3d.com/#!/content/69113
    Online Documentation: http://www.pelican7.com/stepp-documentation

    Stepp is a music sequencing plugin that provides you with a foundation for building your own audio step sequencers. Stepp is the audio sequencing technology behind the recent mobile game, Lily.



    Full Description
    Stepp offers sample accurate playback of your audio clips through a programmable sequence and a system for managing your audio files called sound banks. The result is a plugin that allows you to build any step sequencer interface you wish, and use Stepp to handle the underlying audio sequencing.

    Stepp is the audio sequencing technology behind the mobile game, Lily, and this is perhaps the clearest example of the level of freedom you have with Stepp.

    Stepp comes with two demo scenes showcasing music sequencers built with Stepp, including audio samples, which can be seen in the video. Additionally, all source code is included so you’re free to inspect how any feature is implemented. View the online documentation here.

    Features
    • Sample accurate playback of audio clips.
    • Step sequence management.
    • Sound bank management, including background loading of audio clips.
    • Configurable sequencer settings, including BPM and sequence length.
    • Supports Unity 5 audio mixing, effects, and snapshots.
    • Support for multiple synchronised step sequencers, shown in the Multi-Sequencer demo.
    • Two demo musical sequencers, including audio files.
    • Clear online documentation.
    • All source code included.
    Existing Customers
    Anyone who bought Stepp 1.0 has a free upgrade to version 2.0. Thanks for all the support, kind messages, and helpful feedback!
     
    Shodan0101 likes this.
  2. geekchau

    geekchau

    Joined:
    Jun 13, 2013
    Posts:
    16
    This update looks great!
    I added this to my wishlist recently and the reason I didn't buy immediately was because the last update was a very long time ago (I didn't want to risk it not working). Although it's nice to see it being updated, I noticed that the price also changed quite drastically.

    EDIT: Any chance of a comeback promo sale? ;)
     
    Last edited: Aug 19, 2016
  3. Pelican_7

    Pelican_7

    Joined:
    Nov 25, 2014
    Posts:
    190
    Thanks!

    Aww, sorry buddy! The asset has indeed changed quite a bit in this version. The sales are at Unity's discretion I'm afraid so I'd say keep an eye out for whether Stepp gets chosen for one!

    Thanks for the interest :)
     
  4. imaginationrabbit

    imaginationrabbit

    Joined:
    Sep 23, 2013
    Posts:
    349
    Hello- great looking asset- Is it possible for save the sequences that are created by a user at runtime?

    For example- the user created a musical sequence at runtime using Stepp- can that sequence be saved and played back later by Stepp?

    Thank you.
     
  5. Gekigengar

    Gekigengar

    Joined:
    Jan 20, 2013
    Posts:
    702
    Interesting asset, does the multi-sequencer also works with different BPM and Length?
     
  6. Pelican_7

    Pelican_7

    Joined:
    Nov 25, 2014
    Posts:
    190
    Thanks @mdotstrange! It's not built-in I'm afraid. To do that you'd have to save the sequence yourself and then call AddNoteAtStep on Start.
     
  7. Pelican_7

    Pelican_7

    Joined:
    Nov 25, 2014
    Posts:
    190
    Thanks! The multi-sequencer example has four sequencers that share a metronome, so you can change the metronome's BPM and they will all follow. Each sequencer has a different "Beats Per Step" parameter, which controls how many beats equate to one 'step' in the sequencer - this is how the sequencers advance at different tempo denominations (quarter-note, eighth-note etc.). And yes, each sequencer has its own sequence and thus length, so they can all be different lengths.
     
  8. imaginationrabbit

    imaginationrabbit

    Joined:
    Sep 23, 2013
    Posts:
    349
    Thank you for the reply- Is creating a save/load system for the sequencer something you think an intermediate C# coder can do without too much trouble? Is there some code reference you could point me to that shows the data structure of a sequence if its not too much trouble- or if you think its easily doable I'll just purchase and check it out- thanks-
     
  9. Pelican_7

    Pelican_7

    Joined:
    Nov 25, 2014
    Posts:
    190
    No worries.

    Hmm, possibly! This link shows how to add notes to the sequencer - https://www.pelican7.com/stepp-documentation#sequencing - which as you can see requires a noteId (enum) and a step (integer) like so:

    Code (CSharp):
    1. stepSequencer.AddNoteAtStep(NoteId.C3, 0);
    2. stepSequencer.AddNoteAtStep(NoteId.Eb3, 1);
    3. stepSequencer.AddNoteAtStep(NoteId.F3, 2);
    Therefore, you need to persist a collection of enum/integer pairs, which can then be applied to the sequencer when you want to load the sequence. In Lily, I write them out manually (along with some other sequencer settings) to a JSON file. For example, you could do something like (just sketching, not tested!):

    Code (CSharp):
    1.  
    2. // A struct for NoteId/integer pairs.
    3. [System.Serializable]
    4. public struct Note
    5. {
    6.     public NoteId noteId;
    7.     public int step;
    8. }
    9.  
    10. // A saved sequence - a collection of Notes.
    11. [System.Serializable]
    12. public class SavedSequence
    13. {
    14.     public Note[] notes;
    15.  
    16.     public SavedSequence(Note[] notes)
    17.     {
    18.         this.notes = notes;
    19.     }
    20. }
    21.  
    22. ...
    23.  
    24. // Create a sequence.
    25. var savedSequence = new SavedSequence(new Note[]
    26. {
    27.     new Note() { noteId = NoteId.C3, step = 0 },
    28.     new Note() { noteId = NoteId.D3, step = 1 },
    29.     new Note() { noteId = NoteId.E3, step = 2 }
    30. });
    31.  
    32. // Use JsonUtility to convert it to a JSON string for writing to a file.
    33. string sequenceJSON = JsonUtility.ToJson(yourSavedSequence);
    34.  
    35. ...
    36.  
    37. // To apply the sequence, call AddNoteForStep with each saved note.
    38. public void LoadSequence(SavedSequence savedSequence)
    39. {
    40.     foreach (var note in savedSequence.notes)
    41.     {    
    42.         var noteId = note.noteId;
    43.         var step = note.step;
    44.  
    45.         stepSequencer.AddNoteAtStep(noteId, step);
    46.     }
    47. }
    48.  
     
  10. Goyoman

    Goyoman

    Joined:
    Jun 16, 2015
    Posts:
    10
    Hello Pelican, can you help me with someting?

    How can I keep sequencers in sync after I play and stop them at different times? Them all have the same metronome.

    I didn't want to have them running without notes to "silence" them.

    Thank you!
     
  11. atomicJugs

    atomicJugs

    Joined:
    May 26, 2018
    Posts:
    1
    Hi,

    Love the plugin. I was wondering if there was a way to un-toggle the selected grid?

    Thanks!