forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Проекты на MidletPascal (http://forum.boolean.name/forumdisplay.php?f=88)
-   -   Работа с wave (http://forum.boolean.name/showthread.php?t=13377)

Olaola 19.09.2010 05:37

Работа с wave
 
Вложений: 1
Давно хотелось зделать что-либо с wave, но было "лень" :-)

И вот свершилось, начал разработку синтезатора (аналового типа), который выдает результат пока в 8 бит и 8 кГц. Может, уже есть подобные проэкты? Иль мнения по этому поводу?

>O<

+семплы ударных, воспроизводится (должен)

Olaola 19.09.2010 05:54

Ответ: Работа с wave
 
Хотите верте хотите нет, но немогу в инете найти нормальное описание amr формата который записывается через диктофон. :''((

очень охота, хоть на англ.

cherepets 19.09.2010 12:32

Ответ: Работа с wave
 
Цитата:

начал разработку синтезатора (АНАЛОВОГО типа)
круто! аналовый синтезатор!!!
а насчет формата - бери wav и не порть себе мозг =)

Gector 19.09.2010 14:12

Ответ: Работа с wave
 
А что за jsr75sie? У меня просто на сенсоре кнопки через одно место сделаны хочу перекомпилить с другими и дудки.:( Идея клевая).

Olaola 19.09.2010 15:09

Ответ: Работа с wave
 
удали эту библиотеку (jsr75sie - нужна для сименса, для сохранения в файловую систему wave - файла), а мою библиотеку вытащи из jar, и кинь в папку с библиотеками

Olaola 19.09.2010 15:15

Ответ: Работа с wave
 
Цитата:

Сообщение от cherepets (Сообщение 162677)
круто! аналовый синтезатор!!!
а насчет формата - бери wav и не порть себе мозг =)

мне просто охота обработать звук с диктафона, для этого нужно написать конвертер, на j2me - пока нереализовано.


!!!!
У кого есть подобные проэкты?


П.С. волна, в данном проэкте только триугольная(просто реализовать), также присутствует переменная лимит (эффект дисторшн).

Gector 19.09.2010 17:44

Ответ: Работа с wave
 
На Nokia 5530 не работает. Не помогла перестановка кнопок:dontknow:. Попробую еще несколько вариантов может запустится.
З.Ы. А эта штука в реальном времени синтезирует? Или синтезирует, сохраняет и воспроизводит?

abcdef 21.09.2010 16:19

Ответ: Работа с wave
 
неплохая программка, хорошо б еще миксер сделать..
вот немного переработал:
(компилировать в последней версии MPC)
Код:

function openplayerfromstr(s, mimetype : string) : boolean;
begin
  inline(
  getstatic        field 'P', 'p', 'Ljavax/microedition/media/Player;';
  ifnull          :$0000;
  getstatic        field 'P', 'p', 'Ljavax/microedition/media/Player;';
  invokeinterface  interface 'javax/microedition/media/Player', 'close', '()V', $01, $00;
  :$0000;
  new              class 'java/io/ByteArrayInputStream';
  dup;
  aload_0;
  invokevirtual    method 'java/lang/String', 'getBytes', '()[B';
  invokenonvirtual method 'java/io/ByteArrayInputStream', '<init>', '([B)V';
  aload_1;
  invokestatic    method 'javax/microedition/media/Manager', 'createPlayer', '(Ljava/io/InputStream;Ljava/lang/String;)Ljavax/microedition/media/Player;';
  putstatic        field 'P', 'p', 'Ljavax/microedition/media/Player;';
  getstatic        field 'P', 'p', 'Ljavax/microedition/media/Player;';
  invokeinterface  interface 'javax/microedition/media/Player', 'realize', '()V', $01, $00;
  getstatic        field 'P', 'p', 'Ljavax/microedition/media/Player;';
  invokeinterface  interface 'javax/microedition/media/Player', 'prefetch', '()V', $01, $00;
  iconst_m1;
  ireturn;
  );{}
end;
(****)

var
  data : string;
  key : integer;

procedure sine(q4,time,lim,vol : integer);
const
  tone = 2;
var
  n,d : real;
  i : integer;
begin
  n := 127;
  d := (vol*tone)/q4;
  for i := (q4*tone)*(time+30) downto 0 do
  begin
    if n>(126+vol) then d :=-d
      else if n<(128-vol) then d :=-d;
    n := n+d;
    if (n>(128+vol-lim)) then data := data+chr(128+vol-lim)
      else if (n<(126-vol+lim)) then data := data+chr(126-vol+lim)
        else data := data+chr(trunc(n));
  end;
end;
 
function make(q4,time,lim,vol : integer) : string;
var
  i,len : integer;
begin
  data := '';
  for i:= vol downto vol-4 do sine(q4,time,lim,i{vol});
  {формируем хххх - размер для формата{}
  len := length(data);
  data := 'WAVEfmt '+chr(16)+chr(0)+chr(0)+chr(0)+
          chr(1)+chr(0)+                  {тип формата{}
          chr(1)+chr(0)+                  {число каналов(моно 1){}
          chr(64)+chr(31)+chr(0)+chr(0)+  {8000 Гц{}
          chr(64)+chr(31)+chr(0)+chr(0)+  {8000 байт в сек{}
          chr(1)+chr(0)+                  {1 бит...{}
          chr(8)+chr(0)+'data'+          {разрядность{}
          chr(len and $FF)+chr((len div $100) and $FF)+chr((len div $10000) and $FF)+chr((len div $1000000) and $FF)+data;
  {формируем хххх - размер для формата{}
  len := length(data);
  make := 'RIFF'+chr(len and $FF)+chr((len div $100) and $FF)+chr((len div $10000) and $FF)+chr((len div $1000000) and $FF)+data; 
end;
 
begin
  drawText('make Sound', 0, 0);
  drawText('press 1,2,3', 0, 16);
  repaint;
  repeat
    key := getKeyClicked;
    if key=KE_KEY1 then if (openplayerfromstr(make(15,50,0,80), 'audio/x-wav')) and setPlayerCount(1) and startPlayer then
    begin
      delay(10);
      stopPlayer;
    end;
    if key=KE_KEY2 then if (openplayerfromstr(make(30,50,0,80), 'audio/x-wav')) and setPlayerCount(1) and startPlayer then
    begin
      delay(10);
      stopPlayer;
    end;
    if key=KE_KEY3 then if (openplayerfromstr(make(3,50,0,80), 'audio/x-wav')) and setPlayerCount(1) and startPlayer then
    begin
      delay(10);
      stopPlayer;
    end;
  until false;
end.


Olaola 22.09.2010 00:20

Ответ: Работа с wave
 
Вложений: 1
Ты угадал, то что я задумал.. (теперь +семплы ударных)

Смешивать wave легко даже 16-ти битные,
(по правилу newSoundMix:=Sound1*0.5+Sound2*0.5);

В этой версии реализовано. Интерфейс пока нет смысла делать, т.к. программа еще не выполняет того, что запланировано

П.С.
abcdef, спасибо, но у меня старая версия MP (есть ли смысл скачивать новую? программы написаные на старой будут работать?)

когда разбирусь с 8-ми битным звуком, может возьмусь за 16-ти битный :russian:

abcdef 22.09.2010 13:54

Ответ: Работа с wave
 
Вложений: 1
Lib_snd компилированная в MPC011 (050810) и выше.

Olaola 23.09.2010 00:50

Ответ: Работа с wave
 
Цитата:

Сообщение от abcdef (Сообщение 162937)
Lib_snd компилированная в MPC011 (050810) и выше.

А чем эта библиотека лучше той, которую я написал?


Часовой пояс GMT +4, время: 09:26.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot