Orca هي لغة برمجة مقصورة على فئة معينة ومحرر مباشر مصمم لإنشاء أجهزة تسلسل إجرائية بسرعة. كل حرف من الحروف الأبجدية عبارة عن عملية، ويتم تنفيذ الأحرف الصغيرة على *bang*
، ويتم تنفيذ الأحرف الكبيرة في كل إطار.
هذا هو تطبيق لغة C للغة ORCΛ وبيئة الترميز المباشر الطرفية. لقد تم تصميمه ليكون موفرًا للطاقة. يمكنه التعامل مع الملفات الكبيرة، حتى لو كانت المحطة الطرفية لديك صغيرة.
Orca ليس مركبًا، ولكنه بيئة ترميز حية مرنة قادرة على إرسال MIDI وOSC وUDP إلى واجهاتك الصوتية/المرئية مثل Ableton أو Renoise أو VCV Rack أو SuperCollider.
الريبو بوابة الرئيسية | مرآة جيثب |
---|---|
git.sr.ht/~rabbits/orca | github.com/hundredrabbits/Orca-c |
sudo apt-get install git libncurses5-dev libncursesw5-dev libportmidi-dev
git clone https://github.com/hundredrabbits/Orca-c.git
cd Orca-c
make # Compile orca
build/orca # Run orca
لاختيار جهاز إخراج MIDI، اضغط على F1
(أو Ctrl+D
) لفتح القائمة الرئيسية، ثم حدد MIDI Output...
┌ ORCA ───────────────┐┌ PortMidi Device Selection ─────┐
│ New ││ > (*) #0 - Midi Through Port-0 │
│ Open... ││ ( ) #2 - ES1371 │
│ Save │└────────────────────────────────┘
│ Save As... │
│ │
│ Set BPM... │
│ Set Grid Size... │
│ Auto-fit Grid │
│ │
│ OSC Output... │
│ > MIDI Output... │
│ │
│ Clock & Timing... │
│.....................│
المكتبة الأساسية: مترجم C99 (لا يتطلب VLAs)، بالإضافة إلى ما يكفي من libc لـ malloc
و realloc
و free
و memcpy
و memset
و memmove
. (أيضًا، يجب دعم #pragma once
.)
مترجم سطر الأوامر: ما سبق، بالإضافة إلى POSIX، وما يكفي من libc لعمليات السلسلة الشائعة ( strlen
، strcmp
، وما إلى ذلك)
واجهة مستخدم محطة الترميز المباشر: ما ورد أعلاه، بالإضافة إلى ncurses (أو مكتبة اللعنة المتوافقة)، ودعم الفاصلة العائمة (للتوقيت.) اختياريًا، يمكن استخدام PortMidi لتمكين إخراج MIDI المباشر.
تمت كتابة البرنامج النصي للبناء، الذي يسمى ببساطة tool
، بلغة POSIX sh
. يجب أن يعمل مع gcc
(بما في ذلك غلاف musl-gcc
)، و tcc
، و clang
، وسوف يكتشف المترجم الخاص بك تلقائيًا. يمكنك تحديد مترجم يدويًا باستخدام الخيار -c
.
من المعروف حاليًا أنه يعتمد على macOS ( gcc
و clang
و tcc
) و Linux ( gcc
و musl-gcc
و tcc
و clang
، اختياريًا مع LLD
)، وWindows عبر cygwin أو WSL ( gcc
أو clang
و tcc
غير مُختبر).
يوجد غلاف make
"إطلاق النار والنسيان" حول البرنامج النصي للإنشاء.
PortMidi هي تبعية اختيارية. يمكن تمكينه عن طريق إضافة الخيار --portmidi
عند تشغيل البرنامج النصي لبناء tool
.
يمكن تعطيل التعرف على الماوس عن طريق إضافة خيار --no-mouse
.
tool
قم بتشغيل ./tool help
لرؤية معلومات الاستخدام. أمثلة:
./tool build -c clang-7 --portmidi orca
# Build the livecoding environment with a compiler
# named clang-7, with optimizations enabled, and
# with PortMidi enabled for MIDI output.
# Binary placed at build/orca
./tool build -d orca
# Debug build of the livecoding environment.
# Binary placed at build/debug/orca
./tool build -d cli
# Debug build of the headless CLI interpreter.
# Binary placed at build/debug/cli
./tool clean
# Same as make clean. Removes build/
make
make release # optimized build, binary placed at build/orca
make debug # debugging build, binary placed at build/debug/orca
make clean # removes build/
سيقوم غلاف make
بتمكين --portmidi
افتراضيًا. إذا قمت بتشغيل البرنامج النصي لبناء tool
من تلقاء نفسه، فلن يتم تمكين --portmidi
افتراضيًا.
orca
Livecoding Usage: orca [options] [file]
General options:
--undo-limit <number> Set the maximum number of undo steps.
If you plan to work with large files,
set this to a low number.
Default: 100
--initial-size <nxn> When creating a new grid file, use these
starting dimensions.
--bpm <number> Set the tempo (beats per minute).
Default: 120
--seed <number> Set the seed for the random function.
Default: 1
-h or --help Print this message and exit.
OSC/MIDI options:
--strict-timing
Reduce the timing jitter of outgoing MIDI and OSC messages.
Uses more CPU time.
--osc-midi-bidule <path>
Set MIDI to be sent via OSC formatted for Plogue Bidule.
The path argument is the path of the Plogue OSC MIDI device.
Example: /OSC_MIDI_0/MIDI
orca
للترميز المباشر وتشغيلها باستخدام مخرجات MIDI $ ./tool build --portmidi orca # compile orca using build script
$ build/orca # run orca
orca
Livecoding ┌ Controls ───────────────────────────────────────────┐
│ Ctrl+Q Quit │
│ Arrow Keys Move Cursor │
│ Ctrl+D or F1 Open Main Menu │
│ 0-9, A-Z, a-z, Insert Character │
│ ! : % / = # * │
│ Spacebar Play/Pause │
│ Ctrl+Z or Ctrl+U Undo │
│ Ctrl+X Cut │
│ Ctrl+C Copy │
│ Ctrl+V Paste │
│ Ctrl+S Save │
│ Ctrl+F Frame Step Forward │
│ Ctrl+R Reset Frame Number │
│ Ctrl+I or Insert Append/Overwrite Mode │
│ ' (quote) Rectangle Selection Mode │
│ Shift+Arrow Keys Adjust Rectangle Selection │
│ Alt+Arrow Keys Slide Selection │
│ ` (grave) or ~ Slide Selection Mode │
│ Escape Return to Normal Mode or Deselect │
│ ( ) _ + [ ] { } Adjust Grid Size and Rulers │
│ < and > Adjust BPM │
│ ? Controls (this message) │
└─────────────────────────────────────────────────────┘
cli
مترجم واجهة سطر الأوامر يقرأ CLI ( cli
ثنائي) من ملف ويقوم بتشغيل محاكاة orca لخطوة زمنية واحدة (افتراضي) أو رقم محدد (خيار -t
) ويكتب الحالة الناتجة للشبكة إلى stdout.
cli [-t timesteps] infile
يمكنك أيضًا قراءة cli
من stdin:
echo -e " ...na34n... " | cli /dev/stdin