devNotes 5-02-16 foriero – sequencer

https://youtu.be/uZhG5TCbucM

using UnityEngine;
using System.Collections;
using ProceduralToolkit;
using System.Collections.Generic;
using System.IO;

public class Fibo_Spawner : MonoBehaviour
{
    StreamWriter sWrite;

    public GameObject preFab;

    public ArgosMeshDraft_Fibonacci AMD_Base;

    List<GameObject> gO_List = new List<GameObject>();

    public int iSpwanLoc = 205;

    public int iDelt = 8;

    public float pathTime = 10f;

    public int numPoints = 10;


    // Use this for initialization
    void Start()
    {
        sWrite = new StreamWriter("Fibo_Spawner.cs.txt");
    }


    public void onButtonDown()
    {
        Quaternion q;
        GameObject gO;

        GameObject gFibSphere = GameObject.Find("Fibonacci_Sphere");
        ArgosFibonacci aF = gFibSphere.GetComponent<ArgosFibonacci>();
        AMD_Base = aF.aMF_Base;
        q = Quaternion.LookRotation(AMD_Base.funcVerts[iSpwanLoc].vPos.normalized);
        gO = (GameObject)Instantiate(preFab, AMD_Base.funcVerts[iSpwanLoc].vPos, q);

        gO_List.Add(gO);

        List<Vector3> toVList = new List<Vector3>();

        gO.GetComponent<Fibo_Rider>().initFromSpawner(iSpwanLoc, iDelt, numPoints, pathTime);

    }


    // Update is called once per frame
    void Update()
    {

    }
}

shim_120

using UnityEngine;
using System;
using System.Collections;
using System.Collections.Generic;
using ForieroEngine.MIDIUnified;

public delegate void TimeKeeperBeatDelegate(int beat, int beatNumerator, int beatDenominator);

public class TimeKeeper : MonoBehaviour, IMidiEvents{
	
	public event ShortMessageEventHandler ShortMessageEvent;
			
	float msElapsed = 0f;
		
	void Update(){
		msElapsed += Time.deltaTime;
		if(msElapsed*1000f >= ms) {
			OnInternalTimer();
			msElapsed = (msElapsed*1000f % (float)ms)/1000f;
		}
	}
	
	static TimeKeeper singleton;

	public static int beat = 0;
	static int beatsNumerator = 4;
	static int beatsDenominator = 4;
	public static int beatsPerMinute = 60;
	public static int upBeatVolume = 80;
	public static int downBeatVolume = 60;
	public static int ms = 1000;

	public static event TimeKeeperBeatDelegate OnBeat;
	public static event TimeKeeperBeatDelegate OnStart;
	public static event TimeKeeperBeatDelegate OnStop;
	
	public static event TimeKeeperBeatDelegate OnChange;
	
	public static int BeatsPerMinuteToMS(int beatsPerMinute){
		return Mathf.RoundToInt(60000/beatsPerMinute);	
	}
	
	public static int MSToBeatsPerMinute(int ms){
		return Mathf.RoundToInt(60000/ms);	
	}
	
	public static float GetTimeInterval(){
		return (float)ms/1000f;	
	}
	
	public static void SetBeats(int aBeatsNumerator){
		beatsNumerator = aBeatsNumerator;
		if(OnChange != null) OnChange(beat, beatsNumerator, beatsDenominator);
	}
	
	public static bool IsRunning(){
		return singleton != null;	
	}
	
	public static void SetBeatsPerMinute(int aBeatsPerMinute){
		beatsPerMinute = aBeatsPerMinute;
		ms = BeatsPerMinuteToMS(beatsPerMinute);
		if(OnChange != null) OnChange(beat, beatsNumerator, beatsDenominator);
	}
	
	public static void Start(int aBeatsNumerator, int aBeatsDenominator, int aBeatsPerMinute){
		Stop();
		
		if(!singleton) {
			singleton = new GameObject("TimeKeeper").AddComponent<TimeKeeper>();	
		}
			
		beat = 0;
		beatsNumerator = aBeatsNumerator;
		beatsDenominator = aBeatsDenominator;
		beatsPerMinute = aBeatsPerMinute;
		ms = BeatsPerMinuteToMS(beatsPerMinute);
		Debug.Log(ms);
		
		if(OnStart != null) OnStart(beat, beatsNumerator, beatsDenominator);
	}
	
	public static void Stop(){
		if(singleton) {
			Destroy(singleton.gameObject);
			singleton = null;
		}
		if(OnStop != null) OnStop(beat, beatsNumerator, beatsDenominator);
	}
	
	static void OnInternalTimer(){
		beat++; if(beat > beatsNumerator) beat = 1;
		if(OnBeat != null) OnBeat(beat, beatsNumerator, beatsDenominator);
	}
	
	public static void BeatEvent(int aBeat, int aBeatsNumerator, int aBeatsDenominator){
		if(OnBeat != null) OnBeat(aBeat, aBeatsNumerator, aBeatsDenominator);
	}
	
	public static void PlayBeat(int aBeat){
		MidiOut.fireMidiOutEvents = false;
		if(aBeat == 1) MidiOut.NoteOn((int)PercussionEnum.OpenHiHat, downBeatVolume, 9);
		else MidiOut.NoteOn((int)PercussionEnum.SideStick, upBeatVolume, 9);
		MidiOut.fireMidiOutEvents = true;		
	}
}

https://noteworthycomposer.com/composer/download.htm

https://kode54.net/bassmididrv/BASSMIDI_Driver_Installation_and_Configuration.htm

https://kode54.net/bassmididrv/#bassmididriverscreenshots

Idea: 12 rings rotating  on cosahedron axes.

sin/cos on x/y projection – axis aligned

 

 

https://www.attackmagazine.com/

https://www.attackmagazine.com/reviews/the-best/ten-of-the-best-new-synth-plugins-2014-2015/

http://coolsoft.altervista.org/it/virtualmidisynth

http://www.arachnosoft.com/main/soundfont.php?documentation&embedded=true#installation_software_vms

http://studio.foriero.com/

http://forum.unity3d.com/threads/released-midi-unified-5-x.393974/

fghnhf-24