|
19.09.2010, 05:37
|
#1
|
Оператор ЭВМ
Регистрация: 27.01.2009
Сообщений: 21
Написано 2 полезных сообщений (для 2 пользователей)
|
Работа с wave
Давно хотелось зделать что-либо с wave, но было "лень"
И вот свершилось, начал разработку синтезатора (аналового типа), который выдает результат пока в 8 бит и 8 кГц. Может, уже есть подобные проэкты? Иль мнения по этому поводу?
+семплы ударных, воспроизводится (должен)
Последний раз редактировалось Olaola, 22.09.2010 в 00:22.
Причина: Новая версия
|
(Offline)
|
|
19.09.2010, 05:54
|
#2
|
Оператор ЭВМ
Регистрация: 27.01.2009
Сообщений: 21
Написано 2 полезных сообщений (для 2 пользователей)
|
Ответ: Работа с wave
Хотите верте хотите нет, но немогу в инете найти нормальное описание amr формата который записывается через диктофон.
очень охота, хоть на англ.
|
(Offline)
|
|
19.09.2010, 12:32
|
#3
|
Бывалый
Регистрация: 18.08.2009
Сообщений: 745
Написано 146 полезных сообщений (для 215 пользователей)
|
Ответ: Работа с wave
начал разработку синтезатора (АНАЛОВОГО типа)
|
круто! аналовый синтезатор!!!
а насчет формата - бери wav и не порть себе мозг =)
|
(Offline)
|
|
19.09.2010, 14:12
|
#4
|
Легенда
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений (для 5,072 пользователей)
|
Ответ: Работа с wave
А что за jsr75sie? У меня просто на сенсоре кнопки через одно место сделаны хочу перекомпилить с другими и дудки. Идея клевая).
__________________
Ибо как сказал Бгдн:
|
(Offline)
|
|
19.09.2010, 15:09
|
#5
|
Оператор ЭВМ
Регистрация: 27.01.2009
Сообщений: 21
Написано 2 полезных сообщений (для 2 пользователей)
|
Ответ: Работа с wave
удали эту библиотеку (jsr75sie - нужна для сименса, для сохранения в файловую систему wave - файла), а мою библиотеку вытащи из jar, и кинь в папку с библиотеками
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
19.09.2010, 15:15
|
#6
|
Оператор ЭВМ
Регистрация: 27.01.2009
Сообщений: 21
Написано 2 полезных сообщений (для 2 пользователей)
|
Ответ: Работа с wave
Сообщение от cherepets
круто! аналовый синтезатор!!!
а насчет формата - бери wav и не порть себе мозг =)
|
мне просто охота обработать звук с диктафона, для этого нужно написать конвертер, на j2me - пока нереализовано.
!!!!
У кого есть подобные проэкты?
П.С. волна, в данном проэкте только триугольная(просто реализовать), также присутствует переменная лимит (эффект дисторшн).
|
(Offline)
|
|
19.09.2010, 17:44
|
#7
|
Легенда
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений (для 5,072 пользователей)
|
Ответ: Работа с wave
На Nokia 5530 не работает. Не помогла перестановка кнопок . Попробую еще несколько вариантов может запустится.
З.Ы. А эта штука в реальном времени синтезирует? Или синтезирует, сохраняет и воспроизводит?
__________________
Ибо как сказал Бгдн:
|
(Offline)
|
|
21.09.2010, 16:19
|
#8
|
Знающий
Регистрация: 16.09.2008
Сообщений: 299
Написано 71 полезных сообщений (для 123 пользователей)
|
Ответ: Работа с 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.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
22.09.2010, 00:20
|
#9
|
Оператор ЭВМ
Регистрация: 27.01.2009
Сообщений: 21
Написано 2 полезных сообщений (для 2 пользователей)
|
Ответ: Работа с wave
Ты угадал, то что я задумал.. (теперь +семплы ударных)
Смешивать wave легко даже 16-ти битные,
(по правилу newSoundMix:=Sound1*0.5+Sound2*0.5);
В этой версии реализовано. Интерфейс пока нет смысла делать, т.к. программа еще не выполняет того, что запланировано
П.С.
abcdef, спасибо, но у меня старая версия MP (есть ли смысл скачивать новую? программы написаные на старой будут работать?)
когда разбирусь с 8-ми битным звуком, может возьмусь за 16-ти битный
|
(Offline)
|
|
22.09.2010, 13:54
|
#10
|
Знающий
Регистрация: 16.09.2008
Сообщений: 299
Написано 71 полезных сообщений (для 123 пользователей)
|
Ответ: Работа с wave
Lib_snd компилированная в MPC011 (050810) и выше.
|
(Offline)
|
|
23.09.2010, 00:50
|
#11
|
Оператор ЭВМ
Регистрация: 27.01.2009
Сообщений: 21
Написано 2 полезных сообщений (для 2 пользователей)
|
Ответ: Работа с wave
Сообщение от abcdef
Lib_snd компилированная в MPC011 (050810) и выше.
|
А чем эта библиотека лучше той, которую я написал?
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 16:15.
|