Orinj Структура на ефектите Пробване на ефектите

Orinj версия 9.0.0

Бележка: Тази страница не е за потребителите на Orinj, а за програмистите, които искат да създават ефекти за работа с цифрови сигнали за Orinj.

За сваляне

exampledelaytest.zip 3-ти юли, 2025 Кода и файла JAR за софтуера за пробване на ефекти (19 KB)

Този файл съдържа:

ExampleDelayTest

Този код може да се използва за да се пробват ефекти, които са създадени със структурата на ефектите в Orinj. Имитира начина, по който Orinj търси файлове JAR с ефекти, чете информация за ефектите в тези файлове JAR и създава ефектите и техните интерфейси. Този код позволява и да се изсвири един файл уейв с един от наличните ефекти.

Самият код може да се компилира със следното.

javac "ExampleDelayTest\src\com\recordingblogs\AudioBuffer.java" -d "ExampleDelayTest\class" -classpath "ExampleDelayTest\class;Orange\oreffect.jar"
javac "ExampleDelayTest\src\com\recordingblogs\Envelope.java" -d "ExampleDelayTest\class" -classpath "ExampleDelayTest\class;Orange\oreffect.jar"
javac "ExampleDelayTest\src\com\recordingblogs\WaveFile.java" -d "ExampleDelayTest\class" -classpath "ExampleDelayTest\class;Orange\oreffect.jar"
javac "ExampleDelayTest\src\com\recordingblogs\SelectDialog.java" -d "ExampleDelayTest\class" -classpath "ExampleDelayTest\class;Orange\oreffect.jar"
javac "ExampleDelayTest\src\com\recordingblogs\WaveFileDialog.java" -d "ExampleDelayTest\class" -classpath "ExampleDelayTest\class;Orange\oreffect.jar"
javac "ExampleDelayTest\src\com\recordingblogs\EffectStoreItem.java" -d "ExampleDelayTest\class" -classpath "ExampleDelayTest\class;Orange\oreffect.jar"
javac "ExampleDelayTest\src\com\recordingblogs\EffectStore.java" -d "ExampleDelayTest\class" -classpath "ExampleDelayTest\class;Orange\oreffect.jar"
javac "ExampleDelayTest\src\com\recordingblogs\Mixer.java" -d "ExampleDelayTest\class" -classpath "ExampleDelayTest\class;Orange\oreffect.jar"
javac "ExampleDelayTest\src\com\recordingblogs\EffectDialog.java" -d "ExampleDelayTest\class" -classpath "ExampleDelayTest\class;Orange\oreffect.jar"
javac "ExampleDelayTest\src\com\recordingblogs\MainFrame.java" -d "ExampleDelayTest\class" -classpath "ExampleDelayTest\class;Orange\oreffect.jar"
javac "ExampleDelayTest\src\com\recordingblogs\ExampleDelayTest.java" -d "ExampleDelayTest\class" -classpath "ExampleDelayTest\class;Orange\oreffect.jar"
jar cfm ExampleDelayTest\exampledelaytest.jar ExampleDelayTest\manifest.txt -C ExampleDelayTest\class .

Следното описва класовете в този код в азбучен ред.

AudioBuffer.java

Този клас е една проста поредица от байтове. Пази аудио данните, прочетени от файла уейв и изпратени към изходното аудио устройство. Тъй като този буфер няма винаги да е пълен (например при четенето на аудио данни от края на файла уейв), този клас пази информация и за броя на байтовете, които се четат и трябва да се използват по време на свиренето.

EffectDialog.java

Този клас удължава JDialog и обвива интерфейса за ефекта. Има две задачи.

  • Прозорецът се показва по време на свиренето за да можеш да променяш контролите на ефекта (ефектът Примерен дилей например започва със забавяне равно на нула и затихване от 100%, което не е много интересно).
  • Затварянето на прозореца ще накара свиренето да спре, така че да не трябва винаги да чуеш целия файл уейв.

Контролите за ефекта се съдържат в един JPanel (виж Orinj Структура на ефектите Примерен дилей DelayPanel Java). Този прозорец добавя този панел и един бутон Close (Затвори).

EffectStore.java

Това е една поредица от достъпните ефекти. Имитира начина, по-който Orinj следи ефектите.

EffectStoreItem.java

Това съдържа информация за един ефект, включително неговото име, вид и конструкторите за ефекта и неговия графичен интерфейс. Тези обекти се създават, когато ефектите се четат от наличните пакети JAR с ефекти.

ExampleDelayTest.java

Това е главната функция в този код. Тази функция прави следното.

  • Зарежда всички ефекти от наличните пакети с ефекти.
  • Показва ефектите на потребителя и позволява на потребителя да избере един ефект. Избраният ефект е този, който ще се използва по време на свиренето. Ако потребителя щракне на бутона Cancel (Откажи) когато избира ефект, този код ще спре.
  • Позволява на потребителя да избере един файл уейв за свирене. Ако потребителя щракне на бутона Cancel (Откажи) в прозореца когато избира файл уейв, този код ще спре.
  • Отваря избрания файл уейв и проверява дали е валиден файл уейв с подходящия формат. Забележи, че този код работи само с файлове уейв, които са PCM с код на компресиране 1 (виж Парче формат (на файл Wave)), с пробната честота 44100 Hz и с пробната резолюция 16 бита в една проба.
  • Създава един миксер. Миксерът прилага ефекта към данните с аудио във файла уейв и свири полученото аудио.
  • Създава ефекта и прозореца за ефекта и започва да свири.

MainFrame.java

Този клас зарежда достъпните ефекти. Прави следното.

  • Преглежда папката "effects" за файлове JAR.
  • Декомпресира файловете JAR и търси файла "effect.xml" във всеки файл JAR. Файлът effect.xml трябва да е най-отгоре във всеки пакет с ефекти JAR и трябва да съдържа информация за ефектите във съответния файл JAR (виж Orinj Структура на ефектите oreffect JAR).
  • Зарежда всички ефекти според информацията във файловете effect.xml и го слага в склада с ефекти (виж EffectStore.java и EffectStoreItem.java по-горе).

Mixer.java

Този клас прилага избрания ефект към избрания файл уейв и свири полученото аудио. Доста действия се извършват при подготвянето на свиренето в този клас, включително построяването на файла уейв към началото на своето парче с данни, пълненето на буфера за аудио с тишина, четенето на няколко буфери с аудио от файла уейв и изпращането на тези буфери към изходното устройство за аудио. Това означава, че самите буфери в изходното устройство за аудио ще се запълнят с доста аудио, което ще се свири докато миксера чета и изпраща допълнителни буфери.

Продължението на свиренето, след началната подготовка, е в отделен процес. Това е така, за да позволи на потребителя да промени контролите в прозореца за ефекта (виж EffectDialog.java по-горе) или да натисне бутона Close (Затвори) в прозореца за ефекта и да спре свиренето.

Миксерът третира ефекта като един обект от клас EffectInterface (виж Orinj Структура на ефектите oreffect JAR). Това означава, че миксерът ще може да използва само функциите на EffectInterface (тук, миксерът използва само "apply" и "allowsDryWetMix").

SelectDialog.java

Този прозорец просто показва имената на всички достъпни ефекти и позволява на потребителя да избере ефекта, който ще бъде приложен по време на свиренето.

WaveFile.java

Този клас осъществява един файл уейв. Файлът уейв е създаден като един RandomAccessFile, тъй като един файл уейв се състои от парчета, някои от които ще се пренебрегнат.

Това е едно просто осъществяване на файловете wave. Тъй като парчетата могат да са в други парчета, може да е по-добре е файла уейв да бъде един куп (stack) от парчета. За да направим този код по-прост, приемаме, че парчетата данни и формат във файла уейв са най-отгоре а не под някакво друго парче. Този код няма да може да се справи с всички файлове уейв.

Следното са данните в този клас.

  • m_datapointer – това е позицията на парчето данни във файла уейв (след името на парчето "data" и след четирите байта за размера на парчето). Пазим тази информация за да можем бързо да идем към данните с аудио във файла уейв и да започнем свиренето.
  • m_format – формата на файла уейв. В доста софтуери за аудио ни трябва бърз достъп до формата на вълната за да можем да я смесим правилно. Трябва например да знаем дали вълната съдържа един или два канала, така че да можем да приложим ефектите, които имат различни параметри за различните канали.

Следното са някои от функциите в този клас.

  • openRead() – тази функция проверява формата на файла (дали има правилната глава и парчета) и подготвя файла за свирене (като намира стойността на m_datapointer). Тъй като този код работи само със файлове уейв, които са PCM, 16 битови и с пробната честота 44100 Hz, тази функция проверява и за правилния код на компресиране, пробна резолюция и пробна честота.
  • startPlay() – тази функция премества четенето към началото на данните с аудио.
  • getData() – тази функция чете един буфер с данни с аудио.

WaveFileDialog.java

Този прозорец позволява на потребителя да избере един файл уейв за свирене.

Пробване на ефектите в Orinj и създаване на предопределени настройки

Можеш също така и да пробваш ефектите в Orinj. Сложи пакета JAR с твоите ефекти в папката "orange/effects" и стартирай Orinj. Orinj ще разпознае файла JAR автоматично, ще разпознае ефектите и ще създаде менюта, така че да можеш да използваше тези ефекти в пистите.

Виж също:
Orinj Структура на ефектите

Добави нов коментар

Filtered HTML

  • Freelinking helps you easily create HTML links. Links take the form of [[indicator:target|Title]]. By default (no indicator): Click to view a local node.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.
Image CAPTCHA
Enter the characters shown in the image.