public Task <IMidiInput> OpenInputAsync(string portId) { var details = Inputs.Cast <CoreMidiPortDetails> ().FirstOrDefault(i => i.Id == portId); if (details == null) { throw new InvalidOperationException($"Device specified as port {portId}) is not found."); } return(Task.FromResult((IMidiInput) new CoreMidiInput(details))); }
public void Update() { if (!Inputs.Any()) { return; } if ((bool)Inputs.Last().Value) { var httpRequest = (HttpWebRequest)WebRequest.CreateHttp(description.QueryUrl); httpRequest.Method = "POST"; httpRequest.Accept = "application/json"; httpRequest.ContentType = "application/json"; if (!string.IsNullOrWhiteSpace(description.FToken)) { httpRequest.Headers.Add("Authorization", "Bearer " + description.FToken); } var inputs = "{"; foreach (var input in Inputs.Cast <MyPin>().SkipLast(1)) { if (input.Type == typeof(IImage)) { inputs += "\"" + input.OriginalName + "\": \"data:image/jpeg;base64,"; var skImage = Imaging.FromImage((IImage)input.Value, false); var jpg = skImage.Encode(SKEncodedImageFormat.Jpeg, 100).ToArray(); var base64 = Convert.ToBase64String(jpg); inputs += base64 + "\", "; } else if (input.Type == typeof(Spread <float>)) //vector { var v = (Spread <float>)input.Value; inputs += "\"" + input.OriginalName + "\": [" + string.Join(", ", v) + "], "; } else { inputs += "\"" + input.OriginalName + "\": " + GetValue(input.Value.ToString()) + ", "; } } inputs = inputs.TrimEnd(new char[2] { ',', ' ' }) + "}"; var data = Encoding.UTF8.GetBytes(inputs); httpRequest.GetRequestStream().Write(data, 0, data.Length); var rstream = httpRequest.GetResponse().GetResponseStream(); string modelInfo = ""; using (var reader = new StreamReader(rstream, Encoding.UTF8, true, 0x1000, leaveOpen: true)) { modelInfo = reader.ReadToEnd(); } dynamic model = JsonConvert.DeserializeObject(modelInfo); foreach (var output in Outputs.Cast <MyPin>()) { if (output.Type == typeof(string)) { output.Value = model[output.OriginalName].ToString(); } else if (output.Type == typeof(int)) { output.Value = (int)model[output.OriginalName]; } else if (output.Type == typeof(float)) { output.Value = (float)model[output.OriginalName]; } else if (output.Type == typeof(IEnumerable <RectangleF>)) //array { var rects = new List <RectangleF>(); foreach (var rect in model[output.OriginalName]) { var x = (float)rect[0]; var y = (float)rect[1]; var width = (float)rect[2] - x; var height = (float)rect[3] - y; rects.Add(new RectangleF(x, y, width, height)); } output.Value = (IEnumerable <RectangleF>)rects; } else if (output.Type == typeof(IEnumerable <float>)) { var floats = new List <float>(); foreach (var f in model[output.OriginalName]) { floats.Add((float)f); } output.Value = (IEnumerable <float>)floats; } else if (output.Type == typeof(IEnumerable <string>)) { var texts = new List <string>(); foreach (var t in model[output.OriginalName]) { texts.Add((string)t); } output.Value = (IEnumerable <string>)texts; } else if (output.Type == typeof(IImage)) { string result = model[output.OriginalName].ToString(); var base64 = result.Split(',').LastOrDefault(); var jpg = Convert.FromBase64String(base64); var skImage = SKImage.FromEncodedData(jpg); output.Value = Imaging.ToImage(skImage); } else if (output.Type == typeof(IEnumerable <IEnumerable <Vector2> >)) { var landmarks = new List <List <Vector2> >(); foreach (var lm in model[output.OriginalName]) { var points = new List <Vector2>(); foreach (var p in lm) { points.Add(new Vector2((float)p[0], (float)p[1])); } landmarks.Add(points); } output.Value = landmarks; } } } }