コード例 #1
0
ファイル: Cancion.cs プロジェクト: josemontesp/AwesomeDrum
 public Cancion(string ruta)
 {
     XmlReader reader = XmlReader.Create(ruta);
     List<Nota> notas = new List<Nota>();
     while (reader.Read())
     {
         if (reader.HasAttributes && reader.Name == "bar")
         {
             Compas comp = new Compas((reader.GetAttribute("loop")), (reader.GetAttribute("tempo")), (reader.GetAttribute("length")));
             compases.Add(comp);
         }
         if (reader.HasAttributes && reader.Name == "note")
         {
             Nota n = new Nota(reader.GetAttribute("i"), reader.GetAttribute("pos"), reader.GetAttribute("num"), reader.GetAttribute("type"));
             compases.Last().agregarNota(n);
         }
     }
     foreach (Compas c in compases)
     {
         duracion += c.duracion;
     }
 }
コード例 #2
0
ファイル: Simulador.cs プロジェクト: josemontesp/AwesomeDrum
        public Canales incluirNota(Canales main, Nota nota, int pos)
        {
            string ruta = nota.ruta;

            List<short> lDataList = new List<short>();
            List<short> rDataList = new List<short>();

            using (FileStream fs = new FileStream(ruta, FileMode.Open, FileAccess.Read))
            using (BinaryReader br = new BinaryReader(fs))
            {
                br.ReadBytes(4);br.ReadUInt32();br.ReadBytes(4);br.ReadBytes(4); br.ReadUInt32();br.ReadUInt16(); br.ReadUInt16(); br.ReadUInt32(); br.ReadUInt32();
                var blockSize = br.ReadUInt16();
                br.ReadUInt16(); br.ReadBytes(4);
                var dataSize = br.ReadUInt32();

                for (int i = 0; i < dataSize / blockSize; i++)
                {
                    lDataList.Add((short)br.ReadUInt16());
                    rDataList.Add((short)br.ReadUInt16());
                }
                br.Close();
                fs.Close();
            }
            Canales channels = new Canales(lDataList, rDataList);

            for (int i = 0; i < channels.left.Count(); i++)
            {
                main.left[pos + i] += channels.left[i];
            }
            for (int i = 0; i < channels.right.Count(); i++)
            {
                main.right[pos + i] += channels.right[i];
            }

            return main;
        }
コード例 #3
0
ファイル: Compas.cs プロジェクト: josemontesp/AwesomeDrum
 public void agregarNota(Nota n)
 {
     this.notas.Add(n);
 }
コード例 #4
0
ファイル: Partitura.cs プロジェクト: josemontesp/AwesomeDrum
        public void crearXML(string ruta, bool silencio = false)
        {
            Cancion song = new Cancion();
            for (int i = 0; i < compases; i++)
            {
                Compas c = new Compas("1", this.tempo.ToString(), this.tiempos.ToString());
                for (int j = 0; j < 16*this.tiempos; j++)
                {
                    if (TL[i * 16 * tiempos + j] != 0)
                    {
                        Nota n = new Nota("100", (j / 16.0).ToString(), TL[i * 16 * tiempos + j].ToString(), "tom_low");
                        c.agregarNota(n);
                    }
                    if (TH[i * 16 * tiempos + j] != 0)
                    {
                        Nota n = new Nota("100", (j / 16.0).ToString(), TH[i * 16 * tiempos + j].ToString(), "tom_high");
                        c.agregarNota(n);
                    }
                    if (TF[i * 16 * tiempos + j] != 0)
                    {
                        Nota n = new Nota("100", (j / 16.0).ToString(), TF[i * 16 * tiempos + j].ToString(), "tom_floor");
                        c.agregarNota(n);
                    }
                    if (S[i * 16 * tiempos + j] != 0)
                    {
                        Nota n = new Nota("100", (j / 16.0).ToString(), S[i * 16 * tiempos + j].ToString(), "snare");
                        c.agregarNota(n);
                    }
                    if (R[i * 16 * tiempos + j] != 0)
                    {
                        Nota n = new Nota("100", (j / 16.0).ToString(), R[i * 16 * tiempos + j].ToString(), "ride");
                        c.agregarNota(n);
                    }
                    if (K[i * 16 * tiempos + j] != 0)
                    {
                        Nota n = new Nota("100", (j / 16.0).ToString(), K[i * 16 * tiempos + j].ToString(), "kick");
                        c.agregarNota(n);
                    }
                    if (HHO[i * 16 * tiempos + j] != 0)
                    {
                        Nota n = new Nota("100", (j / 16.0).ToString(), HHO[i * 16 * tiempos + j].ToString(), "hihat_open");
                        c.agregarNota(n);
                    }
                    if (HHC[i * 16 * tiempos + j] != 0)
                    {
                        Nota n = new Nota("100", (j / 16.0).ToString(), HHC[i * 16 * tiempos + j].ToString(), "hihat_closed");
                        c.agregarNota(n);
                    }
                    if (CL[i * 16 * tiempos + j] != 0)
                    {
                        Nota n = new Nota("100", (j / 16.0).ToString(), CL[i * 16 * tiempos + j].ToString(), "crash_low");
                        c.agregarNota(n);
                    }
                    if (CH[i * 16 * tiempos + j] != 0)
                    {
                        Nota n = new Nota("100", (j / 16.0).ToString(), CH[i * 16 * tiempos + j].ToString(), "crash_high");
                        c.agregarNota(n);
                    }
                    if (C[i * 16 * tiempos + j] != 0)
                    {
                        Nota n = new Nota("100", (j / 16.0).ToString(), C[i * 16 * tiempos + j].ToString(), "cowbell");
                        c.agregarNota(n);
                    }
                }
                song.compases.Add(c);
            }

            using (XmlWriter writer = XmlWriter.Create(ruta))
            {
                writer.WriteStartDocument();
                writer.WriteStartElement("barList");

                foreach (Compas c in song.compases)
                {
                    writer.WriteStartElement("bar");
                    writer.WriteAttributeString("loop", c.loop.ToString());
                    writer.WriteAttributeString("tempo", c.tempo.ToString());
                    writer.WriteAttributeString("length", c.length.ToString());
                        writer.WriteStartElement("notelist");
                        foreach (Nota n in c.notas)
                        {
                            writer.WriteStartElement("note");
                            writer.WriteAttributeString("i", n.i.ToString());
                            writer.WriteAttributeString("pos", n.pos.ToString());
                            writer.WriteAttributeString("num", n.num.ToString());
                            writer.WriteAttributeString("type", n.typeCompleto);
                            writer.WriteEndElement();
                        }

                        writer.WriteEndElement();

                    writer.WriteEndElement();
                }

                writer.WriteEndElement();
                writer.WriteEndDocument();
                writer.Close();
                if (!silencio)
                {
                    Console.WriteLine("XML creado correctamente!");
                    Console.WriteLine(ruta);
                    System.Threading.Thread.Sleep(1500);
                }

            }
        }