חיפוש
  • יניב אור

תיבת נגינה - Multizamor

עודכן ב: 18 דצמ 2019

ב-2004 כתבתי תוכנה ב-Action Script (נראה לי 2) ל-flash, שמלחינה מנגינות לפי פרמטרים שהיא מקבלת. על המסך הוצגה מקלדת פסנתר, למשתמש היו מספר פרמטרים אותם היה יכול לשנות בלייב תוך כדי שהמנגינה נוצרת באופן רנדומלי בשילוב עם הפרמטרים הללו.


הפרמטרים היו:

- סולם

- מפתח

- טמפו

- היה slider מתחת למקלדת ואיתו היה אפשר לקבוע את הטווח הפעיל של המקלדת

- לכל קליד היה ניתן לקבוע אם הוא פעיל או לא בנפרד

- דבר אחרון ואולי החשוב ביותר, ניתן היה לקבוע מה הסיכוי של צליל להתנגן ברגע מסויים. כך המוסיקה נשמעה הרבה יותר טבעית.


אני אבנה שוב תיבת נגינה כזאת, ללא GUI. המטרה שלי תהיה להתחבר למקלדת הזאת עם מיקרו-קונטרולרים, כפתורים, פוטנציומטרים, לדים וכולי. וכל זה יקרה על ה-RPi בשפת פייתון.

את הפיתוח עצמו אעשה על ה-RPi, משום שבסופו של דבר הוא זה שישמש כ-sound server ואני לא רוצה לפתח על הלפטופ ולגלות אחר כך ששום דבר לא זז על ה-RPi.


אחפש קוד מוכן שמייצר צלילים באוקטבות שונות ואת שאר הפונקציונליות אכתוב בעצמי. נחסוך זמן. כאמור, יש לי מיליון פרויקטים.


ביום יום, אני כותב בעיקר ב-Javascript. פייתון, פעם בכמה זמן, סקריפטים פשוטים. פחות מרגיש בבית. הזדמנות לכתוב משהו טיפה גדול יותר.


צפיתי בהרצאה הזאת של דרור איילון. יש שם דברים מאוד מעניינים:

https://www.youtube.com/watch?v=ROlkhVs15AM&t=133s


אנסה את FoxDot. זאת סביבת פיתוח אינטראקטיבית שעובדת מול שרת הסאונד העוצמתי SuperCollider שרץ ברקע. אם זה ישרת את המטרה המקורית שלי, יופי. אם לא, אפתח פרויקט נפרד ל-FoxDot + SuperCollider ובפוסט הזה אמשיך בכיוון של ספריית פייתון פשוטה יותר של פסנתר ואכתוב את כל הלוגיקה עם הפרמטרים שציינתי למעלה.


התחברתי ל-pi (Raspbian Stretch Lite, אגב) דרך ssh והתקנתי את FoxDot ולאחר מכן את SuperCollider (כרגע ללא sc3-plugins) לפי ההוראות כאן:

https://supercollider.github.io/development/building-raspberrypi

* הותקנו בנוסף המון תוכנות וספריות שקשורות לסאונד. jackd וכו'.

*

* הקימפול של ה-SC לקח כמה שעות, בניתי את הגירסה ללא GUI.


כדי להריץ את jackd ב-boot יצרתי קובץ חדש בשם:

התוכן שלו:

* לפני כן, הרצתי את הפקודה בטרמינל ווידאתי שהכל תקין.

* עשיתי ריסטרט וזה לא הופעל ה-boot. הפעלתי בינתיים ידנית.


לפני שאעבור ישירות ל-FoxDot, אני רוצה להכיר קצת את ה-SC.


הרצתי את scsynth בפורט UDP שבחרתי, 8080:

* עשיתי כמה ניסיונות להריץ sclang וכולי, לא הצליח. אני ממשיך הלאה בינתיים, התעכבתי מספיק על זה. אני מסיר את ההתקנות האחרונות פרט ל-Jackd. כאמור, הוא לא מאותחל ב-boot. אבדוק בהמשך.


עדכון, בהמשך היום:

הצלחתי להתקין את ה-SC על ה-PC והתחלתי לעבוד איתו. אפשר לראות בפוסט הזה.


אני צריך לקרוא בסבלנות איך עובדים איתו דרך ה-cli בלבד אז בעצם החלטתי להתקין מחדש. זה עבד טוב לדעתי, פשוט לא הצלחתי לחבר בין ה-sclang ל-scsynth שהרצתי בנפרד.


נעזרתי במדריך הזה:

https://swiki.hfbk-hamburg.de/MusicTechnology/635

אין צורך להריץ בנפרד את scsynth, הכל נעשה דרך המערכת האינטראקטיבית: sclang.

מבחינת הקבצים שהותקנו:

* ב-/usr/local/bin/ נמצאים קבצי הריצה

* ב-/usr/local/share/SuperCollider/ נמצאים קבצי סאונד, הרחבות וכולי.



***

אני לומד את ה-SuperCollider. הגעתי לתוצאה שנשמעת טוב מקוד קצר ולא מסובך. תוכנה מעולה ומהר מאוד אפשר ליצור מנגינות ויצירות שלמות. כרגע בדוגמא 3 (סולם מינור הרמוני).

אמשיך ללמוד ולהעמיק במנוע אודיו המטורף הזה ואעדכן בפוסט.


* במקביל (למיליון פרויקטים אחרים) - אמשיך את הפוסט הזה בהתממשקות ל-SuperCollider באמצעות כפתורים, קונטרולר וכו'.

* אני מזכיר שהפיתוח נעשה כרגע על הלפטופ שלי (לינוקס מנטה) אבל בסופו של דבר ה-RPi יהיה שרת האודיו, אז עוד משימה תהיה לחזור ל-RPi ולהריץ עליו את ה-SC.


עדכון 16-7-19

* אני מצליח להריץ קובץ של SuperCollider מה-cli.

* הצלחתי בנוסף להריץ את ה-CS מה-RPi והוא מנגן מקובץ - דרך ה-cli.


עדכון 20-7-19

* הצלחתי לשלוט על Pbind דרך OSC - ראה SuperCollider (שליטה על Pbind דרך OSC).

* הסברים מעמיקים יותר על כל התהליך ועל הקוד, בהמשך.


עדכון 18-12-19

לנס ת את ה-image:

https://hub.docker.com/r/orbsmiv/supercollider-rpi



עדכונים נוספים בהמשך...

© 2023 by DO IT YOURSELF. Proudly created with Wix.com