Ejemplo n.º 1
0
        public byte[] Merge(byte[][] tablicaWejsciowa)
        {
            try
            {
                files = tablicaWejsciowa;

                WaveIOFony wa_IN  = new WaveIOFony();
                WaveIOFony wa_out = new WaveIOFony();

                wa_out.DataLength = 0;
                wa_out.length     = 0;

                //Pobranie danych o "głowie"
                foreach (byte[] path in files)
                {
                    wa_IN.WaveHeaderIN(@path);
                    wa_out.DataLength += wa_IN.DataLength;
                    wa_out.length     += wa_IN.length;
                }

                //Rekonstrukcja nowej "głowy"
                wa_out.BitsPerSample = wa_IN.BitsPerSample;
                wa_out.channels      = wa_IN.channels;
                wa_out.samplerate    = wa_IN.samplerate;

                using (MemoryStream fs = new MemoryStream())
                {
                    BinaryWriter bw = new BinaryWriter(fs);
                    fs.Position = 0;
                    bw.Write(new char[4] {
                        'R', 'I', 'F', 'F'
                    });

                    bw.Write(wa_out.length);

                    bw.Write(new char[8] {
                        'W', 'A', 'V', 'E', 'f', 'm', 't', ' '
                    });

                    bw.Write((int)16);

                    bw.Write((short)1);
                    bw.Write(wa_out.channels);

                    bw.Write(wa_out.samplerate);

                    bw.Write((int)(wa_out.samplerate * ((wa_out.BitsPerSample * wa_out.channels) / 8)));

                    bw.Write((short)((wa_out.BitsPerSample * wa_out.channels) / 8));

                    bw.Write(wa_out.BitsPerSample);

                    bw.Write(new char[4] {
                        'd', 'a', 't', 'a'
                    });
                    bw.Write(wa_out.DataLength);


                    for (int i = 0; i < files.Length; i++)
                    {
                        if (i != 0)
                        {
                            using (MemoryStream ms = new MemoryStream(files[i]))
                            {
                                fs.Position -= 22816;
                                byte[] razem = new byte[ms.Length - 44];
                                ms.Position = 4410;

                                ms.Read(razem, 0, razem.Length - 4410);
                                bw.Write(razem);
                            }
                        }
                        else
                        {
                            using (MemoryStream ms = new MemoryStream(files[i]))
                            {
                                byte[] razem = new byte[ms.Length - 44];
                                ms.Position = 4410;

                                ms.Read(razem, 0, razem.Length - 4410);

                                bw.Write(razem);
                            }
                        }
                    }

                    koniec      = new byte[fs.Length];
                    fs.Position = 0;
                    fs.Read(koniec, 0, koniec.Length);

                    bw.Close();
                    fs.Close();
                }

                return(koniec);
            }
            catch (Exception)
            {
                throw new Exception("Błąd podczas łączenia dźwięku(Fony).");
            }
        }
Ejemplo n.º 2
0
        }//koniec metody Sprawdzenie

        public byte[] Noweslowo(string slowo)
        {
            _conn = new SqlConnection(@"Data Source=(localDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\BazaSlow.mdf;Initial Catalog=Bazaslow;Integrated Security=True");
            char[] znaki = new char[slowo.Length];

            znaki = slowo.ToCharArray();

            ListaGlosek      = new ArrayList();
            ListaGlosekBajty = new ArrayList();

            int i = 0;

            try
            {
                using (SqlCommand command = new SqlCommand("SELECT BLOB FROM Fony WHERE Fon = @FON", _conn))
                {
                    _conn.Open();

                    foreach (char znak in znaki)
                    {
                        command.Parameters.AddWithValue("@FON", znak);
                        SqlDataReader reader = command.ExecuteReader();

                        if (reader.HasRows)
                        {
                            while (reader.Read())
                            {
                                ListaGlosek.Add(znak.ToString());
                                ListaGlosekBajty.Add((byte[])reader["BLOB"]);
                            }
                        }

                        command.Parameters.Clear();
                        reader.Close();
                        i++;
                    }
                }
            }catch (Exception ex)
            {
                if (ex != null)
                {
                    throw ex;
                }
                else
                {
                    throw new Exception("Błąd podczas pobierania danych(Fony) z bazy");
                }
            }finally
            {
                _conn.Close();
            }

            WaveIOFony polaczenie = new WaveIOFony();

            DoSprawdzeniaDwuznakow = SprawdzenieDwuznakow();

            Normalizacja normalizuj = new Normalizacja(polaczenie.Merge(DoSprawdzeniaDwuznakow));

            normalizuj.HeadOut();
            razem = normalizuj.Zrob();

            return(razem);
        }//koniec metory Noweslowo