本記事は JUCE Advent Calendar 2017 の12月24日向けに投稿した記事です。
前回の記事に引き続き、ADC 2017の講演プログラムをひたすら紹介していきます。
Keynote
Keynote: The human in the musical loop
Music we hear is most often made by humans, directly or indirectly, for consumption by humans. In a series of anecdotes, we consider the imagination and sensory constraints of the human mind when creating and apprehending music. From the architecting of large-scale forms and structures in human-computer improvisation to the limits of ensemble interaction in distributed immersive performance, experiments reveal the workings of the musician’s mind in motion. The art of crafting musical experiences has been described as the choreography of expectation. Evidence of this work is made visual in expectation violations that generate musical humour, time delays that heighten anticipation, and tension modulations that create narrative interest. Finally, together with the modulation of tension, we examine how and if repetition structure imbues coherence in computer composition.
Elaine Chew, Professor of Digital Media, Queen Mary University of London
Track 1
The new C++17, and why it is good for you
Timur Doumler, Senior Software Developer, JetBrains
新しいC++17標準は既に普及しており、一般的なC++コンパイラによる優れたサポートを受けています。
この講演では、新しいC++標準について解説するとともに、C++17に切り替えることでオーディオ開発者が日々のプログラミングでより速く、より良いコードを書くのに役立つ例を紹介します。
Back to the future. On hardware emulations and beyond
Steinunn Arnardottir, Head of Software Development & Collaborations, Native Instruments
数十年前、音楽を録音して処理するためには、大型で高価なスタジオを利用することが不可欠でした。コンピュータ、DAW、高品質なプラグインとソフトウェアツールの普及により、プロデューサーは、リビングルームのラップトップでスタジオと同じ作業を行うことができます。
デジタル技術の到来に伴い、アナログハードウェアの骨董品や技術的制限を避けることができるようになりました。しかし、より安価なデジタル技術が到来してコンピュータが主流になって以来、サウンドエンジニアは古いスタジオ機器の動作をエミュレートするようになりました。
この講演では、アナログハードウェアの精神をソフトウェアに取り込む技術や課題をカバーし、さらにこれらのデバイスで求められていることとその理由についての答えについて述べます。
Panel: Music making on mobile
Moderator: Matthias Krebs, Appmusik
Panellists: Jeannie Yang, Product Leader & Innovator, Smule
Matt Derbyshire, Head of Product, Ampify (part of Focusrite/Novation)
Ashley Elsdon, Founder, Palmsounds & Journalist, Create Digital Media
Why and how to build a real-time collaborative musical application
Raphael Dinge, Head of Software Architecture, Ohm Force
リアルタイムなオンライン・コラボレーションは、ユーザー間のコミュニケーションを増やしたり、完璧なデバイスの連続性を確保したり、アプリの学習曲線を根本的に改善したりするのに重要な要素です。
Flipは、フル・コラボレートDAW、Ohm Studioから生まれた技術です。Flipは、音楽アプリケーションでリアルタイムなコラボレーションを可能にします。
Build a synth for Android
Don Turner, Senior Developer Advocate, Google
Androidでリアルタイムオーディオアプリケーションを作る際にこれまで課題となっていたレイテンシーを克服した新たなオーディオライブラリ『Oboe Library』について紹介します。この講演では、実際にOboe Libraryを用いたシンセサイザーをライブコーディングで実装し、段階的にレイテンシーを削減するAPIテクニックについて紹介します。
Track 2
Introduction to cross-platform voice applications for Amazon Alexa and Google Assistant
Jan König, Co-Founder, Jovo
2017年は音声アシスタント技術が注目されました。英国でのAmazon AlexaとGoogle Assistantの立ち上げは、開発者が新興市場向けに構築することの大きな可能性を見出しました。
この講演では、JanKönigがトピックを紹介し、音声アプリケーション(AlexaスキルとGoogleアクションと呼ばれる)の開発に関する実践的なアドバイスを行います。
Machine Learning & Embodied Interface: latest developments to the RAPID-MIX API
Michael Zbyszyński, Research Associate, Dept of Computing, Goldsmiths, University of London
この講演では、RAPID-MIX APIの最新バージョンを紹介するとともに、新しいセンサー技術を統合するさまざまなソフトウェア要素をまとめたツールキットとJUCEライブラリを紹介します。
APIユーザーは、大量のセンサーデータを音楽やゲームに適したジェスチャー表現に変換する高度な機械学習、特徴点抽出、および信号処理アルゴリズムを利用することが出来ます。また、強力で軽量なオーディオライブラリは、複雑なサウンド合成に適したツールを提供します。
JUCE Clinic
Julian Storer, Principal Software Engineer, Tom Poole, Senior Software Engineer,
Fabian Renn-Giles, Lead Engineer, Ed Davies, Projucer Developer,
Lukasz Kozakiewicz, Senior Software Engineer, Noah Dayan, Software Engineer Intern
※非公開
BFDLAC: A fast lossless audio compression - An Update: ARM Port, Middle Out, and more...
SKoT McDonald, Lead Software Engineer & Head of Sound R&D, ROLI
BFDLACは、ファイルサイズの小型化の上に、SIMD命令を介して非常に優れたデコードスピードとなるように設計された、ロスレスオーディオ圧縮アルゴリズムです。また、その圧縮率はまるでモノラルサウンドのFLACに近い圧縮率を実現しています。
Test-driven development for audio plugins
Ryan Avery, Senior Engineer, Dolby Laboratories
オーディオプラグインの開発者として、「正しい」という単一の解決策を持たない問題に直面します。新しいオーディオエフェクトをコーディングする場合でも、バイクワッドフィルタを実装する場合でも、コードが正しく実行されているかどうかを確認する唯一の方法は、「その音が正しいように聞こえる」という場合のみです。
この講演では、オーディオプラグインとDSPを開発する際にテスト駆動開発の考え方が不可欠である理由について説明します。テスト駆動型の観点から考えると、コードの信頼性が向上し、さらに簡単に変更できるようになり、モジュール化して再利用可能なコードになります。これらの手法を実証するために、実際のC++やC言語の例を紹介し、これらの戦略を独自のコードベースにどのように適用できるかを考えていきます。
Track 3
Fifty shades of distortion
Ivan Cohen, Freelance Software Developer & Owner, Musical Entropy
「歪み」は、オーディオ分野でよく聞く言葉です。歴史的には、これは「非線形歪み」に関連しており、今日では、ハイゲイン・ギター・アンプ、「ファズ」と「オーバードライブ」ペダル、ダイナミック・コンプレッサーやエキサイターなどのオーディオ・エフェクトなどに用いられます。しかし、マルチチャンネル・オーディオストリームに関連する "空間歪み"を意味する、IIRフィルタの位相応答についても「歪み」と呼びます。歪みは、バイアス歪み、クロスオーバー、粒状、群遅延歪み、ビットクラッシュ、ヒステリシス、カオス、エイリアシング、周波数ワーピング、クリッピング、スルーレート、グリッチ、ピーク間クリッピングなどの異なる意味と起源を持つ多くの文脈が存在します。この講演では、約50種類の歪みを表現したサウンドを聴いてみます。これらの歪みアルゴリズムのいくつかから、いわゆる「アナログ的な暖かさ」の特徴を理解していきます。アナログモデリングのいくつかの基本的な原則を学び、未知の種類の歪みに基づいてオリジナルのオーディオエフェクトをコーディングする方法を学びます。
Sound and Signalling: A Whistle-stop tour
Daniel Jones, Chief Science Officer, Chirp
※非公開
The use of std::variant in realtime DSP
Ian Hobson, Application Developer & Software Engineer, Ableton
C++17では、型保証型の共用体クラスであるstd::variantを導入しています。std::variantの値は、可能な型の固定セットの1つを表し、C++の型システムは、正しいコードパスがアクティブな型に対して実行されることを保証します。
この講演では、DSPに焦点を当ててstd::variantを扱う際の長所と短所を解説します。std::variantは、明確に定義されたインターフェイスと最小限のメモリフットプリントを可能にしますが、実際の所どのように使えばよいでしょうか?リアルタイムで使用するには十分なパフォーマンスを備えているでしょうか?
Audio Effects 2.0: Rethinking the music production workflow
Brecht De Man, Researcher, Centre for Digital Music, QMUL
近年、より抽象的で直感的なインターフェイスを持つ製品が登場してきましたが、ミキシングワークフローのより根本的な再考については未だ行われていません。この講演では、クロスアダプティブ信号処理、セマンティックコントロール、および人工知能を用いた最先端の学術研究の例を挙げています。
Designing and implementing embedded synthesizer UIs with JUCE
Geert Bevin, Senior Software Engineer, Moog Music
JUCEは組み込み機器のUIを開発する際に理想的なプラットフォームです。Moogの開発陣から、Linuxディストリビューション上で動作するJUCEで設計したフロントエンドアプリケーションについて紹介します。
この講演では、メンテナンス可能なUIとUXの設計、コードとアプリケーションのアーキテクチャ、ユニットテストと機能テスト、効率的なメッセージ処理とディスパッチ処理、ドメイン固有インターフェイス、一貫性と正確性を促進するAPI、パッチストレージ、およびアプリケーション固有のスクリプティングについての話が含まれます。
Track 4
Present and future improvements to MIDI
Ben Supper, Technical Programme Manager, ROLI & Chair, MPE Working Group, MIDI Manufacturing Association,
Amos Gaynes, Product Design Engineer, Moog Music
Ben SupperがMIDIの歴史とこれまでの進化について解説するとともに、MPEワーキンググループとMIDI規格委員会のメンバーがディスカッションを繰り広げます。
※MPE=MIDI Polyphonic Expression.
Modeling and optimizing a distortion circuit
Matthieu Brucher, Lead Developer, Audio Toolkit
アナログ回路をモデリングするのは簡単な作業ではなく、高速化はより難しい作業です。この講演では、ディストーション
ペダル SD1 / TS9 / TubeScreamer の模式図から、アルゴリズムの変更から実装におけるチューニングなど、さまざまな技術によって改善されたモデルを導き出します。
ソースコード:
https://github.com/mbrucher/AudioTK
https://github.com/mbrucher/2017-ADC
Opening the Box - Whitebox Testing of Audio Software
Christof Mathies, Computer Scientist,
Nico Becherer, Senior Computer Scientist, Adobe Audio Team
オーディオソフトウェアの品質を確保するのは、常に課題と隣り合わせです。膨大な数の機能、入力信号とパラメータのさまざまな組み合わせによって、テストすべきシナリオの組合せが爆発的に増加してしまいます。自動テストが求められるという状況の中で、Adobeのオーディオチームは、Adobe Audition CCのさまざまな機能の品質を保証するための自動テストフレームワークを構築しました。
Reactive Extensions (Rx) in JUCE
Martin Finke, Freelance Software Developer
オーディオアプリケーションは常に非同期で更新処理が行われます。ユーザーはボタンを押したり、パラメータのオートメーションを掛けたり、MIDIノートを演奏したりします。アプリケーションの方は、そのGUIと出力されるオーディオを変更することによって反応を返します。
リアクティブエクステンション(Rx)は、あらゆる種類のイベントを処理するためのシンプルなコンセプトに基づいて、ネットワーク・リクエストからプラグイン・パラメータの変更のフローをエレガントな方法で実現します。
Assessing the suitability of audio code for real-time, low-latency embedded processing with (or without) Xenomai
Giulio Moro, PhD Student, Centre for Digital Music, QMUL
リアルタイムパフォーマンスに適したコードを作成するには、よく知られた推奨実装とベストプラクティスが必要です。これらを厳密に遵守することは必ずしも容易ではなく、特にデスクトップアプリケーションを開発する場合、要件を完全に満たすことなく「十分に良い」パフォーマンスを達成する他の手段が存在する場合があります。
ところが、組み込みデバイスの開発ではデスクトップの分野に比べると制限が厳しいため、リアルタイム処理におけるレイテンシーを短くするという要件を達成するために、「ベストプラクティス」は最早「必要不可欠」なものとなってしまいます。
Xenomai(リアルタイムカーネル)を用いながらデバッグを行うことで、プログラマはベストプラクティスを厳密に遵守し、組み込みデバイスにリアルタイムで低レイテンシなパフォーマンスを提供することができます。
「Xenomaiテスト」に合格したコードは、非Xenomai環境で再利用され、リアルタイムパフォーマンスが向上します。
Keynote
Keynote: How can physical play give people a stronger sense of human connection?
Phoenix Perry
物理的な遊びを通じて、人間の結びつきをより強くすることが出来るでしょうか? Phoenix Perryは、物理的なゲームやユーザーエクスペリエンスを作るクリエイターです。この講演では、人間同士と、人間と周囲の環境とを再び繋げるための瞑想の練習として、複数人で行うゲームを提案しています。