示例#1
0
        protected void hitTest()
        {
            int    mw = _map.ChipData.ChipWidth;
            int    mh = _map.ChipData.ChipHeight;
            PointD pp = convertToViewCoord(_parent.Player.X, _parent.Player.Y);

            foreach (map.Chip chip in _map.EnumViewChipData())
            {
                if (chip.Hardness <= 0)
                {
                    continue;
                }

                if (_parent.Player.Hit(chip, pp, mw, mh))
                {
                    double     plog  = _minFreqLog + (_maxFreqLog - _minFreqLog) * (Constants.StageViewHeight - _parent.Player.Y) / (double)Constants.StageViewHeight;
                    double     pitch = Math.Pow(Math.E, plog);
                    ToneResult tone  = ToneAnalyzer.Analyze(pitch, 1.0);
                    ResourceManager.SoundExplosion[tone.ToneIdx.ToString("D2")].Play();

                    _parent.Player.Y   = _map.GetDefaultY(pp.X);
                    _parent.Player.Rad = _parent.Player.MinRadius;
                    break;
                }
            }
        }
        public static UtteranceAnalyses ToneAnalyzerCustomer(AppSettings appSettings, ToneAnalyzerRequest requestBody)
        {
            string  methodName = "ToneAnalyzer";
            dynamic result     = new ExpandoObject();

            try
            {
                ToneAnalyzer     settings      = appSettings.WatsonServices.ToneAnalyzer;
                IamAuthenticator authenticator = new IamAuthenticator(apikey: $"{requestBody.Apikey}");
                IBM.Watson.ToneAnalyzer.v3.ToneAnalyzerService toneAnalyzer = new IBM.Watson.ToneAnalyzer.v3.ToneAnalyzerService($"{settings.Version}", authenticator);
                toneAnalyzer.SetServiceUrl($"{requestBody.Endpoint}");

                List <Utterance> utterances = new List <Utterance>();
                requestBody.Utterances.ForEach(u =>
                {
                    utterances.Add(new Utterance()
                    {
                        User = u["user"].ToString(),
                        Text = u["text"].ToString()
                    });
                });
                result = toneAnalyzer.ToneChat(
                    utterances: utterances,
                    contentLanguage: requestBody.ContentLanguage != null ? requestBody.ContentLanguage : "en",
                    acceptLanguage: requestBody.AcceptLanguage
                    ).Result;
                return(result);
            }
            catch (Exception e)
            {
                Log.Write(appSettings, LogEnum.ERROR.ToString(), label, className, methodName, $"ERROR: {JsonConvert.SerializeObject(requestBody)}");
                Log.Write(appSettings, LogEnum.ERROR.ToString(), label, className, methodName, $"ERROR: {e.Source + Environment.NewLine + e.Message + Environment.NewLine + e.StackTrace}");
                throw e;
            }
        }
示例#3
0
    void Start()
    {
        LogSystem.InstallDefaultReactors();

        //  Create credential and instantiate service
        Credentials credentials_STT = new Credentials(_username_STT, _password_STT, _url_STT);

        _speechToText = new SpeechToText(credentials_STT);
        Active        = true;

        StartRecording();


        // TONE ZONE
        Credentials credentials_TONE = new Credentials(_username_TONE, _password_TONE, _url_TONE);

        _toneAnalyzer             = new ToneAnalyzer(credentials_TONE);
        _toneAnalyzer.VersionDate = _toneAnalyzerVersionDate;

        bar1JoyRenderer.material     = yellow_material;
        bar2SadnessRenderer.material = blue_material;
        bar3FearRenderer.material    = purple_material;
        bar4DisgustRenderer.material = green_material;
        bar5AngerRenderer.material   = red_material;

        emotion_threshold = 0.75f;          // for loose demo - above 75% seems to work well - may vary by signal

        //This is a "on first run" test
        //Runnable.Run(Examples()); // example on pump prime
    }
    private IEnumerator CreateService()
    {
        if (string.IsNullOrEmpty(_iamApikey))
        {
            throw new WatsonException("Plesae provide IAM ApiKey for the service.");
        }

        //  Create credential and instantiate service
        Credentials credentials = null;

        //  Authenticate using iamApikey
        TokenOptions tokenOptions = new TokenOptions()
        {
            IamApiKey = _iamApikey
        };

        credentials = new Credentials(tokenOptions, _serviceUrl);

        //  Wait for tokendata
        while (!credentials.HasIamTokenData())
        {
            yield return(null);
        }

        _service             = new ToneAnalyzer(credentials);
        _service.VersionDate = _versionDate;

        Runnable.Run(Examples());
    }
        public void SingleToneAnalysisTest()
        {
            const int    FFT_SIZE = 256;
            const double SNR      = 40;

            double noiseLevel = Math.Pow(10, SNR / (-20.0));
            Random rnd        = new Random();
            double amplitude  = 1.0;
            double freq       = (rnd.NextDouble() * (FFT_SIZE / 2.0 - 4.0) + 2.0) / FFT_SIZE / 4.0;
            //double freq = 8.5 / FFT_SIZE;
            double phase = rnd.NextDouble() * 2.0 * Math.PI;

            //double phase = 0.375 * 2.0 * Math.PI;

            double[] noise = Generate.Normal(FFT_SIZE, 0.0, noiseLevel);
            double[] wave  = Generate.Sinusoidal(FFT_SIZE, 1.0, freq, amplitude, 0.0, phase);

            for (int i = 0; i < FFT_SIZE; i++)
            {
                wave[i] += noise[i];
            }


            ToneInfo toneInfo = ToneAnalyzer.SingleToneAnalysis(wave);

            Assert.IsTrue(Math.Abs(toneInfo.Frequency - freq) < 1.0E-3, "Frequency not equal.");
            double phaseErr = (toneInfo.Phase - phase) / (2.0 * Math.PI);

            phaseErr -= Math.Round(phaseErr);
            Assert.IsTrue(Math.Abs(phaseErr) < 1.0E-3, "Phase not equal.");
            Assert.IsTrue(Math.Abs(toneInfo.Amplitude - amplitude) < 1.0E-2, "Amplitude not equal.");
        }
        public static ToneAnalysis ToneAnalyzer(AppSettings appSettings, ToneAnalyzerRequest requestBody)
        {
            string  methodName = "ToneAnalyzer";
            dynamic result     = new ExpandoObject();

            try
            {
                ToneAnalyzer     settings      = appSettings.WatsonServices.ToneAnalyzer;
                IamAuthenticator authenticator = new IamAuthenticator(apikey: $"{requestBody.Apikey}");
                IBM.Watson.ToneAnalyzer.v3.ToneAnalyzerService toneAnalyzer = new IBM.Watson.ToneAnalyzer.v3.ToneAnalyzerService($"{settings.Version}", authenticator);
                toneAnalyzer.SetServiceUrl($"{requestBody.Endpoint}");
                ToneInput toneInput = new ToneInput()
                {
                    Text = requestBody.Text
                };
                result = toneAnalyzer.Tone(
                    toneInput: new MemoryStream(Encoding.UTF8.GetBytes(requestBody.Text)),
                    sentences: requestBody.Sentences,
                    contentLanguage: requestBody.ContentLanguage != null ? requestBody.ContentLanguage : "en",
                    acceptLanguage: requestBody.AcceptLanguage
                    ).Result;
                return(result);
            }
            catch (Exception e)
            {
                Log.Write(appSettings, LogEnum.ERROR.ToString(), label, className, methodName, $"ERROR: {JsonConvert.SerializeObject(requestBody)}");
                Log.Write(appSettings, LogEnum.ERROR.ToString(), label, className, methodName, $"ERROR: {e.Source + Environment.NewLine + e.Message + Environment.NewLine + e.StackTrace}");
                throw e;
            }
        }
        public DetailedResponse <ToneAnalysis> AnalyzeTone(ContentMessage message)
        {
            var result = ToneAnalyzer.Tone(new ToneInput()
            {
                Text = message.ContentText
            }, sentences: true);

            return(result);
        }
示例#8
0
    void Start()
    {
        LogSystem.InstallDefaultReactors();

        //  Create credential and instantiate service
        Credentials credentials = new Credentials(_username, _password, _url);

        _toneAnalyzer             = new ToneAnalyzer(credentials);
        _toneAnalyzer.VersionDate = _toneAnalyzerVersionDate;

        Runnable.Run(Examples());
    }
示例#9
0
    //------------------
    /// <summary>
    /// Start() method connects to the two Watson Serices and starts the recording
    /// real work is then done by a Runnable function
    /// </summary>
    void Start()
    {
        // instantiate service
        _speechToText = new SpeechToText(credentials_STT);
        Active        = true;

        StartRecording();

        // TONE ZONE
        _toneAnalyzer             = new ToneAnalyzer(credentials_TONE);
        _toneAnalyzer.VersionDate = _toneAnalyzerVersionDate;
    }
示例#10
0
        private double pitchFromNote(int noteNum)
        {
            if (_notePitches.ContainsKey(noteNum))
            {
                return(_notePitches[noteNum]);
            }

            int    toneIdx = noteNum % 12;
            int    octave  = (int)((noteNum - toneIdx) / 12.0) - 1;
            double pitch   = ToneAnalyzer.PitchFromTone(toneIdx, octave);

            _notePitches.Add(noteNum, pitch);
            return(pitch);
        }
        public DetailedResponse <UtteranceAnalyses> AnalyzeToneChat(SmsThread thread)
        {
            var utterances = thread.SmsMessages.OrderBy(y => y.Created)
                             .Select(x => new Utterance()
            {
                User = x.User,
                Text = x.MessageText
            }).ToList();

            var result = ToneAnalyzer.ToneChat(
                utterances: utterances
                );

            return(result);
        }
示例#12
0
    void Start()
    {
        // Watson logging, interface to Speech to Text and Tone Analyzer Servises
        LogSystem.InstallDefaultReactors();

        //  Create credential and instantiate service
        Credentials credentials_STT = new Credentials(_username_STT, _password_STT, _url_STT);

        _speechToText = new SpeechToText(credentials_STT);
        Active        = true;

        StartRecording();

        // TONE ZONE
        Credentials credentials_TONE = new Credentials(_username_TONE, _password_TONE, _url_TONE);

        _toneAnalyzer             = new ToneAnalyzer(credentials_TONE);
        _toneAnalyzer.VersionDate = _toneAnalyzerVersionDate;
    }
    void Start()
    {
        LogSystem.InstallDefaultReactors();

        //  Create credential and instantiate service
        Credentials credentials_STT  = new Credentials(_username_STT, _password_STT, _url_STT);
        Credentials credentials_TTS  = new Credentials(_username_TTS, _password_TTS, _url_TTS);
        Credentials credentials_TONE = new Credentials(_username_TONE, _password_TONE, _url_TONE);


        _speechToText = new SpeechToText(credentials_STT);
        _textToSpeech = new TextToSpeech(credentials_TTS);
        _toneAnalyzer = new ToneAnalyzer(credentials_TONE);


        /// TONE
        _toneAnalyzer.VersionDate = _toneAnalyzerVersionDate;



        // Over the shoulder emotional spheres
        sphere_emo_joyRenderer.material     = yellow_material;
        sphere_emo_angerRenderer.material   = red_material;
        sphere_emo_fearRenderer.material    = purple_material;
        sphere_emo_disgustRenderer.material = green_material;
        sphere_emo_sadnessRenderer.material = blue_material;

        sphere_emo_joyRenderer.transform.localScale     = new Vector3(.075F, .075F, .075F);
        sphere_emo_angerRenderer.transform.localScale   = new Vector3(.075F, .075F, .075F);
        sphere_emo_fearRenderer.transform.localScale    = new Vector3(.075F, .075F, .075F);
        sphere_emo_disgustRenderer.transform.localScale = new Vector3(.075F, .075F, .075F);
        sphere_emo_sadnessRenderer.transform.localScale = new Vector3(.075F, .075F, .075F);

        emotion_threshold = 0.75f;         // for loose demo - above 75% seems to work well - may vary by signal

        Active = true;
        StartRecording();

        Runnable.Run(Examples());
    }
示例#14
0
    void Start()
    {
        LogSystem.InstallDefaultReactors();

        //  Create credential and instantiate service
        Credentials credentials_STT = new Credentials(_username_STT, _password_STT, _url_STT);

        _speechToText = new SpeechToText(credentials_STT);
        Active        = true;

        StartRecording();


        // TONE ZONE
        Credentials credentials_TONE = new Credentials(_username_TONE, _password_TONE, _url_TONE);

        _toneAnalyzer             = new ToneAnalyzer(credentials_TONE);
        _toneAnalyzer.VersionDate = _toneAnalyzerVersionDate;

        //This is a "on first run" test
        //Runnable.Run(Examples()); // example on pump prime
    }
示例#15
0
    private IEnumerator CreateService()
    {
        //  Create credential and instantiate service
        Credentials credentials = null;

        if (!string.IsNullOrEmpty(_username) && !string.IsNullOrEmpty(_password))
        {
            //  Authenticate using username and password
            credentials = new Credentials(_username, _password, _serviceUrl);
        }
        else if (!string.IsNullOrEmpty(_iamApikey))
        {
            //  Authenticate using iamApikey
            TokenOptions tokenOptions = new TokenOptions()
            {
                IamApiKey = _iamApikey,
                IamUrl    = _iamUrl
            };

            credentials = new Credentials(tokenOptions, _serviceUrl);

            //  Wait for tokendata
            while (!credentials.HasIamTokenData())
            {
                yield return(null);
            }
        }
        else
        {
            throw new WatsonException("Please provide either username and password or IAM apikey to authenticate the service.");
        }

        _service             = new ToneAnalyzer(credentials);
        _service.VersionDate = _versionDate;

        Runnable.Run(Examples());
    }
    void Start()
    {
        LogSystem.InstallDefaultReactors();

        //  Create credential and instantiate service
        Credentials credentials_STT = new Credentials(_username_STT, _password_STT, _url_STT);

        _speechToText = new SpeechToText(credentials_STT);
        Active        = true;

        StartRecording();

        // TONE ZONE
        Credentials credentials_TONE = new Credentials(_username_TONE, _password_TONE, _url_TONE);

        _toneAnalyzer             = new ToneAnalyzer(credentials_TONE);
        _toneAnalyzer.VersionDate = _toneAnalyzerVersionDate;

        bar1JoyRenderer.material     = yellow_material;
        bar2SadnessRenderer.material = blue_material;
        bar3FearRenderer.material    = purple_material;
        bar4DisgustRenderer.material = green_material;
        bar5AngerRenderer.material   = red_material;
    }
示例#17
0
        protected void createKeyRects()
        {
            _whiteKeys = new List <KeyValuePair <Rectangle, string> >();
            _blackKeys = new List <KeyValuePair <Rectangle, string> >();

            ToneResult maxTone = ToneAnalyzer.Analyze(_maxFreq, 1.0);
            ToneResult minTone = ToneAnalyzer.Analyze(_minFreq, 1.0);

            double nearMaxFreq = Math.Log(maxTone.Pitch - maxTone.PitchDiff);
            double nearMinFreq = Math.Log(minTone.Pitch - minTone.PitchDiff);

            double maxY = (nearMaxFreq - _minFreqLog) / (_maxFreqLog - _minFreqLog);
            double minY = (nearMinFreq - _minFreqLog) / (_maxFreqLog - _minFreqLog);

            maxY = _view.Height - maxY * _view.Height;
            minY = _view.Height - minY * _view.Height;

            int num = 12 * maxTone.Octave + maxTone.ToneIdx -
                      (12 * minTone.Octave + minTone.ToneIdx);
            double dy = (minY - maxY) / (double)num;

            double y       = minY;
            int    toneIdx = minTone.ToneIdx;
            int    oct     = minTone.Octave;

            num += 3;
            toneIdx--;
            if (toneIdx < 0)
            {
                toneIdx += 12;
                oct--;
            }
            y += dy;

            int bw = (int)(_keyRect.Width / 2.0);

            int[] blackIdx = { 1, 3, 6, 8, 10 };
            for (int i = 0; i < num; i++)
            {
                string str = string.Format("{0}{1}", ToneAnalyzer.ToneNames[toneIdx], oct);

                if (Array.IndexOf(blackIdx, toneIdx) < 0)
                {
                    // 白鍵
                    int nh, ny;
                    adjustWhiteKey(toneIdx, y, dy, out ny, out nh);
                    if (_whiteKeys.Count > 0)
                    {
                        Rectangle prevR = _whiteKeys[_whiteKeys.Count - 1].Key;
                        nh = prevR.Top - ny;
                    }
                    _whiteKeys.Add(new KeyValuePair <Rectangle, string>(
                                       new Rectangle(0, ny, _keyRect.Width - 1, nh),
                                       str));
                }
                else
                {
                    // 黒鍵
                    _blackKeys.Add(new KeyValuePair <Rectangle, string>(
                                       new Rectangle(0, (int)(y - dy / 2.0), bw, (int)dy),
                                       str));
                }

                y -= dy;
                toneIdx++;
                if (toneIdx >= 12)
                {
                    toneIdx = 0; oct++;
                }
            }
        }
        public override IEnumerator RunTest()
        {
            LogSystem.InstallDefaultReactors();

            VcapCredentials vcapCredentials = new VcapCredentials();
            fsData          data            = null;

            string result = null;

            var vcapUrl      = Environment.GetEnvironmentVariable("VCAP_URL");
            var vcapUsername = Environment.GetEnvironmentVariable("VCAP_USERNAME");
            var vcapPassword = Environment.GetEnvironmentVariable("VCAP_PASSWORD");

            using (SimpleGet simpleGet = new SimpleGet(vcapUrl, vcapUsername, vcapPassword))
            {
                while (!simpleGet.IsComplete)
                {
                    yield return(null);
                }

                result = simpleGet.Result;
            }

            //  Add in a parent object because Unity does not like to deserialize root level collection types.
            result = Utility.AddTopLevelObjectToJson(result, "VCAP_SERVICES");

            //  Convert json to fsResult
            fsResult r = fsJsonParser.Parse(result, out data);

            if (!r.Succeeded)
            {
                throw new WatsonException(r.FormattedMessages);
            }

            //  Convert fsResult to VcapCredentials
            object obj = vcapCredentials;

            r = _serializer.TryDeserialize(data, obj.GetType(), ref obj);
            if (!r.Succeeded)
            {
                throw new WatsonException(r.FormattedMessages);
            }

            //  Set credentials from imported credntials
            Credential credential = vcapCredentials.VCAP_SERVICES["tone_analyzer"];

            _username = credential.Username.ToString();
            _password = credential.Password.ToString();
            _url      = credential.Url.ToString();

            //  Create credential and instantiate service
            Credentials credentials = new Credentials(_username, _password, _url);

            //  Or authenticate using token
            //Credentials credentials = new Credentials(_url)
            //{
            //    AuthenticationToken = _token
            //};

            _toneAnalyzer             = new ToneAnalyzer(credentials);
            _toneAnalyzer.VersionDate = _toneAnalyzerVersionDate;

            //  Analyze tone
            if (!_toneAnalyzer.GetToneAnalyze(OnGetToneAnalyze, OnFail, _stringToTestTone))
            {
                Log.Debug("ExampleToneAnalyzer.GetToneAnalyze()", "Failed to analyze!");
            }

            while (!_analyzeToneTested)
            {
                yield return(null);
            }

            Log.Debug("ExampleToneAnalyzer.RunTest()", "Tone analyzer examples complete.");

            yield break;
        }
示例#19
0
        public override void Load(string filePath)
        {
            _curTime = 0;
            _points.Clear();
            load(filePath);

            foreach (Note n in _notes)
            {
                if (n.ToneIdx >= 0)
                {
                    double pLen = n.Length;
                    if (n.LenRatio >= 0 && n.LenRatio < 8)
                    {
                        pLen *= n.LenRatio / 8.0;
                    }

                    MusicNote onNote = new MusicNote();
                    onNote.Pitch     = ToneAnalyzer.PitchFromTone(n.ToneIdx, n.Octave);
                    onNote.Start     = true;
                    onNote.TimeInSec = _curTime;
                    _points.Add(onNote);

                    MusicNote offNote = new MusicNote();
                    offNote.Pitch     = onNote.Pitch;
                    offNote.Start     = false;
                    offNote.TimeInSec = _curTime + pLen;
                    _points.Add(offNote);

                    if (_maxP < onNote.Pitch)
                    {
                        _maxP = onNote.Pitch;
                    }
                    if (_minP > onNote.Pitch)
                    {
                        _minP = onNote.Pitch;
                    }
                }
                _curTime += n.Length;
            }

            Length = _curTime;

            ToneResult minTone = ToneAnalyzer.Analyze(_minP, 1.0);
            ToneResult maxTone = ToneAnalyzer.Analyze(_maxP, 1.0);

            maxTone.ToneIdx++;
            if (maxTone.ToneIdx >= 12)
            {
                maxTone.ToneIdx -= 12; maxTone.Octave++;
            }
            minTone.ToneIdx--;
            if (minTone.ToneIdx <= 0)
            {
                minTone.ToneIdx += 12; minTone.Octave--;
            }

            MinPitch = ToneAnalyzer.PitchFromTone(minTone.ToneIdx, minTone.Octave);
            MaxPitch = ToneAnalyzer.PitchFromTone(maxTone.ToneIdx, maxTone.Octave);

            _points.Sort((MusicNote n1, MusicNote n2) =>
            {
                if (n1.TimeInSec != n2.TimeInSec)
                {
                    return(n1.TimeInSec.CompareTo(n2.TimeInSec));
                }
                if (n1.Start)
                {
                    if (n2.Start)
                    {
                        return(0);
                    }
                    return(1);
                }
                else
                {
                    if (n2.Start)
                    {
                        return(-1);
                    }
                    return(0);
                }
            });
        }
示例#20
0
        public override void Load(string filePath)
        {
            List <List <TrackEvent> > trackEvents = new List <List <TrackEvent> >();
            BinaryReader reader = new BinaryReader(new FileStream(filePath, FileMode.Open), Encoding.UTF8);

            _header = readHeader(reader);
            if (!_header.DeltaTimeInPPQN)
            {
                throw new SMFException("対応していないMIDIファイル:TimeInSec Division");
            }
            if (_header.FormatType == 2)
            {
                throw new SMFException("対応していないMIDIファイル:Format");
            }

            for (int i = 0; i < _header.TrackNum; i++)
            {
                List <TrackEvent> evs = new List <TrackEvent>();
                readTrack(reader, ref evs);
                trackEvents.Add(evs);
            }

            double maxPitch = double.MinValue;
            double minPitch = double.MaxValue;

            long   prevTick = 0;
            double time     = 0;
            int    tempo    = 500000;
            double ppqnInv  = 1 / (double)_header.DeltaTime;
            Dictionary <int, Dictionary <int, SMFNote> > channels = new Dictionary <int, Dictionary <int, SMFNote> >();

            _points = new List <MusicNote>();
            while (true)
            {
                if (trackEvents.Count == 0)
                {
                    break;
                }
                if (trackEvents.TrueForAll((lst) => { return(lst.Count == 0); }))
                {
                    break;
                }

                int idx = -1; long minTick = long.MaxValue;
                for (int i = 0; i < trackEvents.Count; i++)
                {
                    if (trackEvents[i].Count == 0)
                    {
                        continue;
                    }
                    long tick = trackEvents[i][0].AbsoluteTick;
                    if (tick < minTick)
                    {
                        idx = i; minTick = tick;
                    }
                }

                if (idx < 0)
                {
                    break;
                }

                TrackEvent fstev = trackEvents[idx][0];
                trackEvents[idx].RemoveAt(0);
                time += (fstev.AbsoluteTick - prevTick) * tempo * ppqnInv / 1000000.0;

                switch (fstev.EventType)
                {
                case EventType.Tempo:
                    tempo = (int)fstev.Params[0];
                    break;

                case EventType.NoteOn:
                {
                    int channel = (int)fstev.Params[0];
                    int noteNum = (int)fstev.Params[1];

                    Dictionary <int, SMFNote> noteNums;
                    if (channels.ContainsKey(channel))
                    {
                        noteNums = channels[channel];
                    }
                    else
                    {
                        noteNums = new Dictionary <int, SMFNote>();
                        channels.Add(channel, noteNums);
                    }

                    SMFNote note;
                    if (noteNums.ContainsKey(noteNum))
                    {
                        note = noteNums[noteNum];

                        MusicNote n = new MusicNote();
                        n.TimeInSec = time;
                        n.Pitch     = note.Pitch;
                        n.Start     = false;
                        _points.Add(n);
                    }

                    note = new SMFNote(true, pitchFromNote(noteNum));
                    if (noteNums.ContainsKey(noteNum))
                    {
                        noteNums[noteNum] = note;
                    }
                    else
                    {
                        noteNums.Add(noteNum, note);
                    }

                    MusicNote nn = new MusicNote();
                    nn.TimeInSec = time;
                    nn.Pitch     = note.Pitch;
                    nn.Start     = true;
                    _points.Add(nn);

                    if (note.Pitch < minPitch)
                    {
                        minPitch = note.Pitch;
                    }
                    if (note.Pitch > maxPitch)
                    {
                        maxPitch = note.Pitch;
                    }
                }
                break;

                case EventType.NoteOff:
                {
                    int channel = (int)fstev.Params[0];
                    int noteNum = (int)fstev.Params[1];

                    Dictionary <int, SMFNote> noteNums;
                    if (channels.ContainsKey(channel))
                    {
                        noteNums = channels[channel];
                    }
                    else
                    {
                        noteNums = new Dictionary <int, SMFNote>();
                        channels.Add(channel, noteNums);
                    }

                    SMFNote note;
                    if (noteNums.ContainsKey(noteNum))
                    {
                        note = noteNums[noteNum];

                        MusicNote n = new MusicNote();
                        n.TimeInSec = time;
                        n.Pitch     = note.Pitch;
                        n.Start     = false;
                        _points.Add(n);

                        if (note.Pitch < minPitch)
                        {
                            minPitch = note.Pitch;
                        }
                        if (note.Pitch > maxPitch)
                        {
                            maxPitch = note.Pitch;
                        }

                        noteNums.Remove(noteNum);
                    }
                }
                break;
                }

                prevTick = fstev.AbsoluteTick;
            }

            _length = time;

            ToneResult minTone = ToneAnalyzer.Analyze(minPitch, 1.0);
            ToneResult maxTone = ToneAnalyzer.Analyze(maxPitch, 1.0);

            maxTone.ToneIdx++;
            if (maxTone.ToneIdx >= 12)
            {
                maxTone.ToneIdx -= 12; maxTone.Octave++;
            }
            minTone.ToneIdx--;
            if (minTone.ToneIdx <= 0)
            {
                minTone.ToneIdx += 12; minTone.Octave--;
            }

            MinPitch = ToneAnalyzer.PitchFromTone(minTone.ToneIdx, minTone.Octave);
            MaxPitch = ToneAnalyzer.PitchFromTone(maxTone.ToneIdx, maxTone.Octave);

            _points.Sort((MusicNote n1, MusicNote n2) =>
            {
                if (n1.TimeInSec != n2.TimeInSec)
                {
                    return(n1.TimeInSec.CompareTo(n2.TimeInSec));
                }
                if (n1.Start)
                {
                    if (n2.Start)
                    {
                        return(0);
                    }
                    return(1);
                }
                else
                {
                    if (n2.Start)
                    {
                        return(-1);
                    }
                    return(0);
                }
            });
        }
示例#21
0
 //------------------
 /// <summary>
 /// Start() method connects to the ToneAnalysis Watson Serice
 /// </summary>
 void Start()
 {
     _toneAnalyzer             = new ToneAnalyzer(credentials_TONE);
     _toneAnalyzer.VersionDate = _toneAnalyzerVersionDate;
 }
示例#22
0
        public override IEnumerator RunTest()
        {
            LogSystem.InstallDefaultReactors();

            try
            {
                VcapCredentials vcapCredentials = new VcapCredentials();
                fsData          data            = null;

                //  Get credentials from a credential file defined in environmental variables in the VCAP_SERVICES format.
                //  See https://www.ibm.com/watson/developercloud/doc/common/getting-started-variables.html.
                var environmentalVariable = Environment.GetEnvironmentVariable("VCAP_SERVICES");
                var fileContent           = File.ReadAllText(environmentalVariable);

                //  Add in a parent object because Unity does not like to deserialize root level collection types.
                fileContent = Utility.AddTopLevelObjectToJson(fileContent, "VCAP_SERVICES");

                //  Convert json to fsResult
                fsResult r = fsJsonParser.Parse(fileContent, out data);
                if (!r.Succeeded)
                {
                    throw new WatsonException(r.FormattedMessages);
                }

                //  Convert fsResult to VcapCredentials
                object obj = vcapCredentials;
                r = _serializer.TryDeserialize(data, obj.GetType(), ref obj);
                if (!r.Succeeded)
                {
                    throw new WatsonException(r.FormattedMessages);
                }

                //  Set credentials from imported credntials
                Credential credential = vcapCredentials.VCAP_SERVICES["tone_analyzer"][TestCredentialIndex].Credentials;
                _username = credential.Username.ToString();
                _password = credential.Password.ToString();
                _url      = credential.Url.ToString();
            }
            catch
            {
                Log.Debug("TestToneAnalyzer", "Failed to get credentials from VCAP_SERVICES file. Please configure credentials to run this test. For more information, see: https://github.com/watson-developer-cloud/unity-sdk/#authentication");
            }
            //  Create credential and instantiate service
            Credentials credentials = new Credentials(_username, _password, _url);

            //  Or authenticate using token
            //Credentials credentials = new Credentials(_url)
            //{
            //    AuthenticationToken = _token
            //};

            _toneAnalyzer             = new ToneAnalyzer(credentials);
            _toneAnalyzer.VersionDate = _toneAnalyzerVersionDate;

            //  Analyze tone
            if (!_toneAnalyzer.GetToneAnalyze(OnGetToneAnalyze, _stringToTestTone))
            {
                Log.Debug("ExampleToneAnalyzer", "Failed to analyze!");
            }

            while (!_analyzeToneTested)
            {
                yield return(null);
            }

            Log.Debug("ExampleToneAnalyzer", "Tone analyzer examples complete.");

            yield break;
        }
        public override IEnumerator RunTest()
        {
            LogSystem.InstallDefaultReactors();

            VcapCredentials vcapCredentials = new VcapCredentials();
            fsData          data            = null;

            string result = null;

            string credentialsFilepath = "../sdk-credentials/credentials.json";

            //  Load credentials file if it exists. If it doesn't exist, don't run the tests.
            if (File.Exists(credentialsFilepath))
            {
                result = File.ReadAllText(credentialsFilepath);
            }
            else
            {
                yield break;
            }

            //  Add in a parent object because Unity does not like to deserialize root level collection types.
            result = Utility.AddTopLevelObjectToJson(result, "VCAP_SERVICES");

            //  Convert json to fsResult
            fsResult r = fsJsonParser.Parse(result, out data);

            if (!r.Succeeded)
            {
                throw new WatsonException(r.FormattedMessages);
            }

            //  Convert fsResult to VcapCredentials
            object obj = vcapCredentials;

            r = _serializer.TryDeserialize(data, obj.GetType(), ref obj);
            if (!r.Succeeded)
            {
                throw new WatsonException(r.FormattedMessages);
            }

            //  Set credentials from imported credntials
            Credential credential = vcapCredentials.GetCredentialByname("tone-analyzer-sdk")[0].Credentials;

            //  Create credential and instantiate service
            TokenOptions tokenOptions = new TokenOptions()
            {
                IamApiKey = credential.IamApikey,
            };

            //  Create credential and instantiate service
            Credentials credentials = new Credentials(tokenOptions, credential.Url);

            //  Wait for tokendata
            while (!credentials.HasIamTokenData())
            {
                yield return(null);
            }

            _toneAnalyzer             = new ToneAnalyzer(credentials);
            _toneAnalyzer.VersionDate = _toneAnalyzerVersionDate;

            //  Analyze tone
            if (!_toneAnalyzer.GetToneAnalyze(OnGetToneAnalyze, OnFail, _stringToTestTone))
            {
                Log.Debug("ExampleToneAnalyzer.GetToneAnalyze()", "Failed to analyze!");
            }

            while (!_analyzeToneTested)
            {
                yield return(null);
            }

            Log.Debug("ExampleToneAnalyzer.RunTest()", "Tone analyzer examples complete.");

            yield break;
        }